我有一个JavaScript,我正在从中对JSP进行Ajax调用。 JavaScript和JSP都部署在同一个Web服务器中。从JSP我使用HttpURLConnection将请求转发到其他Web服务器中可用的服务(servlet)之一。我在JSP中得到了响应,但是现在我需要将响应传递回做出Ajax调用的JavaScript。我怎么能这样做?
我的最终目标是从JavaScript到JSP以及从JSP到其中一个服务发出Ajax请求,并将响应返回给JavaScript。
答案 0 :(得分:1)
JSP是作业的wrong tool。输出将被模板文本损坏。用Servlet替换它。您只需要将URLConnection#getInputStream()
流式传输到HttpServletResponse#getOutputStream()
通常的Java IO方式。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
URLConnection connection = new URL("http://other.service.com").openConnection();
// Set necessary connection headers, parameters, etc here.
InputStream input = connection.getInputStream();
OutputStream output = response.getOutputStream();
// Set necessary response headers (content type, character encoding, etc) here.
byte[] buffer = new byte[10240];
for (int length = 0; (length = input.read(buffer)) > 0;) {
output.write(buffer, 0, length);
}
}
这就是全部。在web.xml
中将此servlet映射到某个url-pattern
,并让您的ajax函数调用该servlet URL。