JAVAWEB学习(4) — 处理请求资源路径

本文详细解析了Servlet容器如何处理请求资源路径,包括请求资源路径的定义、Web服务器的处理流程、Servlet匹配规则以及如何使一个Servlet处理多种请求的方法。重点介绍了精确匹配、通配符匹配和后缀匹配三种方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Servlet 容器如何处理请求资源路径

1. 什么是请求资源路径

在浏览器地址栏输入:http://ip:port/appName/xxx.html

其中 /appName/xxx.html 就是请求资源路径

容器默认认为访问的是一个servlet,所以,会查看web.xml配置,看有没有匹配的servlet

2. Web服务器对请求路径的处理过程

在浏览器地址栏输入:http://ip:port/appName/xxx.html

  1. 浏览器依据ip,port建立与Servlet容器之间的连接,然后将请求资源路径/appName/xxx.html 发送过去给容器
  2. 容器依据应用名“/appName”找到应用所在的文件夹,容器会默认请求的是一个Servlet,查找web.xml文件中所有的Servlet配置“”,看是否有匹配的<url-pattern>
  3. 找到匹配的值之后再按照<servlet-name>完成对应关系的查找,进而找到要执行的Servlet
  4. 如果没有查找匹配的servlet,容器会查找对应位置的文件
  5. 如果没有找到对应位置的文件就会返回404错误

3. 匹配servlet的规则

  • 精准匹配

    具体资源名称与web.xml文件中的url-pattern严格匹配相等才执行

    <servlet>
        <servlet-name>someServlet</servlet-name>
        <servlet-class>test.MyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>someServlet</servlet-name>
        <url-pattern>/abc.html</url-pattern>
    </servlet-mapping>
    
  • 通配符匹配

    使用"*"匹配一个或者多个任意的字符

    <servlet>
        <servlet-name>someServlet</servlet-name>
        <servlet-class>test.MyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>someServlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
    
  • 后缀匹配

    在配置url-pattern节点时,不使用斜杠开头,用“*.”开头来匹配任意多个字符

    <servlet>
        <servlet-name>someServlet</servlet-name>
        <servlet-class>test.MyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>someServlet</servlet-name>
        <!-- 会匹配所有以.do结尾的请求 -->
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    

优先级最高的是 精确匹配

4. 如何让一个Servlet处理多种请求

  1. 采用后缀匹配

    <servlet>
        <servlet-name>someServlet</servlet-name>
        <servlet-class>test.MyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
       <servlet-name>SomeServlet</servlet-name>
       <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    
  2. 分析请求资源路径,进行相应的处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值