JavaWeb中的 路径匹配总结


一、配置文件中servlet和filter

三种通配符url-pattern写法

1、精确匹配。以”/“开头,加上servlet名称:/ad;

2、路径匹配。以”/”开头,加上通配符“*”:/*;

3、扩展名匹配。以通配符“*”开头,加上扩展名:*.do;

匹配规则

1、先精确匹配,再路径匹配
例如:

servlet-mapping1:<url-pattern>/ad</url-pattern>
servlet-mapping2:<url-pattern>/*</url-pattern>

当一个请求http://localhost:8080/ad来的时候,servlet-mapping1匹配到,不再用servlet-mapping2匹配。

2、路径匹配的时候,先最长路径匹配,再最短路径匹配

servlet-mapping1:<url-pattern>/ad/uplaod.jsp</url-pattern>
servlet-mapping2:<url-pattern>/*</url-pattern>

当一个请求http://localhost:8080/ad/upload.jsp来的时候,servlet-mapping1匹配到,不再用servlet-mapping2匹配

3、扩展名匹配,是单独于精确匹配和匹配的一类
struts2的扩展名就是.action,所以http://localhost:8080/ad.action会被servlet-mapping:<url-pattern>*.action</url-pattern>匹配到。

4、以上都找不到servlet,就用默认的servlet,配置为

<url-pattern>/</url-pattern>

注意:
1、三种匹配方法不能自由组合,如<url*pattern>/user/*.do</url-pattern>是非法的。
2、<url*pattern>/aa/*/bb</url-pattern>是精准匹配,这里的*不是通配符

二、springMVC请求路径中ant风格的路径

?:表示任意的单个字符
*:表示任意的0个或多个字符
**:表示任意的一层或多层目录
注意:在使用**时,只能使用/**/xxx的方式

三、springMVC拦截器中的全匹配

<mvc:mapping path="/**"/>
使用/**,而不是/*


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

<think>好的,我现在需要帮助用户理解Java Web中虚拟路径与实际文件的映射关系。首先,用户的问题是关于配置规则的,所以我得先回顾相关的知识,并结合提供的引用资料来组织回答。 用户提供的引用中有几个关键点:比如在server.xml中配置Context,或者在conf/Catalina目录下创建XML文件,还有通过web.xml配置Servlet映射。这些都属于不同的配置方法,需要分别解释清楚。 首先,我应该明确虚拟路径的作用,即如何将客户端请求的URL路径映射到服务器上的实际文件位置。然后,分点说明不同的配置方式,比如Tomcat中的三种主要方法,Servlet的虚拟路径映射,以及Spring Boot中的配置。每个方法需要给出具体步骤和示例,这样用户能更好地理解。 需要注意的是,用户可能对Tomcat的配置比较关注,因为引用里多次提到server.xml和Context元素。同时,Servlet的配置和Spring Boot的设置也是常见场景,应该涵盖进去。 还要确保回答结构清晰,使用中文,并正确应用LaTeX格式。比如,代码块需要用反引号包裹,独立公式用$$,但这个问题可能不太涉及数学公式,但如果有变量或路径表达式,可能需要用行内LaTeX,比如$path$和$docBase$。 另外,用户要求生成相关问题,我需要根据内容提出几个相关的问题,比如配置方法、优先级、Servlet映射等。这些问题应该帮助用户进一步探索主题。 最后,检查引用是否正确应用。例如,引用[1]提到server.xml中的Context配置,引用[2]和[3]关于Servlet的虚拟路径,引用[4]关于Spring Boot的静态资源映射,引用[5]关于web.xml的作用。这些都需要在回答中适当引用,以增加可信度。 现在需要组织这些信息,确保逻辑连贯,步骤明确,并且示例清晰。可能还需要指出不同方法的优缺点,比如在server.xml中配置需要重启,而独立XML文件则不需要,这对开发中的实践有帮助。 总结下来,回答的结构应该是: 1. Tomcat虚拟路径映射的三种方法,每种方法的配置步骤和示例。 2. Servlet虚拟路径映射的配置方式,包括web.xml和注解。 3. Spring Boot的静态资源映射配置。 4. 配置优先级和注意事项。 5. 相关问题部分。 需要确保每个部分都有对应的引用标注,比如在Tomcat配置部分引用[1],在Servlet部分引用[2][3][5],在Spring Boot部分引用[4]。 同时,语言要简洁明了,避免技术术语过多,但又要准确。比如解释path和docBase参数时,要说明它们的作用,path是虚拟路径,docBase是实际路径。 可能还需要提到默认应用和自动部署的情况,比如ROOT.xml的作用,以及直接将文件放在webapps目录下的自动映射,这些在引用[1]中有提到。 最后,确认所有配置方法的示例代码正确,并符合用户提供的引用内容。例如,server.xml中的Context配置,以及独立XML文件的命名规则。 现在将这些思考整理成结构化的回答,确保覆盖所有关键点,并自然插入引用标记。</think>### Java Web虚拟路径映射配置规则详解 在Java Web开发中,虚拟路径与实际文件的映射主要通过配置实现,目的是将客户端请求的URL路径映射到服务器端的物理资源。以下是常见的配置方法及规则: --- #### 一、Tomcat虚拟目录映射 Tomcat支持三种主要方式配置虚拟路径: 1. **`server.xml`中配置`<Context>`元素** - 在`<Host>`标签下添加`<Context>`,通过`path`定义虚拟路径,`docBase`指定实际路径: ```xml <Context path="/news" docBase="C:\sina" /> ``` 访问路径:`http://localhost:8080/news/1.html` 若设置`path=""`,则为默认Web应用(需重启生效)[^1]。 2. **独立XML文件配置** - 在`conf/Catalina/主机名/`目录下创建`虚拟路径名.xml`文件(如`news.xml`),内容为: ```xml <Context docBase="C:\sina" /> ``` 访问路径:`http://localhost:8080/news/1.html` 文件名支持`#`表示多级目录(如`news#today.xml`对应路径`/news/today`)[^1]。 3. **自动映射Web应用目录** - 直接将应用部署到`webapps`目录下,Tomcat会自动生成同名虚拟路径[^1]。 --- #### 二、Servlet虚拟路径映射 通过`web.xml`或注解配置Servlet的URL映射: 1. **`web.xml`配置** ```xml <servlet-mapping> <servlet-name>LifecycleServlet</servlet-name> <url-pattern>/lifecycle</url-pattern> </servlet-mapping> ``` 访问路径:`http://localhost:8080/应用名/lifecycle`[^2][^5]。 2. **注解配置** ```java @WebServlet(urlPatterns = {"/demo", "/backup"}) ``` 支持多个虚拟路径映射到同一Servlet[^3]。 --- #### 三、Spring Boot静态资源映射 在`application.properties`中配置: ```properties spring.resources.static-locations=file:H:\\AFile spring.mvc.static-path-pattern=/** ``` - `static-locations`:实际文件路径 - `static-path-pattern`:虚拟路径匹配规则[^4]。 --- #### 四、配置优先级与注意事项 1. **优先级**:独立XML文件 > `server.xml`配置 > 自动部署目录。 2. **默认应用**:使用`ROOT.xml`或设置`path=""`可定义默认Web应用。 3. **路径冲突**:虚拟路径需唯一,避免多个资源映射同一路径[^3][^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值