`
Sphinx_yong
  • 浏览: 332789 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

filter(二) filter中<url-pattern>的匹配规则(转)

阅读更多
下面的代码摘自tomcat源码,用来匹配<filter-mapping>中的<url-pattern>,相信比文字更容易理解:
java 代码
 
  1. /** 
  2.      * Return <code>true</code> if the context-relative request path 
  3.      * matches the requirements of the specified filter mapping; 
  4.      * otherwise, return <code>null</code>. 
  5.      * 
  6.      * @param filterMap Filter mapping being checked 
  7.      * @param requestPath Context-relative request path of this request 
  8.      */  
  9.     private boolean matchFiltersURL(FilterMap filterMap, String requestPath) {  
  10.   
  11.         if (requestPath == null)  
  12.             return (false);  
  13.   
  14.         // Match on context relative request path  
  15.         String testPath = filterMap.getURLPattern();  
  16.         if (testPath == null)  
  17.             return (false);  
  18.   
  19.         // Case 1 - Exact Match  
  20.         if (testPath.equals(requestPath))  
  21.             return (true);  
  22.   
  23.         // Case 2 - Path Match ("/.../*")  
  24.         if (testPath.equals("/*"))  
  25.             return (true);  
  26.         if (testPath.endsWith("/*")) {  
  27.             if (testPath.regionMatches(0, requestPath, 0,   
  28.                                        testPath.length() - 2)) {  
  29.                 if (requestPath.length() == (testPath.length() - 2)) {  
  30.                     return (true);  
  31.                 } else if ('/' == requestPath.charAt(testPath.length() - 2)) {  
  32.                     return (true);  
  33.                 }  
  34.             }  
  35.             return (false);  
  36.         }  
  37.   
  38.         // Case 3 - Extension Match  
  39.         if (testPath.startsWith("*.")) {  
  40.             int slash = requestPath.lastIndexOf('/');  
  41.             int period = requestPath.lastIndexOf('.');  
  42.             if ((slash >= 0) && (period > slash)   
  43.                 && (period != requestPath.length() - 1)  
  44.                 && ((requestPath.length() - period)   
  45.                     == (testPath.length() - 1))) {  
  46.                 return (testPath.regionMatches(2, requestPath, period + 1,  
  47.                                                testPath.length() - 2));  
  48.             }  
  49.         }  
  50.   
  51.         // Case 4 - "Default" Match  
  52.         return (false); // NOTE - Not relevant for selecting filters  
  53.   
  54.     }  
分享到:
评论

相关推荐

    servlet的url-pattern匹配规则详细描述(小结)

    Servlet的URL-Pattern匹配规则是Web应用程序中Servlet和Filter配置的核心部分,它决定了Servlet或Filter如何响应特定的HTTP请求。以下是对这些匹配规则的详细解释: 1. **精确匹配** - 在`&lt;url-pattern&gt;`中指定的...

    weblogic 11G 虚拟目录映射weblogic.xml配置

    &lt;wls:url-pattern&gt;logical-path/*&lt;/wls:url-pattern&gt; &lt;wls:physical-path&gt;filesystem/path&lt;/wls:physical-path&gt; &lt;/wls:virtual-directory-mapping&gt; ``` 在这里,`&lt;wls:url-pattern&gt;`定义了逻辑路径,`&lt;wls:...

    jsp servlet中的过滤器Filter配置总结

    当你想让一个Filter作用于应用中的所有资源时,你需要在`web.xml`配置文件中定义一个Filter,并设置`&lt;url-pattern&gt;`为`/*`。这样,任何通过HTTP请求访问的应用资源都会先经过这个Filter。例如: ```xml &lt;filter&gt;...

    xml里filter-mapping中的dispatcher的使

    如果使用`&lt;url-pattern&gt;`,则过滤器将应用于所有匹配该模式的URL;如果使用`&lt;servlet-name&gt;`,则过滤器仅应用于指定的Servlet。 - `&lt;dispatcher&gt;`:指定过滤器在哪些情况下被调用,这是本文的重点。 #### ...

    JavaWeb开发技术-Filter链.pptx

    在`web.xml`中,我们定义`&lt;filter&gt;`和`&lt;filter-mapping&gt;`元素来声明Filter及其映射。例如: ```xml &lt;filter&gt; &lt;filter-name&gt;Filter1&lt;/filter-name&gt; &lt;filter-class&gt;com.example.Filter1&lt;/filter-class&gt; &lt;/filter&gt; ...

    URL过滤.doc

    - **解释**:`&lt;url-pattern&gt;/*&lt;/url-pattern&gt;`表示该过滤器将应用于所有的URL请求。 **3. URL重写规则示例** ```xml &lt;rule&gt; &lt;from&gt;^/footer/([\w\s*]+)$&lt;/from&gt; &lt;to&gt;/member/pages!toFooterPage.action?name=$1...

    urlrewritefilter-4.0.3.jar 实现网站伪静态301重定向

    &lt;url-pattern&gt;/*&lt;/url-pattern&gt; &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt; &lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt; &lt;/filter-mapping&gt; ``` 在这里,我们指定了`confPath`参数为`/WEB-INF/urlrewrite.xml`,这是存放重写规则...

    java urlrewrite 实现伪静态化 demo源码

    在这个例子中,`&lt;from&gt;`标签定义了匹配的URL模式,而`&lt;to&gt;`标签定义了转换后的URL格式。`(.*)`是一个正则表达式,代表捕获的参数,这里对应的是产品ID。 在Java代码中,我们需要在web.xml文件中配置...

    ssm整合文档。看着文档自己操作,很简单

    上述代码中,`&lt;url-pattern&gt;`指定了需要被缓存的请求路径。 ##### 5. 配置编码过滤器 为了避免中文乱码问题,需要配置字符编码过滤器。 - **配置CharacterEncodingFilter** ```xml &lt;filter&gt; &lt;filter-name&gt;...

    urlrewrite-maven-example.zip

    2. **正则表达式**:在`&lt;from&gt;`和`&lt;to&gt;`中使用正则表达式,实现更复杂的URL匹配和替换。 3. **自定义变量**:通过`&lt;set&gt;`标签设置和引用变量,增加规则的灵活性。 4. **Session和Cookie管理**:可以对Session和...

    urlrewrite_demo

    &lt;url-pattern&gt;/*&lt;/url-pattern&gt; &lt;/filter-mapping&gt; ``` 3. **编写规则文件**:创建`urlrewrite.xml`,并定义URL重写规则。例如,以下规则将`/old`路径重定向到`/new`: ```xml &lt;rule&gt; &lt;from&gt;/old&lt;/from&gt; &lt;to&gt;/...

    SSH整合配置.doc

    &lt;url-pattern&gt;/*&lt;/url-pattern&gt; &lt;/filter-mapping&gt; ``` 6. **依赖注入(DI)与控制反转(IOC)**: Spring的核心特性,允许我们通过XML配置或注解来管理对象的创建和依赖关系,降低了组件之间的耦合度。 7. **...

    web.xml配置文件详解

    - `&lt;filter-name&gt;`:与`&lt;filter&gt;`中的名称匹配。 - `&lt;url-pattern&gt;`:指定过滤器负责过滤的URL模式。 6. **&lt;servlet&gt;**:用于配置Servlet的基本信息。 - `&lt;servlet-name&gt;`:Servlet的逻辑名称。 - `&lt;servlet-...

    FCKeditor配置

    &lt;url-pattern&gt;/js/fckeditor/editor/filemanager/connectors/*&lt;/url-pattern&gt; &lt;/servlet-mapping&gt; ``` 这里的`&lt;servlet-class&gt;`应替换为你实际项目中`ConnectorServlet`类的路径,`baseDir`参数指定了用户文件存储...

    Tomcat(二) Tomcat实现:Servlet与web.xml介绍 以及 源码分析Tomcat实现细节1

    &lt;url-pattern&gt;/*&lt;/url-pattern&gt; &lt;/filter-mapping&gt; ``` 3. **Servlet** Servlet是Java EE的核心组件,它负责处理HTTP请求并生成响应。Servlet的生命周期包括加载、初始化、服务和销毁四个阶段。在web.xml中,你...

    JSP配置文件解释

    &lt;url-pattern&gt;/path/*&lt;/url-pattern&gt; &lt;/servlet-mapping&gt; ``` 这里,`ServletName`是Servlet的别名,`ServletClass`是Servlet类的全限定名,`/path/*`是匹配的URL模式。 ### 4. 过滤器配置 ```xml &lt;filter&gt; ...

    java中文乱码.pdf

    &lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt; &lt;page-encoding&gt;GBK&lt;/page-encoding&gt; &lt;/jsp-property-group&gt; ... &lt;/jsp-config&gt; ``` 2. **Servlet接收Form/Request参数时的乱码** 当用户通过表单提交数据到Servlet,若未...

    ajaxAnywhere配置

    &lt;url-pattern&gt;*.jsf&lt;/url-pattern&gt; &lt;/filter-mapping&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;AjaxAnywhere&lt;/filter-name&gt; &lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt; &lt;/filter-mapping&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;...

    javaSSH框架搭建配置

    &lt;url-pattern&gt;/*&lt;/url-pattern&gt; &lt;/filter-mapping&gt; ``` - `&lt;filter&gt;`标签定义了一个过滤器,用于拦截所有请求并设置字符编码为UTF-8。 - `&lt;filter-mapping&gt;`标签指定了该过滤器对所有URL模式有效。 **3. ...

    自己编写的fifter过滤器.zip

    &lt;url-pattern&gt;/protected/*&lt;/url-pattern&gt; &lt;/filter-mapping&gt; &lt;filter&gt; &lt;filter-name&gt;UrlFilter&lt;/filter-name&gt; &lt;filter-class&gt;com.example.UrlFilter&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name...

Global site tag (gtag.js) - Google Analytics