【发布时间】:2011-04-29 23:42:24
【问题描述】:
我有一种情况,我必须生成大量 HTML,然后将其作为字符串 JSONP 样式返回。所以最终的 HTTP 响应实际上是这样的 javascript 文本:
myglobaljavascriptcallbackfunction('');
由于 HTML 很复杂,构建它的唯一合理方法是使用 JSP。所以我想做的是获取 JSP 的 HTML 输出并将其通过管道传送到一个 servlet,然后该 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());
}
【问题讨论】: