zoukankan      html  css  js  c++  java
  • 专题——web.xml 中 url-pattern

    一、映射什么?

    一个请求发送到 servlet 容器,servlet 容器会将当前请求的 url 路径减去 协议、端口号、contextPath,剩下 servletPath 就是用来做 url-pattern 映射的部分。

    如:

    http://localhost:8080/myservlet/DisplayHeader?method=show

    http: 传输协议

    localhost: 主机地址

    8080: 端口号

    myservlet: contextPath

    DisplayHeader: servletPath

    method=show: 参数

    所以要做 url-pattern 映射的部分就是 "DisplayHeader" 部分。

    二、映射

    1.映射规则

    (1)精确匹配:在url-pattern标签中指定一个具体的URL地址,其中不使用任何的通配符,例如:/target.jsp

    (2)模糊匹配:在url-pattern标签中指定一个带有通配符的URL地址

      <1>前缀匹配:URL地址前面确定,后面使用通配符,例如:/happy/*

      <2>后缀匹配:URL地址后面确定,前面使用通配符,例如:*.jsp,*.jpg

      <3>注意:不能在URL地址中间使用通配符,例如:/happy/*.jsp是不允许的

    (3)还有一种:"/"

    2.Wrapper :Wrapper 代表一个 Servlet,它负责管理一个 Servlet,包括的 Servlet 的装载、初始化、执行以及资源回收。

    (1)前缀匹配的 servlet 会被丢到 wildcardWrappers 中。

    (2)后缀匹配的 servlet 会被丢到 extensionWrappers 中。

    (3)"/" 会被丢到 defaultWrapper 中。

    (4)其他映射被丢到 exactWrappers 中。

    3.优先级的高低

    (1)精确匹配,使用 contextVersion 的 exactWrappers

    (2)前缀匹配,使用 contextVersion 的 wildcardWrappers

    (3)后缀匹配,使用contextVersion的extensionWrappers(tomcat 自动为我们加入处理 .jsp 和 .jspx 路径)

    (4)使用资源文件来处理servlet,使用contextVersion的welcomeResources属性,这个属性是个字符串数组(servletPath 如果什么都不输入的话,则会先来映射welcomeResources)

    (5)使用默认的servlet,使用contextVersion的defaultWrapper

    简单来说:

    精确匹配的优先级>前缀匹配(/*)>后缀匹配(*.action)> servletPath 为空(默认会访问 welcomeResources) > "/"。

    三、参考资料

    http://www.cnblogs.com/fangjian0423/p/servletContainer-tomcat-urlPattern.html

    四、常见问题

    1.为什么 servlet 的 url-pattern 要配置为 "/",而 filter 的 url-pattern 要配置为 "/*"?

    "/*" 的优先级较高,对于大部分 url 请求都能进行过滤,甚至我们访问 index.jsp 这样的文件都需要走这个映射。对于 servlet 而言,不是希望看到的。

    对于 filter 来说,不会像servlet那样只匹配一个servlet,因为filter的集合是一个链,所以只会有处理的顺序不同,而不会出现只选择一个filter,所以它要拦截绝大部分请求,然后由每个匹配的filter进行自主处理。

    这个解释可能还有点不足,欢迎大家补充。

  • 相关阅读:
    python的编码判断_unicode_gbk/gb2312_utf8(附函数)
    stat文件状态信息结构体
    内核配置中 ramdisk 大小修改
    mount命令详解
    dirent和DIR 结构体 表示文件夹中目录内容信息
    nandwrite 参数
    mke2fs 制作ext2文件系统image
    ext2文件系统错误
    照度/感光度(Lux)
    摄像机的几个重要的技术指标
  • 原文地址:https://www.cnblogs.com/solverpeng/p/5729763.html
Copyright © 2011-2022 走看看