java_过滤器、监听器_拦截器_原理个人总结

过滤器创建一个Filter 只需两个步骤:(1)创建Filter 处理类:(2)在web.xml 文件中配置Filter 。

创建Filter 必须实现javax.servlet.Filter 接口,在该接口中定义了三个方法。

• void init(FilterConfig config): 用于完成Filter 的初始化。

• void destroy(): 用于Filter 销毁前,完成某些资源的回收。

• void doFilter(ServletRequest request, ServletResponse response,FilterChain chain): 实现过滤功能,该方法就是对每个请求及响应增加的额外处理。

过滤器Filter也具有生命周期:init()->doFilter()->destroy(),由部署文件中的filter元素驱动。

在servlet2.4中,过滤器同样可以用于请求分派器,但须在web.xml中声明,<dispatcher>INCLUDE或FORWARD或REQUEST或ERROR</dispatcher>该元素位于filter-mapping中。

一、理解Struts2拦截器1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现.解析:--------------------------------------------------------------------------------------------拦截器和AOP的关系拦截器与AOP (Aspect Orient Program ,面向切面编程)是密切相关的,AOP 从程序运行角度来考虑程序的流程,取得业务处理过程的切面,在特定切面通过系统自动插入特定方法。

AOP 面向的是程序运行中各个步骤,以一种松耦合方式来组合业务处理的各个步骤。

AOP 3 个重要概念:●目标对象:包含被拦截方法的原始对象。

●被插入的处理方法:定义在拦截器中,会在被拦截方法之前、之后自动执行的方法●代理对象:以目标对象为蓝本,由系统创建的新对象在上面3 个概念中,被插入的处理方法不能独立存在,因为方法必须有一个存在的载体:这个载体就是拦截器,拦截器就是包含处理方法的特殊实例代理对象也称为AOP 代理,就是由系统动态生成的一个对象,该对象将代替目标对象来使用,AOP 代理包含了目标对象的全部方法。

但AOP 代理中的方法与目标对象的方法存在差异:AOP 方法在特定切面插入拦截器方法,在处理之间回调目标对象的方法,从而实现了在执行目标方法之前或者之后调用拦截器方法,仿佛拦截器拦截了原有的目标方法一样。

2. 拦截器栈(Interceptor Stack)。

Struts2拦截器栈就是将拦截器按一定的顺序联结成一条链。

在访问被拦截的方法或字段时,Struts2拦截器链中的拦截器就会按其之前定义的顺序被调用。

二、实现Struts2拦截器原理Struts2拦截器的实现原理相对简单,当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对的拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器三、定义Struts2拦截器。

Struts2规定用户自定义拦截器必须实现com.opensymphony.xwork2.interceptor.Interceptor接口。

该接口声明了3个方法,其中,init和destroy方法会在程序开始和结束时各执行一遍,不管使用了该拦截器与否,只要在struts.xml中声明了该Struts2拦截器就会被执行。

intercept方法就是拦截的主体了,每次拦截器生效时都会执行其中的逻辑。

不过,struts中又提供了几个抽象类来简化这一步骤。

都是模板方法实现的。

其中AbstractInterceptor提供了init()和destroy()的空实现,使用时只需要覆盖intercept()方法;而MethodFilterInterceptor则提供了includeMethods和excludeMethods两个属性,用来过滤执行该过滤器的action的方法。

可以通过param来加入或者排除需要过滤的方法。

一般来说,拦截器的写法都差不多。

看下面的示例:四、配置Struts2拦截器Struts2拦截器需要在struts.xml中声明,如下struts.xml配置文件拦截器与过滤器的区别:1. 拦截器是基于java的反射机制的,而过滤器是基于函数回调。

2. 拦截器不依赖与servlet容器,过滤器依赖与servlet容器。

3. 拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。

4. 拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。

5. 在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次监听器概述1.Listener是Servlet的监听器2.可以监听客户端的请求、服务端的操作等。

