Java 在Tomcat服务器上使用JSTL标记库的问题

Java 在Tomcat服务器上使用JSTL标记库的问题,java,jsp,tomcat,Java,Jsp,Tomcat,这听起来可能是个奇怪的问题,但我无法在运行在Tomcat服务器上的J2EE应用程序中使用jstl标记库。这个web应用程序在GlassFish服务器上运行得非常好,但当我创建另一个项目并复制使用jstl标记的signup.jsp时,我发现了一个错误。我的PageController代码是 protected void processRequest(HttpServletRequest request, HttpServletResponse response) throw

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

美国的Javadoc

在将响应提交到服务器之前,应调用
forward
客户端(在刷新响应正文输出之前)。如果回答是 已提交,此方法将抛出 非法国家例外响应缓冲区中未提交的输出为 在转发之前自动清除。

因此,这样做是有道理的

out.println("ai");

没有印刷。但这似乎与标记库没有任何关系。此外,该规范没有说明标签库参与了
RequestDispatcher
,因此这可能只是一种特定于供应商的行为。

很抱歉,未能及时发布此问题的答案


Glassfish附带了运行JSTL标记所需的所有库,但对于Apache,您需要下载这些库。我在internet上找到了可以下载所有必要文件的文件。

如果我删除jstl代码,这是什么意思?@JigarJoshi它的意思是当我删除使用jstl代码的行时,我的应用程序运行良好这些行是什么?@JigarJoshi