gpt4 book ai didi

java - 如何将 JSP 响应链接到 Servlet 请求

转载 作者:行者123 更新时间:2023-11-29 06:18:54 25 4
gpt4 key购买 nike

我有一种情况,我必须生成大量 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>

小服务程序

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:include> 如果您想在 JSP 中包含 Servlet 响应。

使用 RequestDispatcher#include() 如果您想在 Servlet 中包含 JSP 响应。这就是你想要的。但是,您应该只需要更改 XHR 请求 URL 以指向 Servlet 而不是 JSP。


注意:getBytes() 可能存在字符编码问题隐式使用平台默认字符编码的调用。

关于java - 如何将 JSP 响应链接到 Servlet 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4011007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com