`
only_java
  • 浏览: 112433 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

转一好东西

阅读更多

转自:http://foxty.iteye.com/blog/39332

Servlet和Filter的url匹配以及url-pattern详解

Servlet filter J2EE 开发中常用的技术,使用方便,配置简单,老少皆宜。估计大多数朋友都是直接配置用,也没有关心过具体的细节,今天遇到一个问题,上网查了 servlet 的规范才发现, servlet filter 中的 url-pattern 还是有一些文章在里面的,总结了一些东西,放出来供大家参考,以免遇到问题又要浪费时间。 <o:p></o:p>

    一, servlet 容器对 url 的匹配过程: <o:p></o:p>

      <o:p></o:p>

当一个请求发送到 servlet 容器的时候,容器先会将请求的 url 减去当前应用上下文的 路径 作为 servlet 的映射 url ,比如我访问的是 http://localhost/test/aaa.html ,我的应用上下文是 test ,容器会将 http://localhost/test 去掉,剩下的 /aaa.html 部分拿来做 servlet 的映射匹配。这个映射匹配过程是有顺序的,而且当有一个 servlet 匹配成功以后,就不会去理会剩下的 servlet 了( filter 不同,后文会提到)。其匹配规则和顺序如下: <o:p></o:p>

1.     精确路径匹配。例子:比如 servletA url-pattern /test servletB url-pattern /* ,这个时候,如果我访问的 url http://localhost/test ,这个时候容器就会先 进行精确路径匹配,发现 /test 正好被 servletA 精确匹配,那么就去调用 servletA ,也不会去理会其他的 servlet 了。 <o:p></o:p>

2.     最长路径匹配。例子: servletA url-pattern /test/* ,而 servletB url-pattern /test/a/* ,此时访问 http://localhost/test/a 时,容器会选择路径最长的 servlet 来匹配,也就是这里的 servletB <o:p></o:p>

3.     扩展匹配,如果 url 最后一段包含扩展,容器将会根据扩展选择合适的 servlet 。例子: servletA url-pattern *.action<o:p></o:p>

4.     如果前面三条规则都没有找到一个 servlet ,容器会根据 url 选择对应的请求资源。如果应用定义了一个 default servlet ,则容器会将请求丢给 default servlet (什么是 default servlet ?后面会讲) <o:p></o:p>

      根据这个规则表,就能很清楚的知道 servlet 的匹配过程,所以定义 servlet 的时候也要考虑 url-pattern 的写法,以免出错。 <o:p></o:p>

      对于 filter ,不会像 servlet 那样只匹配一个 servlet ,因为 filter 的集合是一个链,所以只会有处理的顺序不同,而不会出现只选择一个 filter Filter 的处理顺序和 filter-mapping web.xml 中定义的顺序相同。 <o:p></o:p>

    二,url-pattern 详解 <o:p></o:p>

         web.xml 文件中,以下语法用于定义映射:

l  ”/’ 开头和以 ”/*” 结尾的是用来做路径映射的。

l  以前缀 ”*.” 开头的是用来做扩展映射的。

l  “/” 是用来定义 default servlet 映射的。

l  剩下的都是用来定义详细映射的。比如: /aa/bb/cc.action

所以,为什么定义 ”/*.action” 这样一个看起来很正常的匹配会错?因为这个匹配即属于路径映射,也属于扩展映射,导致容器无法判断。

 

分享到:
评论

相关推荐

    乐普转换软件(单片机开发的好东西)

    乐普转换软件是一款专为单片机开发设计的实用工具,尤其对于电子工程师和爱好者来说,它具有重要的价值。在单片机开发过程中,经常...对于那些热衷于单片机编程和硬件设计的工程师来说,这确实是个不可多得的好工具。

    好东西 关于指针和类型转换的合集

    通过深入理解指针和类型转换,程序员能够更好地控制程序的内存管理,编写更高效、灵活的代码。这包括动态内存分配、内存管理、数据结构实现(如链表、树)以及高级算法设计。熟练掌握这些概念是成为优秀C/C++程序员...

    数学方面的资源,好东西啊!

    - `#define MAXCHAR 101`: 定义了一个常量`MAXCHAR`,用于表示字符串的最大长度。 - `int source;`: 用户输入的原始进制。 - `int object;`: 用户希望转换的目标进制。 - `int length;`: 转换后字符串的长度。 - `...

    好东西大家分享,很使用而且很超值的PPT模板

    "好东西大家分享,很使用而且很超值的PPT模板"这个标题暗示了这是一份精选的PPT模板集合,具有高质量和实用性,并且可能价格适中或者免费,使得用户能够以较低的成本提升他们的演示文稿质量。 描述中的重复信息"好...

    ASA教程 绝对好东西

    ASA教程 ,明教教主出品,教主绝密资料,绝对好东西。一看就懂,五个文件,五天玩转ASA。 教主V5 87

    这一定是一个很的好东西

    标题中的“这一定是一个很的好东西”虽然没有明确指出具体是什么,但从标签“好”以及压缩包文件名称“web”可以推测,这可能是指一个与Web技术相关的优质资源或者工具。在IT行业中,Web技术是一个广泛且重要的领域...

    cad自学课件绝对好东西

    这个“cad自学课件绝对好东西”压缩包文件显然包含了用于自我学习CAD的相关材料,对于想要掌握CAD技能的人来说是一份宝贵资源。 在CAD自学过程中,通常会涉及以下几个关键知识点: 1. **CAD基础操作**:包括启动和...

    解Yx模板_好东西_

    "解Yx模板_好东西_"这个标题暗示我们这里有一个模板,可能用于编程或者数据分析,而"好东西"这个标签则表明它具有较高的实用价值。尽管描述中的信息较为模糊,但我们可以根据提供的压缩包子文件的文件名称来推测一些...

    压缩软件好东西

    【标题】:“压缩软件好东西” 在这个信息化时代,压缩软件成为了我们日常工作中不可或缺的工具,尤其是在文件传输和存储方面。标题中的“压缩软件好东西”简单地表达了对这类软件的高度评价。压缩软件能够将大体积...

    8人抢答器 这是一个好东西哦

    【标题】"8人抢答器 这是一个好东西哦" 这个项目是一个设计用于8名参赛者的抢答系统,其主要目的是在竞赛或问答活动中,确保公平竞争,让每个参与者都有平等的机会来回答问题。从提供的文件列表来看,我们可以推测...

    ASCII转换工具好东西

    5. **教育**:在教学环境中,ASCII码转换工具可以帮助学生更好地理解字符编码和二进制系统。 总的来说,"ASCII转换工具"是一个实用的辅助工具,能够方便用户在ASCII码和字符之间进行快速转换,并提供了一些额外的...

    格式工厂(好东西)

    在描述中提到的"好软件,十分实用,可以转换很多东西",这正是"格式工厂"的核心优势。它具备了强大的兼容性,能够处理市面上常见的多媒体文件格式,如MP4、AVI、WMV、MP3、WAV、JPEG、PNG等。对于那些在不同设备或...

    Word,PDF,PPT,TXT之间的转换方法(好东西,以后整理课件就不会那么麻烦了。。。)

    在IT行业中,文件格式转换是一种常见的需求,特别是在处理文档、演示文稿和文本时。以下是一些关于如何在Word、PDF、PPT和TXT之间进行转换的知识点: 1. **PPT转Word**: - **大纲视图法**:在PPT中选择“大纲”...

    哈哈~离散数学答案 好东西啊

    - 无法确定真假的陈述句:如“未来会更好。” ### 2. 简单命题与复合命题 - **简单命题**:不包含其他命题的命题称为简单命题。简单命题只包含一个基本的事实或判断,没有其他的逻辑结构。例如:“今天是星期五。...

    单片机好程序好东西

    ### 单片机好程序好东西 #### 一、Atmega16寄存器概述 在探讨Atmega16寄存器之前,我们先来了解下什么是寄存器。寄存器是微处理器中的高速存储单元,用于临时保存指令、数据和中间结果等。对于Atmega16这样的AVR...

    编译程序 好东西

    标题中的“编译程序 好东西”暗示了我们讨论的是与编译技术相关的知识,而编译程序是将高级编程语言转换为机器语言的重要工具。在这个过程中,我们需要理解一些核心概念,比如文法、符号表、推导以及跟隨集合...

    PDF转Word 互转等。。。

    完美的中文支持和原始版面转换,基本做到了百分百的原汁原味,转换的效果绝对好于SolidDocument和论坛之前看到的几个工具,好东西不得不分享。 绿色汉化版,无插件、无病毒,放心使用,附转换效果图 目前唯一发现的...

    pdf转换成word

    想把PDF文件里的好东西复制下来是一件很让人头疼的问题,现在有了这款PDF转DOC文档工具,问题就迎刃而解了。是一款非常好用的PDF转换工具,可以快速将PDF文件转换为doc(word文档)和RTF文件,还能够保留全部特性...

    把autocad转为pdf的好东西

    标题中的“把autocad转为pdf的好东西”指的是将AutoCAD设计的DWG或DXF格式文件转换成便携式文档格式(PDF)的过程。AutoCAD是一款广泛使用的计算机辅助设计软件,主要用于二维和三维图形设计。而转换为PDF文件可以...

    一个可以定时翻转图片的程序

    此外,"你也可以在view上添加东西"意味着用户不仅可以翻转图片,还可以在同一个view上添加其他UI元素,如按钮、标签等,使得整个界面更丰富。这样可以创建出交互性更强的应用,用户在欣赏翻转图片的同时,也能进行...

Global site tag (gtag.js) - Google Analytics