`
aben328
  • 浏览: 1453584 次
  • 性别: Icon_minigender_1
  • 来自: 广东
社区版块
存档分类

Servlet和filter是J2EE开发中常用的技术

    博客分类:
  • web
阅读更多

Servlet和filter是J2EE开发中常用的技术,使用方便,配置简单,老少皆宜。

  估计大多数朋友都是直接配置用,也没有关心过具体的细节,今天遇到一个问题,上网查了servlet的规范才发现,servlet和filter中的url-pattern还是有一些文章在里面的,总结了一些东西,放出来供大家参考,以免遇到问题又要浪费时间。

  一、servlet容器对url的匹配过程:

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

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

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

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

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

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

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

  二、url-pattern详解

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

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

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

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

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

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

分享到:
评论

相关推荐

    J2EE应用开发详解

    50 4.2 开发和部署一个简单的Servlet 51 4.3 Servlet常用API介绍 53 4.3.1 Servlet实现相关 54 4.3.2 Servlet配置相关 54 4.3.3 Servlet异常相关 55 4.3.4 请求和响应相关 55 4.3.5 会话跟踪 56 4.3.6 Servlet上下文...

    javax.servlet.jar下载

    javax.servlet.Filter.class javax.servlet.FilterConfig.class javax.servlet.ServletRequestAttributeListener.class javax.servlet.ServletRequestAttributeEvent.class javax.servlet.GenericServlet.class ...

    SpringBoot 注册自己的Servlet(三种方式)(源代码)

    主体框架基于spring,而spring除了Ioc(依赖注入)、Aop(切面)外,其它与http相关的东西都是基于Servlet和Filter的,而Servlet、Filter是servlet容器Jetty按照j2ee标准做了具体实现。目前使用Spring的,更多是在...

    J2EE中关于web.xml文件的配置

    "J2EE 中关于 web.xml 文件的配置" 在 J2EE 中,web.xml 文件扮演着非常重要的角色,它是一个基于 XML 的配置文件,用于描述 Web 应用的各个方面的配置信息。通过 web.xml 文件,我们可以对 Web 应用进行配置,例如...

    J2EE中文版指南 CHM格式 带全文检索

    第10章 Java Servlet技术 153 什么是Servlet? 153 有关Servlets的例子 153 处理错误 155 处理servlet生命周期事件 156 指定事件监听类 157 处理错误 157 共享信息 157 使用域对象 157 控制共享资源的并发入口 158 ...

    学生信息管理系统J2EE JSP+Servlet+FELTER+DAO+C3P0

    用到的技术servlet、jsp、JavaScript、bootstrap、filter处理编码和防止用户不登录访问其他页面,等等。 里面的.sql文件,是导出的数据库信息。 部署链接:http://shaohjz.site:8080/StudentManageSystem/

    论文研究-基于Servlet Filter的访问控制过滤器插件 .pdf

    基于Servlet Filter的访问控制过滤器插件,汪克炎,龙毅宏,对于部署在互联网上的J2EE Web应用系统,用户的安全访问是至关重要的。本文介绍使用Servlet Filter技术设计一种可插入的、可扩展的、对��

    JAVA J2EE 类库文档

    J2EE 类库文档 All Classes Cookie Filter FilterChain FilterConfig GenericServlet HttpServlet HttpServletRequest HttpServletRequestWrapper HttpServletResponse HttpServletResponseWrapper ...

    J2EE面试题

    3:说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法 4:如何给weblogic指定大小的内存?如何设定的weblogic的热启动模式(开发模式)与产品发布模式? 三,代码题 1:请写出JavaMail发送...

    基于Servlet的在线蛋糕店管理系统

    本项目是基于J2EE的Servlet的在线蛋糕店管理系统,本项目有三种权限:游客、用户、管理员。 游客:浏览查看商品、注册登录 用户:浏览查看商品、加入购物车、我的订单、结算订单 管理员:管理员管理、用户管理、商品...

    教务管理系统源码+项目说明(javaweb项目)(运行环境window系统,Apache Tomcat v7.0.84).zip

    教务管理系统源码+项目说明(javaweb项目)(运行环境:window系统,Apache Tomcat v7.0.84、JDK1.8 开发环境:J2EE eclipse、navicat for mysql 运用的技术:MVC设计模式、DAO模式、Servlet、JSP、Filter).zip ...

    中文岂能乱码(J2EE)

    亲切的口吻,简洁的方式,全面介绍了JAVA技术中出现中文乱码的解决方案

    J2EE 宠物店例子.doc

    1.1 系统架构统览 3 1.2 宠物店网上商店 3 1.2.1 宠物店走一遭 3 ...1.2.7.3 宠物店的过滤器(filter) 24 1.2.7.4 宠物店的xml文件 24 1.2.7.5 异步信息发送 25 1.2.7.6 数据产生Servlet 25 1.3 资源和引用 25

    用装饰模式装饰HttpServletRequest对象

    装饰模式是Erich Gamma等人所著的《设计模式:可利用面向对象软件的基础》一书中众多模式之一。一般来说,此模式在设计Swing的...最后,文章通过实现一个删除空白符的Filter例子,演示了装饰模式在Servlet中的使用。

    Sun J2EE 宠物店完整项目案例

    1.1 系统架构统览 3 ...1.2.7.3 宠物店的过滤器(filter) 24 1.2.7.4 宠物店的xml文件 24 1.2.7.5 异步信息发送 25 1.2.7.6 数据产生Servlet 25 1.3 资源和引用 25 SUN公司提供的编程参考,绝对标准和规范的代码

    新豆网上商城、购物车项目

    GWAP2.0定位: ... 3、基础J2EE开发结构的技术与应用框架的开发技术的关系 4、Servlet/JSP/标准指令/标准动作/TagLib/TagFile/EL/Filter/Listener Struts框架 :JSF(标准框架JSF,第三方框架struts)

    java常用API大全4

    CoreReferenceJS15.chm/CSSFilter2.0_DOC_...

    教务管理系统javaweb项目 运行环境:window系统,Apache Tomcat v7.0.84、JDK1.8 开发环境:

    教务管理系统javaweb项目 运行环境:window系统,Apache Tomcat v7.0.84、JDK1.8 开发环境:J2EE eclipse、navicat for mysql 运用的技术:MVC设计模式、DAO模式、Servlet、JSP、Filter、MySQL数据库 该项目主要分为...

    模仿天猫商城

    项目使用了J2EE+Servlet+Filter+JSP+mysql来开发的,纯碎的java基础技术,不采用常用框架,掌握了这部分知识就相当于java已经入门了

Global site tag (gtag.js) - Google Analytics