使用JSTL标记库与Tomcat服务器的问题

时间:2014-04-18 17:15:30

标签: java jsp tomcat

这可能听起来像一个奇怪的问题,但我无法在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服务器中运行? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

RequestDispatcher#forward(..)州的Javadoc

  应该在响应提交之前调用

forward   客户端(在刷新响应正文输出之前)。如果回应   已经提交,这个方法抛出了   IllegalStateException异常。 响应缓冲区中未提交的输出是   在前锋之前自动清除。

因此有意义

out.println("ai");

未打印。但似乎与标签库没有任何关系。此外,该规范没有说明RequestDispatcher中标记库的参与情况,因此它可能只是特定于供应商的行为。

答案 1 :(得分:0)

很抱歉发布这个问题的答案迟到了。

Glassfish附带运行JSTL标记所需的所有库,但对于Apache,您需要下载这些库。我在互联网上找到this link,您可以从中下载所有必要的文件。