[英]How to chain JSP response to Servlet request
我遇到的情况是必须生成大量HTML,然后将其作为字符串JSONP样式返回。 因此,最终的HTTP响应实际上将是如下所示的javascript文本:
myglobaljavascriptcallbackfunction('
<HTML here> ');
由于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());
}
如果要在JSP中包括 Servlet响应,请使用<jsp:include>
。
如果要在Servlet中包含 JSP响应,请使用RequestDispatcher#include()
。 这就是你想要的。 但是,您只需要更改XHR请求URL即可指向Servlet而不是JSP。
注意: getBytes()
调用存在潜在的字符编码问题,该调用隐式使用平台默认字符编码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.