Servlet之urlPattern配置 [JavaWeb][Servlet]

本文详细解析Servlet的urlPattern配置规则,包括精确匹配、目录匹配、扩展名匹配和任意匹配,以及优先级比较。理解如何设置多个urlPattern以灵活访问Servlet资源,并避免覆盖默认行为。
摘要由CSDN通过智能技术生成

urlPattern配置

Servlet想要被访问,必须配置其访问路径
一个Servlet可以配置多个urlPattern
  • @WebServlet注解中的urlPatterns属性是一个数组, 也就是我们可以配置多个urlPattern给一个Servlet,那么通过多个urlPattern我们都可以访问到这个Servlet

  • eg:

    @WebServlet(urlPatterns = {"/demo1","/demo2"})
    
    • 也就是我们服务器中的一个Servlet的访问路径可能有多个, 通过这多种访问路径我们都可以访问到对应的Servlet资源

urlPattern配置规则

①精确匹配:

  • 配置路径:

    @WebServlet("/user/select")
    
  • 访问路径:

    localhost:8080/web-demo/user/select
    
    • 这里我们是访问本地的tomcat服务器中的名为web-demo的web项目下的配置路径为/user/select的Servlet

②目录匹配

  • 配置路径:

    @WebServlet("/user/*")
    
    • 通过user目录去匹配, 只要是在user目录之下的路径都可以匹配成功, 都可以访问到Servlet类中
      • 但是肯定是在tomcat中的对应项目之下访问
  • 访问路径

    localhost:8080/web-demo/user/aaa
    //或者
    localhost:8080/web-demo/user/bbb
    

③扩展名匹配

  • 配置路径

    @WebServlet("*.do")
    
    • 通过do扩展名去匹配, 只要是扩展名为do的都可以匹配成功, 都可以访问到Servlet中
      • 但是肯定是在tomcat中的对应项目之下访问
  • 访问路径

    localhost:8080/web-demo/aaa.do
    localhost:8080/web-demo/bbb.do
    
  • 注意: 我们通过扩展名方式匹配的时候开头部分没有/(斜杠),如果添加了"/",那么就会出现一个运行时异常

    • 其他的三种方式开头的时候都要加"/"(斜杠)

④任意匹配

  • 配置路径

    @WebServlet("/")
    @WebServlet("/*")
    
  • 访问路径

    localhost:8080/web-demo/hehe
    
    
  • 使用/和/*实现任意匹配的区别:
    1. 当我们的项目中的Servlet配置了"/"作为访问路径, 那么就会覆盖掉tomcat中的DefaultServlet
      • 当其他的url-Pattern都匹配不上时就会走这个DefaultServlet类
      • 我们的tomcat中的DefaultServlet是针对于我们的所有Web应用程序的, DefaultServlet是用于处理Servlet中静态资源的访问的
        • 所以当我们的DefaultServlet被覆盖掉之后,就不能处理Servlet中静态资源的访问了, 所以我们不建议使用"/"
          • 虽然"/*“不会覆盖tomcat中的DefaultServlet, 但是我们也不建议使用”/ *"

各种urlPattern配置的优先级:

精确路径 > 目录路径 > 扩展名路径 > /* > /

  • 当一个访问路径同时满足多种匹配方式的时候,这个访问路径会优先匹配多种匹配方式中的优先级最高的
    • 越精确优先级就越高, 也越会被优先选择
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值