繁体   English   中英

如何链接JSP对Servlet请求的响应

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM