这可能听起来像一个奇怪的问题,但我无法在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服务器中运行?
提前谢谢。
答案 0 :(得分:0)
RequestDispatcher#forward(..)
州的Javadoc
应该在响应提交之前调用
forward
客户端(在刷新响应正文输出之前)。如果回应 已经提交,这个方法抛出了 IllegalStateException异常。 响应缓冲区中未提交的输出是 在前锋之前自动清除。
因此有意义
out.println("ai");
未打印。但似乎与标签库没有任何关系。此外,该规范没有说明RequestDispatcher
中标记库的参与情况,因此它可能只是特定于供应商的行为。
答案 1 :(得分:0)
很抱歉发布这个问题的答案迟到了。
Glassfish附带运行JSTL标记所需的所有库,但对于Apache,您需要下载这些库。我在互联网上找到this link,您可以从中下载所有必要的文件。