3.通过监听器,可以自动激发一些操作,如监听在线用户数量,当增加一个HttpSession时,给在线人数加1。

4.编写监听器需要实现相应的接口5.编写完成后在web.xml文件中配置一下,就可以起作用了6.可以在不修改现有系统基础上,增加web应用程序生命周期事件的跟踪3.HttpSessionListener 常用接口监听HttpSession的操作。

当创建一个Session时,激发session Created(SessionEvent se)方法;当销毁一个Session时,激发sessionDestroyed (HttpSessionEvent se)方法。

4.HttpSessionAttributeListener监听HttpSession中的属性的操作。

当在Session增加一个属性时,激发attributeAdded(HttpSessionBindingEvent se) 方法;当在Session删除一个属性时,激发attributeRemoved(HttpSessionBindingEvent se)方法;当在Session属性被重新设置时,激发attributeReplaced(HttpSessionBindingEvent se) 方法。

使用范例:由监听器管理共享数据库连接生命周期事件的一个实际应用由context监听器管理共享数据库连接。

在web.xml中如下定义监听器:<listener><listener-class>XXX.MyConnectionManager</listener-class></listener> ?server创建监听器的实例,接受事件并自动判断实现监听器接口的类型。

要记住的是由于监听器是配置在部署描述符web.xml中,所以不需要改变任何代码就可以添加新的监听器。

