这听起来像是一个奇怪的问题,但是我无法在Tomcat服务器上运行的J2EE应用程序中使用jstl标记库。这个相同的Web应用程序在GlassFish服务器上运行得很好,但是当我创建另一个项目并复制使用jstl标记的signup.jsp
时,出现了错误。我的PageController
代码是,
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("ai");
try {
request.getRequestDispatcher("pages/signup.jsp").forward(request, response);
} finally {
out.println("af");
out.close();
}
}
在此仅打印“ af”,而不打印“ ai”。现在,如果我从
signup.jsp
中删除jstl代码,则该代码将运行良好。现在我的问题是我是否必须添加任何其他文件才能使jstl文件在tomcat服务器中工作?提前致谢。
最佳答案
RequestDispatcher#forward(..)
状态的Javadoc
在响应已提交给forward
之前,应先调用RequestDispatcher
客户端(在刷新响应主体输出之前)。如果回应
已经提交,此方法将引发
IllegalStateException。响应缓冲区中未提交的输出是
转发前自动清除。
因此,有道理的是
out.println("ai");
不打印。但是标签库似乎没有任何关系。另外,该规范没有说明有关中的标签库的任何内容,因此它可能只是特定于供应商的行为。
关于java - 在Tomcat服务器上使用JSTL标签库的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23158855/