JSP使用过滤器写入响应

时间:2014-10-19 11:37:09

标签: java jsp servlets web-deployment

我想通过修改响应来为每个页面包含jQuery库。这是:

这是在过滤器中:

   PrintWriter out = response.getWriter();
   out.println("<head><script src=\"http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.1.min.js\"></script></head>");
   chain.doFilter(request, response);

它工作得很好,但是当我想用servlet写一些其他东西时,会出现以下错误:

java.lang.IllegalStateException: getWriter() has already been called for this response

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

将html代码放入文件并使用servlet调度程序方法包含该文件。在javax.servlet.RequestDispatcher#include(javax.servlet.ServletRequest, javax.servlet.ServletResponse)

中查看更多相关信息

<强> included.html

<head><script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.1.min.js"></script></head>

过滤代码:

request.getRequestDispatcher("included.html").include(request, respose);
chain.doFilter(request, response);

答案 1 :(得分:0)

在Web应用程序中编写响应时,您可以使用response.getWriter()response.getOutputStream(),但不能同时使用两者。所以你应该:

  • 在servlet中使用response.getWriter()
  • 或在过滤器中使用response.getOutputStream()