`
dengzhangtao
  • 浏览: 678829 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

servlet和filter的异同

阅读更多

以前总以为filter就是一种特殊servlet,所以他们在web.xml中配置因该是一样的,但是事实并非如此!


请看下文:

看Servelt规范: 

引用
A filter is a reusable piece of code that can transform the content of HTTP requests, responses, and header information. Filters do not generally create a response or respond to a request as servlets do, rather they modify or adapt the requests for a resource, and modify or adapt responses from a resource.



简要翻译下: 
filter是一个可以复用的代码片段,可以用来转换HTTP请求、响应和头信息。Filter不像Servlet,它不能产生一个请求或者响应,它只是修改对某一资源的请求,或者修改从某一的响应。 

再在看Filter的继承体系(不继承Servlet接口):
 

Java代码 
  1. public interface Filter  




所以第一个结论:Servlet和Filter没有关系!但是2者可以很好的协同工作。
 






还有不同的就是, servlet容器对url匹配过程

当一個请求发送到servlet容器中,容器就会將减去上下文的路径作为匹配servlet的映射url 。

比如  我我访问的是http://localhost:8088/test/aa.html.  servlet容器就谁去掉上下文test

得到/aa.html 这个就是servlet的映射url。 这个映射的过程还是有顺序的(这就和filter不同了下面会体会到)。


当一個servlet匹配成功后就不会在往下去匹配了, 。 其他还有其他的匹配规则:


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



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

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



4 ,对于filter ,它没有映射的路径,在配置文件中不需要写url,只需要写filter类就好了,不会像servlet那样只匹配一个servlet,因为filter的集合是一个链,所以只要考虑执行的顺序就可以,而不会出现只选择一个filter,写的每个filter都会执行Filter的处理顺序和filter-mappingweb.xml中定义的顺序相同。

 

1
0
分享到:
评论

相关推荐

    Javaweb期末考试题.pdf

    11. JSP和Servlet的异同:JSP是Servlet的扩展,更注重表现层,而Servlet主要处理业务逻辑。JSP中的代码可以与HTML混合,而Servlet中的Java代码独立。两者都用于构建Web应用,但角色和编程方式有所不同。JSP编译后会...

    Javaweb期末考试题参照.pdf

    **简答题**讨论了JSP和Servlet的异同: - **相同点**:两者都是Java技术,用于Web开发,能够处理HTTP请求并生成动态内容。 - **不同点**:JSP侧重于视图展示,而Servlet主要处理业务逻辑。Servlet的代码结构更为...

    Java实训教程 Java软件开发实战 web开发技术 第1章 http通讯协议介绍 共23页.pptx

    - **JSP与Servlet的区别**:比较两者之间的异同。 - **动态内容生成**:使用JSP生成动态Web内容。 #### 第5章 Filter - **Filter概念**:介绍Filter的作用及工作原理。 - **Filter配置**:配置Filter的规则和顺序。...

    工学院java复习.pdf

    本文将深入探讨几个关键概念:POST和GET请求的区别、Cookie与Session的对比、请求转发与重定向的异同、过滤器(Filter)的作用、Servlet事件监听器的应用以及JDBC的基本操作步骤。\n\n1. POST与GET请求的区别\nPOST...

    mybatis_01szrz.rar

    - **请求处理**:学习如何使用Servlet或Filter来处理HTTP请求,并调用MyBatis进行数据库操作。 - **数据绑定**:了解MyBatis的自动数据绑定机制,如@Param和@Result注解,以及如何将表单数据自动映射到Java对象。 ...

    jvaa面试宝典

    - Servlet:Servlet生命周期,doGet()和doPost()方法,以及Filter和Listener的配置与使用。 - JSP:JSP内置对象,EL表达式,以及JSTL标签库的应用。 - JDBC:数据库连接,SQL语句的执行,事务管理,以及预编译的...

    Java Web开发学习路线图(JBoss Seam方向)

    1. **Servlet**:学会编写Servlet,掌握在Web.xml中配置Servlet的URI,以及Filter和Listener的使用。 2. **JSP**:理解JSP的引入原因及其与Servlet的关系,学会在JSP中嵌入Java代码,了解Taglib的使用方法,这可能...

    Java面经-百度准入职老哥整理(八股文)

    - **装饰器模式**:掌握装饰器模式的应用,如Servlet Filter的实现。 - **代理模式**:了解静态代理和动态代理,如Java的InvocationHandler。 6. **网络编程**: - **Socket通信**:理解TCP和UDP协议,掌握...

    Java学习路线图.pdf

    - **后端技术**:JDBC、事务处理、三层架构、Servlet、Filter、JSP、EL、JSTL、MVC、分页。 13. **数据库MySQL**: - **SQL语言**:学习DML(增删改查)操作,理解数据库设计原则,使用索引和存储过程,创建视图...

    java开发面试宝典----中级

    - **集合接口**:如List、Set、Map等,掌握它们之间的异同。 - **实现类**:ArrayList、LinkedList、HashSet、HashMap等,熟悉它们的特点及适用场景。 - **迭代器**:Iterator接口的基本用法及其在遍历集合中的作用...

    java面试题题库详解

    - **Servlet、Filter、Listener:** 定义和配置这些组件。 #### 41. Java中的会话管理技术 **知识点概述:** - **Session:** 存储用户会话信息。 - **Cookie:** 存储在客户端的小型文本文件。 - **会话管理:** ...

    最新Java面试大全

    - **请求到达**:首先由Filter进行预处理。 - **分发请求**:ActionServlet根据配置分发到相应的Action。 - **处理请求**:Action处理业务逻辑。 - **响应结果**:返回结果视图。 #### 15. 软件开发生命周期 - **...

    java基础125道笔试题

    - StringBuilder与StringBuffer的异同。 - 字符串拼接的方法。 - 字符串查找与替换的功能。 - 正则表达式的使用。 #### 8. 集合框架 **描述:** Java集合框架提供了丰富的数据结构支持,了解这些集合的特性和应用...

Global site tag (gtag.js) - Google Analytics