我有一个JavaScript,可以通过它对JSP进行Ajax调用。JavaScript和JSP都部署在同一Web服务器中。从JSP,我正在使用HttpURLConnection将请求转发到其他Web服务器中可用的服务(servlet)之一。我在JSP中得到了响应,但是现在我需要将响应传递回JavaScript,该JavaScript发出了Ajax调用。我该怎么办?
我的最终目标是从JavaScript向JSP以及从该JSP向服务之一发出Ajax请求,并将响应返回给JavaScript。
JSP是这项工作的错误工具。输出将被模板文本损坏。用Servlet替换它。您只需要流式传输URLConnection#getInputStream()到HttpServletResponse#getOutputStream()通常的Java IO方式。
URLConnection#getInputStream()
HttpServletResponse#getOutputStream()
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); } }
就这样。将此servlet映射web.xml到某个对象,url-pattern然后让您的ajax东西调用该servlet URL。
web.xml
url-pattern