URL重写


总结以下: java

1. 自定义的PermissionURLFilter 的 filter-mapping 中必须配置(这个配置是决定性的,若是不配置确定获取不到)web

      <dispatcher>REQUEST</dispatcher> 和 <dispatcher>FORWARD</dispatcher> app

2. 自定义Filter的 filter-mapping 必须配置在 urlrewrite Filter 的 filter-mapping 以后,若是配置在以前,会多拦截一次不是咱们想要的URI,以下: jsp

     a. 配置在以前,打印System.out.println( request.getRequestURI +" # "+ request.getAttribute("javax.servlet.forward.request_uri") ); 结果以下(拦截了2次,第一次不是我想要的结果,第2个才是):  url

       /testurlrewrite/user/20_e11a9de23afd9 # null spa

    /testurlrewrite/user/user.jsp  # /testurlrewrite/user/20_e11a9de23afd9 code

    b.配置在以后,打印以下(只拦截一次,并且是我想要的结果): xml

       /testurlrewrite/user/user.jsp  # /testurlrewrite/user/20_e11a9de23afd9 get

3. 新的web.xml的配置以下: servlet

<!-- 这里配置的是 urlrewrite的 Filter  org.tuckey.web.filters.urlrewrite.UrlRewriteFilter  -->  
<filter>  
    <filter-name>URLRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>  
<filter-mapping>
     <filter-name>URLRewriteFilter</filter-name>
     <url-pattern>/*</url-pattern>
</filter-mapping>

<!-- 配置自定义的Filter  -->  
<filter>  
     <filter-name>PermissionFilter</filter-name>  
     <filter-class>com.my.filters.PermissionURLFilter</filter-class>  
</filter>  
<!-- 自定义的 filter-mapping 要在 URLRewrite 的filter-mapping 以后 -->
<filter-mapping>  
    <filter-name>PermissionFilter</filter-name>  
    <url-pattern>/*</url-pattern>  
    <!-- ***** 下面必需要配置 *****  -->
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>
相关文章
相关标签/搜索