我有一种情况,必须生成大量HTML,然后将其作为字符串JSONP样式返回。所以,最终的HTTP响应实际上是JavaScript的文字是这样的:如何将JSP响应链接到Servlet请求
myglobaljavascriptcallbackfunction('
< HTML这里> ');
由于HTML是复杂的,唯一明智的方法来构建它是一个JSP。所以我想要做的就是获取JSP的HTML输出并将其传递给一个servlet,然后使用必要的javascript来包装HTML。
以下是我目前为止的最佳猜测。没有运气 - 来自Servlet的HTTP响应是myglobaljavascriptcallbackfunction('');
,没有任何JSP的HTML。
JSP
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<jsp:forward page="/MyServlet" />
<div>
<span>Imagine some really complicated stuff here</span>
<div>
的Servlet
protected void doGet(...) {
String pre = "myglobaljavascriptcallbackfunction('";
String post = "');";
OutputStream out = response.getOutputStream();
out.write(pre.getBytes());
// transfer request to response
InputStream in = request.getInputStream();
byte[] buf = new byte[1024];
int count = 0;
while ((count = in.read(buf)) > 0) {
out.write(buf, 0, count);
// TODO: escape single quote chars
}
out.write(post.getBytes());
}
这更接近,但它立即将HTML转储到ServletResponse。我需要能够处理JSP的输出之前,它被写入到响应删除空白和转义某些字符,因为HTML将被放入一个JavaScript字符串(顺便说一句,我在这里使用JSONP而不是XHR) – Lightbeard 2010-10-25 00:56:32
在Servlet中使用带有空白三元素或者File或URLConnection的'Filter'来在本地打开JSP。阅读“XHR”作为“客户”。请求源实际上并不重要。我只是期待JS/ajax(XHR)。 – BalusC 2010-10-25 01:05:28