public class MyConnectionManager implements ServletContextListener{public void contextInitialized(ServletContextEvent e) {Connection con = // create connectione.getServletContext().setAttribute("con", con);public void contextDestroyed(ServletContextEvent e) {Connection con = (Connection) e.getServletContext().getAttribute("con");try {con.close();}catch (SQLException ignored) { } // close connection}}监听器保证每新生成一个servlet context都会有一个可用的数据库连接,并且所有的连接对会在context关闭的时候随之关闭。

计算在线用户数量的Linstener(1)Package xxx;public class OnlineCounter {private static long online = 0;public static long getOnline(){return online;public static void raise(){online++;}public static void reduce(){online--;}}import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;public class OnlineCounterListener implements HttpSessionListener{ public void sessionCreated(HttpSessionEvent hse) {OnlineCounter.raise();}public void sessionDestroyed(HttpSessionEvent hse){OnlineCounter.reduce();}}在需要显示在线人数的JSP中可是使用目前在线人数:<%@ page import=“xxx.OnlineCounter" %><%=OnlineCounter.getOnline()%>退出会话(可以给用户提供一个注销按钮):<form action="exit.jsp" method=post><input type=submit value="exit"></form>exit.jsp: <%session.invalidate() ;%>在web.xml中加入:<listener><listener-class>servletlistener111111.SecondListener</listener-class> </listener>。

合集下载

javaweb中监听器、过滤器、拦截器以及AOP的先后顺序和理解

javaweb中监听器、过滤器、拦截器以及AOP的先后顺序和理解

javaweb中监听器、过滤器、拦截器以及AOP的先后顺序和理解java web三⼤器:过滤器、拦截器、监听器(spring框架)spring、springMVC与springBoot的关系详见:⼀、启动顺序监听器---》过滤器---》拦截器案例理解:接到上级命令,要求对电话进去监听,过滤出恐怖分⼦,然后,拦截他们的恐怖袭击⾏动。

配置位置:监听器、过滤器⼀般配置在web.xml中,拦截器⼀般配置在springmvc.xml配置⽂件中⼆、概念监听器:Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener接⼝的服务器端程序,它也是随web应⽤的启动⽽启动,只初始化⼀次,随web应⽤的停⽌⽽销毁。

主要作⽤是:做⼀些初始化的内容添加⼯作、设置⼀些基本的内容、⽐如⼀些参数或者是⼀些固定的对象等等Filter过滤器:过滤器拦截web访问url地址。

严格意义上讲,filter只是适⽤于web中,依赖于Servlet容器,利⽤Java的回调机制进⾏实现。

Filter过滤器:和框架⽆关,可以控制最初的http请求,但是更细⼀点的类和⽅法控制不了。

过滤器可以拦截到⽅法的请求和响应(ServletRequest request, ServletResponse response),并对请求响应做出像响应的过滤操作,⽐如设置字符编码,鉴权操作等⽐如:(不是login.do的地址请求,如果⽤户没有登陆都过滤掉),或者在传⼊servlet或者struts的action前统⼀设置字符集,或者去除掉⼀些⾮法字符。

主要为了减轻服务器负载,减少压⼒。

Interceptor拦截器:拦截器拦截以 .action结尾的url,拦截Action的访问。

Interfactor是基于Java的反射机制(APO思想)进⾏实现,不依赖Servlet容器。

拦截器可以在⽅法执⾏之前(preHandle)和⽅法执⾏之后(afterCompletion)进⾏操作,回调操作(postHandle),可以获取执⾏的⽅法的名称,请求(HttpServletRequest)Interceptor:可以控制请求的控制器和⽅法,但控制不了请求⽅法⾥的参数(只能获取参数的名称,不能获取到参数的值)(⽤于处理页⾯提交的请求响应并进⾏处理,例如做国际化,做主题更换,过滤等)。

Java三大器之监听器(Listener)的工作原理和代码演示

Java三大器之监听器(Listener)的工作原理和代码演示

Java三大器之监听器(Listener)的工作原理和代码演示现在来说说Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener 接口的服务器端程序,它也是随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。

主要作用是:做一些初始化的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等等。

首先来看一下ServletContextListener接口的源代码:[java] view plain copyprint?1.public abstract interface ServletContextListener extends E ventListener{2.public abstract void contextInitialized(ServletContextEven t paramServletContextEvent);3.public abstract void contextDestroyed(ServletContextEvent paramServletContextEvent);4.}下面利用监听器对数据库连接池DataSource的初始化演示它的使用:ListenerTest.java[java] view plain copyprint?1.import javax.servlet.ServletContext;2.import javax.servlet.ServletContextEvent;3.import javax.servlet.ServletContextListener;4.import mons.dbcp.BasicDataSource;5./**6.* 现在来说说Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener 接口的7.* 服务器端程序,它也是随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。

Java三大器之拦截器(Interceptor)的实现原理及代码示例

Java三大器之拦截器(Interceptor)的实现原理及代码示例

Java三⼤器之拦截器(Interceptor)的实现原理及代码⽰例1,拦截器的概念java⾥的拦截器是动态拦截Action调⽤的对象,它提供了⼀种机制可以使开发者在⼀个Action执⾏的前后执⾏⼀段代码,也可以在⼀个Action执⾏前阻⽌其执⾏,同时也提供了⼀种可以提取Action中可重⽤部分代码的⽅式。

在AOP中,拦截器⽤于在某个⽅法或者字段被访问之前,进⾏拦截然后再之前或者之后加⼊某些操作。

⽬前,我们需要掌握的主要是Spring的拦截器,Struts2的拦截器不⽤深究,知道即可。

2,拦截器的原理⼤部分时候,拦截器⽅法都是通过代理的⽅式来调⽤的。

Struts2的拦截器实现相对简单。

当请求到达Struts2的ServletDispatcher时,Struts2会查找配置⽂件,并根据配置实例化相对的拦截器对象,然后串成⼀个列表(List),最后⼀个⼀个的调⽤列表中的拦截器。

Struts2的拦截器是可插拔的,拦截器是AOP的⼀个实现。

Struts2拦截器栈就是将拦截器按⼀定的顺序连接成⼀条链。

在访问被拦截的⽅法或者字段时,Struts2拦截器链中的拦截器就会按照之前定义的顺序进⾏调⽤。

3,⾃定义拦截器的步骤第⼀步:⾃定义⼀个实现了Interceptor接⼝的类,或者继承抽象类AbstractInterceptor。

第⼆步:在配置⽂件中注册定义的拦截器。

第三步:在需要使⽤Action中引⽤上述定义的拦截器,为了⽅便也可以将拦截器定义为默认的拦截器,这样在不加特殊说明的情况下,所有的Action都被这个拦截器拦截。

4,过滤器与拦截器的区别过滤器可以简单的理解为“取你所想取”,过滤器关注的是web请求;拦截器可以简单的理解为“拒你所想拒”,拦截器关注的是⽅法调⽤,⽐如拦截敏感词汇。

4.1,拦截器是基于java反射机制来实现的,⽽过滤器是基于函数回调来实现的。

(有⼈说,拦截器是基于动态代理来实现的)4.2,拦截器不依赖servlet容器,过滤器依赖于servlet容器。

listener、filter、servlet内存马原理

listener、filter、servlet内存马原理

listener、filter、servlet内存马原理Listener、Filter、Servlet内存马原理引言随着Web应用程序的快速发展,保护Web应用程序的安全性变得越来越重要。

然而,Web应用程序中的安全漏洞却层出不穷,其中包括内存马(memshell)的攻击方式。

内存马指的是一种攻击技术,通过在服务器内存中注入恶意代码来获取对服务器的控制权。

本文将围绕Listener、Filter和Servlet这三个核心组件展开讨论,探究内存马攻击在这些组件中的原理及防御措施。

一、Listener的基本原理在Java Web应用程序中,Listener是一种用于监听Web应用程序中特定事件的组件。

它可以监听ServletContext(应用程序级别)、HttpSession(会话级别)和ServletRequest(请求级别)等不同级别的事件。

当某个事件发生时,Listener可以执行预定义的操作。

1.1 Listener的注册和触发在Web应用程序启动时,容器会根据部署描述文件(web.xml)中的配置自动注册Listener。

当发生事件时,容器会触发相应的事件监听器进行处理。

1.2 Listener内存马原理攻击者可以通过Listener注入恶意代码来执行恶意操作。

具体来说,攻击者将恶意代码编写到一个实现了特定监听器接口的类中,并将该类的实例注册到应用程序中。

当事件触发时,容器会调用相应的监听器方法。

如果存在恶意代码,它将被执行,并可能对服务器进行攻击,如获取敏感信息、操纵服务器配置等。

1.3 Listener的防御措施为了保护Web应用程序免受Listener注入攻击,我们可以采取以下措施:- 避免使用不必要的Listener:只注册需要的Listener,避免不必要的风险。

- 对注册的Listener进行严格审查:审查应用程序中注册的Listener代码,确保它们不包含任何可疑的操作。

- 限制Listener的执行权限:使用安全策略文件(security policy)对Listener的执行权限进行限制,仅允许它们执行必要的操作。

Java过滤器详细文档,简介,实例,应用

Java过滤器详细文档,简介,实例,应用

Java过滤器详细⽂档,简介,实例,应⽤简介Filter也称之为过滤器,它是Servlet技术中最激动⼈⼼的技术,WEB开发⼈员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图⽚⽂件或静态 html ⽂件等进⾏拦截,从⽽实现⼀些特殊的功能。

例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等⼀些⾼级功能。

Filter技术是servlet 2.3新增加的功能。

它能够对Servlet容器的请求和响应对象进⾏检查和修改。

Filter本⾝并不⽣成请求和响应对象,只是提供过滤功能。

Filter能够在Servlet被调⽤之前检查Request对象,并修改Request Header和Request内容;在Servlet被调⽤之后检查Response对象,修改Response Header和Response的内容。

Filter可以过滤的Web组件包括Servlet,JSP和HTML等⽂件。

Servlet API中提供了⼀个Filter接⼝,开发web应⽤时,如果编写的Java类实现了这个接⼝,则把这个java类称之为过滤器Filter。

通过Filter技术,开发⼈员可以实现⽤户在访问某个⽬标资源之前,对访问的请求和响应进⾏拦截。

2.Filter的⼯作原理当客户端发出Web资源的请求时,Web服务器根据应⽤程序配置⽂件设置的过滤规则进⾏检查,若客户请求满⾜过滤规则,则对客户请求/响应进⾏拦截,对请求头和请求数据进⾏检查或改动,并依次通过过滤器链,最后把请求/响应交给请求的Web资源处理。

请求信息在过滤器链中可以被修改,也可以根据条件让请求不发往资源处理器,并直接向客户机发回⼀个响应。

当资源处理器完成了对资源的处理后,响应信息将逐级逆向返回。

同样在这个过程中,⽤户可以修改响应信息,从⽽完成⼀定的任务。

两个过滤器同时过滤⼀个请求时,就要⽤到过滤链FilterChain。

javaweb中过滤器的实现方法及过程。

javaweb中过滤器的实现方法及过程。

在Web开发过程中,过滤器是一种重要的组件,它可以拦截用户请求并对请求进行预处理或后处理。

在JavaWeb开发中,通过过滤器可以实现诸如登入验证、字符编码转换、请求日志记录等功能。

本文将介绍javaweb中过滤器的实现方法及过程。

二、过滤器的概念及作用过滤器是Servlet规范中的一种组件,它可以截获HTTP请求和响应,对它们进行过滤操作,然后将请求和响应传递给下一个过滤器链或目标资源。

过滤器的主要作用包括:1. 验证用户登入状态:通过过滤器可以实现登入验证功能,对未登入用户禁止访问某些资源;2. 数据过滤与校验:可以对请求参数进行过滤和校验,防止恶意攻击;3. 字符编码转换:通过过滤器可以统一对请求和响应的字符编码进行转换,保证数据的一致性;4. 请求日志记录:可以通过过滤器记录用户的请求信息,用于排查问题或优化系统。

三、过滤器的实现方法1. 实现Filter接口要实现一个过滤器,首先需要创建一个类并实现javax.servlet.Filter接口,该接口中有三个主要的方法需要实现,分别为:- init()方法:在过滤器被初始化时调用,可以在此方法中进行一些初- doFilter()方法:对请求进行过滤处理的核心方法,可以在此方法中对请求和响应进行操作;- destroy()方法:在过滤器被销毁时调用,可以在此方法中进行资源释放操作。

2. 配置过滤器在web.xml中配置过滤器,需要在<web-app>标签内添加<filter>和<filter-mapping>标签,分别用来配置过滤器和过滤器映射,示例配置如下:```xml<filter><filter-name>LoginFilter</filter-name><filter-class.example.filter.LoginFilter</filter-class></filter><filter-mapping><filter-name>LoginFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>```以上配置表示将名为LoginFilter的过滤器映射到所有的URL请求上。

java web拦截器配置及原理

java web 过滤器(2013-03-01 10:04:24)本人转载收藏ServletFilter,Servlet过滤器:Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术可以对web服务器管理的所有web资源:Jsp, Servlet, 静态图片文件或静态html 文件等进行拦截,从而实现一些特殊的功能。

例如实现URL 级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。

ServletAPI提供了一个Filter接口,实现这个接口的Servlet就是一个过虑器。

过虑器在WEB应用访问流程中如下:由图可见,只要我们编写了过滤器,可以对一切访问WEB应用的连接进行过滤。

比如,用户访问权限、统一WEB编码…Filter是如何实现拦截的?实现了Filter接口的Servlet是过滤器,因为Filter接口有一个doFilter(ServletRequest request, ServletResponse response, FilterChain chain)方法,只要用户访问我们在web.xml中配置的映射目录,服务器便会调用过滤器的doFilter方法。

我们在这里实现过虑功能代码,当我们调用chain.doFilter(request, response);方法时,将请求反给服务器服务器再去调用相当的Servlet。

如果我们不调用此方法,说明拒绝了用户的请求。

Filter开发入门:在WEB应用中添加一个过滤器,有两步工作需要完成:1.编写实现了Filter接口的Servlet——过滤器。

2.在web.xml中配置过滤器:(1). 标签添加器(2). 注册过滤器的映射目录(过滤目录),与注册Servlet一样。

在实际WEB应用中,我们可能需要编写多个过虑器,比如:1.统一WEB编码的过滤器(过虑所有访问)2.用户访问权限管理。

这样,用户的访问需要选经过过滤器1过滤然后再经过过滤器2过滤。

过滤器和监听器

案例1:统一设置字符集案例2:拦截URL,不登录不允许直接访问页面监听器监听器顾名思义就是监听某种事件的发生,即当某个事件发生时,就触发了某个设置好的监听器,但是这里触发的原因不同。

例如地震监测仪器监听地震的发生,大气监测仪,监测空气的变化以提供预警。

在servlet中因监听对象的不同也分为不同的监听器,这里指的监听对象是application、session对象,每种对象有各自的监听器。

1.application监听器:ServletContextListener需要实现的方法:(1)public void contextInitialized(ServletContextEvent e); //在application创建时就调用(2)public void contextDestroyed(ServletContextEvent e); //当application销毁时调用ServletContextEvent的getServletContext()方法可以取得application对象;创建完成监听器后需要在web.xml中做如下配置标签是单独出现的包含一个子标签,指定了监听类的全称(包名+类名)2.application属性监听器:ServletContextAttributeListener需要实现的方法:(1)public void attributeAdded(ServletContextAttributeEvent e); //当调用application.setAttribute()时调用(2)public void attributeRemoved(ServletContextAttributeEvent e); //当调用applcaition.removeAttribute()时调用(3)public void attributeReplaced(ServletContextAttributeEvent e); //当调用两次application.setAttribute()赋予相同属性时调用参数ServletContextAttributeEvent可以获得触发该监听器的属性名称和属性值,方法有:(1)getName(); 取得属性的名称;(2)getValue(); 取得属性的值;(注意:返回的是Object,必须转型)3.session监听器:HttpSessionListener需要实现的方法:(1)public void sessionCreated(HttpSessionEvent e); //当打开一个浏览器时,就会触发这个方法;(2)public void sessionDestroyed(HttpSessionEvent e); //当调用session.invalidate();或超时时调用HttpSessionEvent的方法getSession()获得触发监听器的session对象;销毁session常用的有2种方式:(1)session.invalidate();//直接销毁(2)在web.xml中设置超时时间://所有session起作用<session-config><session-timeout>5</session-timeout><!-- 5分钟 --></session-config>注意:如果会话超时时间设置为-1,则表示会话永远不会超时;4.session属性监听器:HttpSessionAttributeListener需要实现的方法:(1)public void attributeAdded(HttpSessionBindingEvent e); //当调用session.setAttribute()时调用(2)public void attributeRemoved(HttpSessionBindingEvent e); //当调用session.removeAttribute()时调用(3)public void attributeReplaced(HttpSessionBindingEvent e); //当调用两次session.setAttribute()赋予相同属性时调用HttpSessionBindingEvent 方法:(1)getSession();//获取触发监听器的session(2)getName();//获取属性名称(3)getValue();//获取属性值监听器应用场景 ServletContextListener:在任何Servlet提供服务之前执行、在Servlet销毁时执行,用于提前初始化一些资源,比如数据库连接、销毁一些资源,比如数据库连接;ServletContextAttributeListener:上下文中添加、删除、替换了属性;HttpSessionListener:多少个在线用户,即跟踪会话;HttpSessionAttributeListener:会话属性添加、删除、替换;综合案例:做一个网站在线人数统计,可以通过ServletContextListener监听,当Web应用上下文启动时,在ServletContext中添加一个List.用来准备存放在线的用户名,然后通过HttpSessionAttributeListener监听,当用户登录成功,把用户名设置到Session中。

Java_Filter过滤机制详解

Java Filter过滤机制详解以前以为Filter只是一个特殊点的Servlet,用进只需在web.xml中配置一下拦截路径就可以了,可经过这两天的深入学习,才知道以前对Filter类的了解和使用都太过浅薄了。

在网上看了很多篇相关的技术文章,现提取它们中的精髓(我认为能说明问题的东西)及我个人的一些学习经验作如下总结,希望能帮助大家更好地理解Filter 的过滤机制。

要学习Filter,就必须先理解和掌握servlet的调用机制和流程。

关于servlet,网上也有很多相关文章,大家若有不明白的可以到百度中搜一下,我这里为了突出重点就不多说了。

好,下面进入正题。

一、什么是FilterFilter技术是servlet2.3新增加的功能.servlet2.3是sun公司与2000年10月发布的,它的开发者包括许多个人和公司团体,充分体现了sun公司所倡导的代码开放性原则.由于众多的参与者的共同努力,servlet2.3比以往功能都强大了许多,而且性能也有了大幅提高.它新增加的功能包括:1.应用程序生命周期事件控制;2.新的国际化;3.澄清了类的装载规则;4.新的错误及安全属性;5.不赞成使用HttpUtils类;6.各种有用的方法;7.阐明并扩展了几个servlet DTD;8.filter功能.其中最重要的就是filter功能.它使用户可以改变一个request和修改一个response.Filter不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理request,也可以在离开servlet时处理response.换种说法,filter其实是一个”servlet chaining”(servlet链).一个filter包括:1.在servlet被调用之前截获;2.在servlet被调用之前检查servlet request;3.根据需要修改request头和request数据;4.根据需要修改response头和response数据;5.在servlet被调用之后截获.你能够配置一个filter到一个或多个servlet;单个servlet或servlet组能够被多个filter使用.几个实用的filter包括:用户辨认filter,日志filter,审核filter,加密filter,符号filter,能改变xml内容的XSLT filter等.一个filter必须实现javax.servlet.Filter接口定义的三个方法:doFilter、init 和destroy。

Java过滤器的使用和拦截排除的实现

本文由我司收集整编,推荐下载,如有疑问,请与我司联系Java 过滤器的使用和拦截排除的实现2016/08/11 0 Java 过滤器的使用和拦截排除的实现本文将对如下几个内容作出讲解与说明:web.xml 的简单介绍filter 的工作原理filter 的实现拦截排除的实现和说明web.xml 简单介绍在Java 开发中,我们每天都有跟拦截器打交道,但是很多人对filter 到底是个什么东西可能并没有做深入的了解,包括对web.xml 中的servlet、servlet-Mapping、filter、filter-mapping 都很陌生,那么现在我们可以简单的交流一下。

servlet servlet servlet-name A /servlet-name servlet-classcom.test.TestServlet/servlet-class /servlet servlet-mapping servlet-name A /servlet-name url-pattern /a.do /url-pattern /servlet-mapping servlet 上表达的意思就是声明一个名字A 的servlet,对应的实现类com.test.TestServlet。

servlet-mapping 表达的意思是,当一个请求后缀为a.do 的http 请求发送过来以后,该请求会调用名字为A 的servlet,换句话说就是执行TestServlet 来处理该请求。

filter 有了上面servlet 的理解,我们理解filter 就更加方便。

请看如下简单配置。

filter filter-name SessionFilter /filter-name filter-class com.demo.test.util.SessionFilter /filter-class init-param param-name excludedPages/param-name param-value /index.jsp /param-value !-- 匹配不做拦截的请求声明-- /init-param /filter filter-mapping !-- 拦截的请求类型-- filter-name SessionFilter/filter-name url-pattern /index.jsp /url-pattern /filter-mapping 上面的filter 表达的意思是声明一个名字叫做SessionFilter 的过滤器,该过滤器的具体实现对应com.demo.test.util.SessionFilter。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档