可以jsp:包含页面通过过滤器

时间:2011-06-13 12:53:13

标签: jsp servlets servlet-filters jspinclude

我有一个jsp页面,其中包含一个jsp页面,通过jsp:include。 现在问题是包含jsp的请求是否通过过滤器? 以下是我在web.xml中的过滤器映射

    <filter-mapping>
    <filter-name>XYZFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>INCLUDE</dispatcher>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>

但这似乎不起作用。不会为包含的jsp调用过滤器。 我做错了什么或者根本不可能?

2 个答案:

答案 0 :(得分:2)

Servlet 2.4中引入了<dispatcher>支持。因此,当它不起作用时,它可能意味着您在一个过时的Servlet 2.3容器(例如Tomcat 5.0)上运行您的webapp,或者您的web.xml被声明为Servlet 2.3 DTD或没有特定于版本的声明,它会强制容器回退到最低兼容性模式。

请确保声明web.xml符合目标运行时支持的最大Servlet API版本。当您的目标运行时是例如Tomcat 6.0(Servlet 2.5容器)时,您应该声明web.xml符合Servlet 2.5:

<?xml version="1.0" encoding="UTF-8"?>
<web-app 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">

    <!-- Your config here -->
</web-app>

答案 1 :(得分:0)

这应该有效。您的过滤器映射中的<dispatcher>INCLUDE</dispatcher>表示还包括包含调度的过滤器。

调试代码,在其他地方出错。