1. 写法
①完全匹配:以“/”开头,以字母(非“*”)结束,如:<url-pattern>/test/list.do</url-pattern>
②目录匹配:以“/”开头且以“/*”结尾
如:<url-pattern>/test/*</url-pattern>
<url-pattern>/*</url-pattern>
③扩展名匹配:以“*.”开头,以扩展名结束,如:<url-pattern>*.do</url-pattern>
④ “/” 用来表明对应的Servlet为应用默认的Servlet。在这种情况下Servlet路径是请求的URI去掉上下文路径并且路径信息为null。
2. 匹配过程
当一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url,比如我访问的是http://localhost/test/aaa.html,我的应用上下文是test,容器会将http://localhost/test去掉,剩下的/aaa.html部分拿来做servlet的映射匹配。这个映射匹配过程是有顺序的,而且当有一个servlet匹配成功以后,就不会去理会剩下的servlet了(filter不同,后文会提到)。其匹配规则和顺序如下:
1). 精确路径匹配。例子:比如servletA 的url-pattern为 /test,servletB的url-pattern为 /* ,这个时候,如果我访问的url为http://localhost/test ,这个时候容器就会先 进行精确路径匹配,发现/test正好被servletA精确匹配,那么就去调用servletA,也不会去理会其他的servlet了。<o:p></o:p>
2).最长路径匹配。例子:servletA的url-pattern为/test/*,而servletB的url-pattern为/test/a/*,此时访问http://localhost/test/a时,容器会选择路径最长的servlet来匹配,也就是这里的servletB。<o:p></o:p>
3).扩展匹配,如果url最后一段包含扩展,容器将会根据扩展选择合适的servlet。例子:servletA的url-pattern:*.action<o:p></o:p>
4).如果前面三条规则都没有找到一个servlet,容器会根据url选择对应的请求资源。如果应用定义了一个default servlet,则容器会将请求丢给default servlet
相关推荐
在进行Servlet URL配置时,主要有三种匹配规则:精确匹配、目录匹配以及后缀匹配。 精确匹配要求访问的URL地址与配置文件中指定的url-pattern完全一致,这种匹配方式要求客户端输入的URL除了包括工程名、服务器地址...
Servlet的URL-Pattern匹配规则是Web应用程序中Servlet和Filter配置的核心部分,它决定了Servlet或Filter如何响应特定的HTTP请求。以下是对这些匹配规则的详细解释: 1. **精确匹配** - 在`<url-pattern>`中指定的...
4. **斜杠(/)匹配**:例如`/`,这是最通用的匹配,表示所有请求都将由该Servlet处理,除非有更具体的匹配规则。 在给出的链接`http://blog.csdn.net/pengdongneng/article/details/66973587`中,虽然无法直接查看...
Servlet的URL-Pattern匹配规则是Servlet配置中至关重要的一部分,它决定了Servlet如何响应特定的HTTP请求。以下是关于这个主题的详细解释: 1. **精确匹配**: 这是最直观的匹配方式,`<url-pattern>`中的配置必须...
总结一下,Spring Boot允许我们通过自定义URL匹配规则来适应不同的路由需求。通过扩展`WebMvcConfigurationSupport`并重写`configurePathMatch`,我们可以控制是否启用后缀模式匹配和尾部斜线匹配。这些配置对于构建...
* / 提示:匹配规则,同样适用 WebServlet。 WEB-INF 目录下的资源不能直接访问,必须通过 Java 代码读取。web 应用程序调试可以通过增加和删除断点、启动调试、观测变量的值来实现。 在实际开发中,Servlet 注解...
本篇文章将深入探讨`url-pattern`的使用及其背后的匹配规则。 首先,我们需要了解Servlet和Filter的`url-pattern`相关说明。Servlet是一个Java类,负责处理HTTP请求和响应。Filter则是在Servlet执行前后进行预处理...
以下是对JSP Servlet中Filter配置的详细总结: 1. 过滤所有资源: 当你想让一个Filter作用于应用中的所有资源时,你需要在`web.xml`配置文件中定义一个Filter,并设置`<url-pattern>`为`/*`。这样,任何通过HTTP...
- `<servlet-mapping>`元素将URL与Servlet关联,`<url-pattern>`指定匹配的URL模式。 4. **请求处理**: - `doGet()`和`doPost()`方法处理HTTP GET和POST请求,分别对应HTTP协议的两种主要请求方式。 - 使用`...
最后,Servlet3.0还支持了更灵活的Filter配置,例如通过`@WebFilter`注解指定多个URL模式或Servlet匹配规则,以及使用`@Priority`注解设置过滤器的执行顺序。 总的来说,Servlet3.0的新特性为Java Web开发带来了...
这通常基于URL映射规则,如Servlet的`<url-pattern>`标签。一旦找到合适的Servlet,容器会创建一个Servlet实例(如果尚未创建)并调用其`service()`方法,传递Request和Response对象。 4. **Servlet生命周期**:...
在Web应用开发中,`web.xml`配置文件扮演着极其重要的角色,其中`<url-pattern>`元素用于定义Servlet的映射规则,即URL模式。通过不同的URL模式,我们可以精确地控制Servlet如何被客户端请求所调用。本文将详细介绍`...
本篇文章将深入探讨Servlet的URL映射问题,包括URL模式的匹配规则、`/`与`/*`的区别以及优先级问题。 1. **Servlet URL-Pattern 的匹配问题** - **精确匹配**:`<url-pattern>`中配置的路径必须与请求URL完全一致...
10. **URL路径匹配**:Servlet 3.0提供了更强大的URL路径匹配规则,例如通配符(`*`)、正则表达式,使路由规则更加灵活。 总的来说,Servlet 3.0的这些改进极大地提升了Java EE应用程序的开发效率和性能,使得开发...
Servlet 3.0引入了更灵活的URL映射规则,如通配符(*)和正则表达式,使得URL路由更加自由和强大。 9. **生命周期回调方法**: 提供了`init()`、`destroy()`之外的新的生命周期回调方法,如`@PostConstruct`和`@...
映射规则可以是路径匹配,如“/example/*”,也可以是扩展名匹配,如 "*.do"。 九、过滤器 Servlet API还提供了Filter接口,允许在请求到达Servlet之前或响应离开Servlet之后进行拦截处理。过滤器常用于身份验证、...
- **请求分发**: Servlet容器通过匹配URL路径来选择合适的Servlet进行处理。 5. **过滤器Filter** - **Filter接口**: 允许在请求到达Servlet之前或之后进行拦截处理,如认证、字符编码转换、日志记录等。 - **...
容器接收到请求后,会通过请求的URL找到匹配的Servlet,并调用其`service`方法来处理请求。 Servlet的生命周期由Servlet容器管理,包括初始化(`init`)、服务(`service`)、销毁(`destroy`)三个阶段。容器会在...
Servlet 3.1扩展了URL路径匹配规则,引入了路径模板(Path Templates)和正则表达式匹配。开发者可以通过`@WebServlet("/users/{userId:\\d+}")`定义更灵活的URL映射,提升路由的可读性和灵活性。 7. 组件化开发 ...
- 在`struts.xml`中找到或创建一个拦截器栈,并调整其匹配规则,确保不会拦截到Servlet请求。 - 如果使用默认的拦截器栈,可以通过添加或修改配置项来达到目的。 - **优点**:不依赖于`web.xml`的配置,更加灵活。...