下面的代码摘自tomcat源码,用来匹配<filter-mapping>中的<url-pattern>,相信比文字更容易理解:
java 代码
-
-
-
-
-
-
-
-
- private boolean matchFiltersURL(FilterMap filterMap, String requestPath) {
-
- if (requestPath == null)
- return (false);
-
-
- String testPath = filterMap.getURLPattern();
- if (testPath == null)
- return (false);
-
-
- if (testPath.equals(requestPath))
- return (true);
-
-
- if (testPath.equals("/*"))
- return (true);
- if (testPath.endsWith("/*")) {
- if (testPath.regionMatches(0, requestPath, 0,
- testPath.length() - 2)) {
- if (requestPath.length() == (testPath.length() - 2)) {
- return (true);
- } else if ('/' == requestPath.charAt(testPath.length() - 2)) {
- return (true);
- }
- }
- return (false);
- }
-
-
- if (testPath.startsWith("*.")) {
- int slash = requestPath.lastIndexOf('/');
- int period = requestPath.lastIndexOf('.');
- if ((slash >= 0) && (period > slash)
- && (period != requestPath.length() - 1)
- && ((requestPath.length() - period)
- == (testPath.length() - 1))) {
- return (testPath.regionMatches(2, requestPath, period + 1,
- testPath.length() - 2));
- }
- }
-
-
- return (false);
-
- }
分享到:
- 2007-05-21 10:16
- 浏览 4011
- 评论(0)
- 论坛回复 / 浏览 (0 / 4264)
- 查看更多
相关推荐
Servlet的URL-Pattern匹配规则是Web应用程序中Servlet和Filter配置的核心部分,它决定了Servlet或Filter如何响应特定的HTTP请求。以下是对这些匹配规则的详细解释: 1. **精确匹配** - 在`<url-pattern>`中指定的...
<wls:url-pattern>logical-path/*</wls:url-pattern> <wls:physical-path>filesystem/path</wls:physical-path> </wls:virtual-directory-mapping> ``` 在这里,`<wls:url-pattern>`定义了逻辑路径,`<wls:...
当你想让一个Filter作用于应用中的所有资源时,你需要在`web.xml`配置文件中定义一个Filter,并设置`<url-pattern>`为`/*`。这样,任何通过HTTP请求访问的应用资源都会先经过这个Filter。例如: ```xml <filter>...
如果使用`<url-pattern>`,则过滤器将应用于所有匹配该模式的URL;如果使用`<servlet-name>`,则过滤器仅应用于指定的Servlet。 - `<dispatcher>`:指定过滤器在哪些情况下被调用,这是本文的重点。 #### ...
在`web.xml`中,我们定义`<filter>`和`<filter-mapping>`元素来声明Filter及其映射。例如: ```xml <filter> <filter-name>Filter1</filter-name> <filter-class>com.example.Filter1</filter-class> </filter> ...
- **解释**:`<url-pattern>/*</url-pattern>`表示该过滤器将应用于所有的URL请求。 **3. URL重写规则示例** ```xml <rule> <from>^/footer/([\w\s*]+)$</from> <to>/member/pages!toFooterPage.action?name=$1...
<url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping> ``` 在这里,我们指定了`confPath`参数为`/WEB-INF/urlrewrite.xml`,这是存放重写规则...
在这个例子中,`<from>`标签定义了匹配的URL模式,而`<to>`标签定义了转换后的URL格式。`(.*)`是一个正则表达式,代表捕获的参数,这里对应的是产品ID。 在Java代码中,我们需要在web.xml文件中配置...
上述代码中,`<url-pattern>`指定了需要被缓存的请求路径。 ##### 5. 配置编码过滤器 为了避免中文乱码问题,需要配置字符编码过滤器。 - **配置CharacterEncodingFilter** ```xml <filter> <filter-name>...
2. **正则表达式**:在`<from>`和`<to>`中使用正则表达式,实现更复杂的URL匹配和替换。 3. **自定义变量**:通过`<set>`标签设置和引用变量,增加规则的灵活性。 4. **Session和Cookie管理**:可以对Session和...
<url-pattern>/*</url-pattern> </filter-mapping> ``` 3. **编写规则文件**:创建`urlrewrite.xml`,并定义URL重写规则。例如,以下规则将`/old`路径重定向到`/new`: ```xml <rule> <from>/old</from> <to>/...
<url-pattern>/*</url-pattern> </filter-mapping> ``` 6. **依赖注入(DI)与控制反转(IOC)**: Spring的核心特性,允许我们通过XML配置或注解来管理对象的创建和依赖关系,降低了组件之间的耦合度。 7. **...
- `<filter-name>`:与`<filter>`中的名称匹配。 - `<url-pattern>`:指定过滤器负责过滤的URL模式。 6. **<servlet>**:用于配置Servlet的基本信息。 - `<servlet-name>`:Servlet的逻辑名称。 - `<servlet-...
<url-pattern>/js/fckeditor/editor/filemanager/connectors/*</url-pattern> </servlet-mapping> ``` 这里的`<servlet-class>`应替换为你实际项目中`ConnectorServlet`类的路径,`baseDir`参数指定了用户文件存储...
<url-pattern>/*</url-pattern> </filter-mapping> ``` 3. **Servlet** Servlet是Java EE的核心组件,它负责处理HTTP请求并生成响应。Servlet的生命周期包括加载、初始化、服务和销毁四个阶段。在web.xml中,你...
<url-pattern>/path/*</url-pattern> </servlet-mapping> ``` 这里,`ServletName`是Servlet的别名,`ServletClass`是Servlet类的全限定名,`/path/*`是匹配的URL模式。 ### 4. 过滤器配置 ```xml <filter> ...
<url-pattern>*.jsp</url-pattern> <page-encoding>GBK</page-encoding> </jsp-property-group> ... </jsp-config> ``` 2. **Servlet接收Form/Request参数时的乱码** 当用户通过表单提交数据到Servlet,若未...
<url-pattern>*.jsf</url-pattern> </filter-mapping> <filter-mapping> <filter-name>AjaxAnywhere</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> <filter-mapping> <filter-name>...
<url-pattern>/*</url-pattern> </filter-mapping> ``` - `<filter>`标签定义了一个过滤器,用于拦截所有请求并设置字符编码为UTF-8。 - `<filter-mapping>`标签指定了该过滤器对所有URL模式有效。 **3. ...
<url-pattern>/protected/*</url-pattern> </filter-mapping> <filter> <filter-name>UrlFilter</filter-name> <filter-class>com.example.UrlFilter</filter-class> </filter> <filter-mapping> <filter-name...