<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.qf.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>

扩展名匹配

url-pattern配置的内容是*.aa、*.bb、*.jsp这种类型的

  <servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.qf.servlet.HelloServlet3</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>*.hello</url-pattern>
</servlet-mapping>

路径匹配

1.全路径匹配:请求访问的url的地址必须与url-pattern配置的内容完全一致

  <servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.qf.servlet.HelloServlet3</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/aa/bb/hello</url-pattern>
</servlet-mapping>

2.路径匹配:前半段完全匹配,后半段存在*(*是通配符,可以代表任何字符串);以/开始,以*结束;/aa/*可以是/aa/bb,也可以是/aa/cc..............

  <servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.qf.servlet.HelloServlet3</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/aa/*</url-pattern>
</servlet-mapping>

  注意:/aa/*/*这种url-pattern配置,url访问时必须是/aa/*/aa,/aa/*/bb这种才可以访问,也就是中间这个*并不是通配符,只是一个普通字符

路径匹配和扩展名匹配不可以同时使用,下面几个配置全是不合法的

<url-pattern>/aa/*.hello</url-pattern>
<url-pattern>/*.hello</url-pattern>
<url-pattern>a*.hello</url-pattern>

注意:

< url-pattern>/</url-pattern>  会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url
< url-pattern>/*</url-pattern> 会匹配所有url:路径型的和后缀型的url(包括/login,*.jsp,*.js和*.html等)

当一个url与多个servlet的匹配规则可以匹配时,则按照 “ 完全匹配路径 > 最长路径>扩展名”这样的优先级匹配到对应的servlet

  • servlet1 的url-pattern是 /test,servlet2的url-pattern是 /* ,访问的url为http://localhost:8080/test ,容器就会先进行完全路径匹配,发现/test正好被servlet1精确匹配,那么就去调用servlet1,不会去管servlet2
  • servlet1的url-pattern为/test/*,servlet2的url-pattern为/test/a/*,访问的url是http://localhost:8080/test/a时,容器会选择路径最长的servlet来匹配,也就是这里的servlet2
  • servlet1的url-pattern是*.action ,servlet2的url-pattern为 /* ,访问的url为http://localhost:8080/test.action,这个时候容器就会优先进行路径匹配,而不是去匹配扩展名,这样就去调用servlet2

servlet配置url-pattern的匹配规则的更多相关文章

  1. Invalid [xxx] in servlet mapping 、 <url-pattern>的匹配规则 、 DefaultServlet介绍

    真的是很容易被忽视的错误,servlet 配置url的时候遇到问题,这个之前确实没有详细了解过. 出现这个错误的时候往往伴随着一系列高大上的错误,比如会出现类似[StandardEngine[Cata ...

  2. [ /* 和 / 的区别 ] Difference between / and /* in servlet mapping url pattern

    <url-pattern>/*</url-pattern> The /* on a servlet overrides all other servlets, includin ...

  3. nginx配置location项的URL匹配规则

    Localtion URL的正则匹配规则 示例 location / { try_files $uri @apache; } #所有的路径都是/开头,表示匹配所有 location @apache { ...

  4. 二十一、springboot之定制URL匹配规则(项目中遇到的问题:get方式传参,带有小数点,被忽略)

    一.问题描述: get方式传参,在传送价格,积分时(带有小数点),debug后台微服务接受到的参数,却不带小数点,如:price是0.55,后台接受后却是0 二.解决 在WebConfiguratio ...

  5. Spring Boot实战之定制URL匹配规则

    本文首发于个人网站:Spring Boot实战之定制URL匹配规则 构建web应用程序时,并不是所有的URL请求都遵循默认的规则.有时,我们希望RESTful URL匹配的时候包含定界符". ...

  6. Servlet拦截匹配规则可以自已定义,拦截哪种URL合适?

    Servlet拦截匹配规则可以自已定义,拦截哪种URL合适? 当映射为@RequestMapping("/user/add")时,为例: 1.拦截*.do.*.htm, 例如:/u ...

  7. Web.xml中设置Servlet和Filter时的url-pattern匹配规则

    一.servlet容器对url的匹配过程: 当一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url,比如我访问的是http://loca ...

  8. servlet的匹配规则,兼谈/与/*

    客户端通过URL地址访问服务器(servlet容器)资源,所以servlet若要能对外提供服务,必须要将程序按照java规范将其映射到对应的URL上,映射的规则是需要开发人员在WEB.XML中显示指定 ...

  9. 转:Servlet的url匹配以及url-pattern详解

    Servlet是J2EE开发中常用的技术,使用方便,配置简单,老少皆宜.估计大多数朋友都是直接配置用,也没有关心过具体的细节,今天遇到一个问题,上网查了servlet的规范才发现,servlet中的u ...

随机推荐

  1. 哪些文件在vue项目中很重要,哪些可以删掉

    是时候告诉你重要文件是哪些了,这是一个陆游,所以 需要路由配置 index.js 路由配置文件是index.js注意这个文件最开始就在集成路由了 然后最开始集成路由的地方可以不写后缀名字,因此注意这个 ...

  2. JQ的live学习

    $("#StartTime").live("blur keypress keyup",function(){ if($("#EndTime" ...

  3. JS异步事件顺序:setTimeout,async,promise

    为什么最近更新那么频繁,还不是因为笔试的时候瞎了? 先说异步事件执行顺序的规则: 1. 定时器异步队列和promise队列不是同一队列,promise优先级高于setTimeout; 2. 创建pro ...

  4. oracle创建表空间自增空间管理

    表空间(tablespace).段(segment).区(extent).块(block),这些都是oracle数据库在数据文件中组织数据的基本单元 1.创建表空间create tablespace ...

  5. Ubuntu18.04+CUDA9.0+cuDNN7.1.3+openface安装总结

    目录 前言 编译工具CMake C++标准库安装 下载OpenFace代码 OpenCV安装 luarocks-Lua 包管理器,提供一个命令行的方式来管理 Lua 包依赖.安装第三方 Lua 包等功 ...

  6. go语言从例子开始之Example13.函数多返回值

    Go 内建多返回值 支持.这个特性在 Go 语言中经常被用到,例如用来同时返回一个函数的结果和错误信息. Example: package main import "fmt" // ...

  7. 将第三方jar包安装到本地maven仓库

    这里有2个案例,需要手动发出Maven命令包括一个 jar 到 Maven 的本地资源库. 要使用的 jar 不存在于 Maven 的中心储存库中. 您创建了一个自定义的 jar ,而另一个 Mave ...

  8. php操作redis常用方法代码示例

     redis 的连接 描述:实例连接到一个Redis. 参数:host: string,port: int 返回值:BOOL 成功返回:TRUE;失败返回:FALSE $redis = new Red ...

  9. fn:indexOf()详解(jsp中JSTL标签库)

    fn:indexOf()函数返回一个字符串中指定子串的位置. 语法 fn:indexOf()函数的语法如下: ${fn:indexOf(<原始字符串>,<子字符串>)} 实例演 ...

  10. Android processDebugManifest 异常

    1.使用 gradlew processDebugManifest --stacktrace 进行排查; 2.异常: processDebugManifest (Thread[Execution wo ...