Java Web_第7章_过滤器

上传人:仙*** 文档编号:246749228 上传时间:2024-10-15 格式:PPT 页数:16 大小:1.65MB
返回 下载 相关 举报
Java Web_第7章_过滤器_第1页
第1页 / 共16页
Java Web_第7章_过滤器_第2页
第2页 / 共16页
Java Web_第7章_过滤器_第3页
第3页 / 共16页
点击查看更多>>
资源描述
中国人,abc,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Servlet,过滤器,回顾,三个作用域对象:,ServletContext,、,ServletRequest,和,HttpSession,接口,对于同一个客户的多个请求,,Session,会跨这些请求持久存储,设置在上下文和会话作用域中的对象,会非常消耗系统资源,请求作用域范围仅仅作用在与一个请求相关的两个资源之间,ServletContext,监听器用于管理应用程序,JVM,级别保存的资源或状态,HTTP,会话监听器用于管理从同一客户端或用户发送的一系列请求的资源或状态。,Request,请求监听器用于管理,Request,请求生命周期内的状态,目标,过滤器的基本概念,过滤器,API,开发和配置过滤器的步骤,过滤器链,过滤器概述,一个中间组件,用于拦截源数据和目的数据之间的消息,过滤二者之间传递的数据,Web,应用上的过滤器,驻留在,Web,服务器上的,Web,组件,过滤从客户端传递到服务器端的请求和响应,过滤请求和响应,可以更改请求的内容,或者重新设置请求头,然后再将请求传递给目标资源,可以对响应的内容进行更改,然后再将响应发送回客户端,在,Web,应用程序中部署过滤器,对客户端和目标资源来说都是透明的,他们并不需要知道过滤器的存在。,Web,应用上部署多个过滤器,过滤器可以组成一个过滤器链。链中的每个过滤器负责特定的操作和任务,客户端的请求和响应在这些过滤器之间传递,过滤器的一些常见应用,:,1,:认证过滤:对用户请求进行统一的认证。,2,:登录和审核过滤:对用户的访问请求进行记录和审核。,3,:图像转换过滤:转换图像格式。,4,:数据压缩过滤:对用户发生的数据进行压缩,从而减少传输量。,5,:加密过滤:对请求和响应进行加密解密处理。,6,:令牌过滤,7,:资源访问触发事件过滤,8,:,XSLT,过滤,9,:,MIME-type,过滤,过滤器示例,所有的过滤器必须实现,javax.servlet.Filter,接口,public class,HelloWorldFilter,implements Filter,private,FilterConfig,filterConfig,;,public void,init(FilterConfig,filterConfig,),this.filterConfig,=,filterConfig,;,public void,doFilter,(,ServletRequest,request,ServletResponse,response,FilterChain,filterChain,)throws,ServletException,IOException,PrintWriter,pw,=,response.getWriter,();,public void,destroy,(),代码与实现,Servlet,的代码类似,也体现了过滤器的生命周期,过滤器部署,将编译好的,class,文件放置在,Web,应用程序的,classes,目录下,在部署文件,web.xml,中添加过滤器的注册与映射,HelloWorldFilter,com.lovobook.HelloWorldFilter,HelloWorldFilter,/*,发出请求:,http,:/localhost:8080/lovobook/,输入任意路径过滤器都会执行,过滤器,API,由容器实现的接口,javax.servlet.Filter,javax.servlet.FilterChain,javax.servlet.FilterConfig,四个包装器类,javax.servlet.ServletRequestWrapper,javax.servlet.ServletResponseWrapper,javax.servlet.http.HttpServletRequestWrapper,javax.servlet.http.HttpServletResponseWrapper,在请求送到过滤器链的下一个组件之前更改请求的内容或者改变从前一个组件接收的响应,Filter,接口,Filter,接口是过滤器,API,的核心,方法,描述,void,init(FilterConfig,),在应用程序启动时,由容器调用,void,doFilter(ServletRequest,ServletResponse,FilterChain,),对于每个,URL,映射到该过滤器的请求,由容器调用该方法。,void destroy(),在应用程序关闭时,由容器调用。,1.,过滤器的生命周期方法,过滤器,API,不提供,Filter,接口的任何实现,自定义的过滤器必须明确地实现所有三个方法,2.,容器仅调用过滤器实例的,init(),方法一次。在,init(),方法没有执行完前,容器不会转发任何请求到过滤器,3.doFilter(),方法给过滤器对象一个机会来处理请求,转发请求到过滤器链中的下一个组件,或者自己回复客户端,FilterConfig,接口,为过滤器提供初始化参数,由,Servlet,容器实现,方法,描述,String,getFilterName,(),返回在部署描述文件中指定的过滤器的名称,String,getInitParameter(String,),返回在部署描述文件中指定的参数的值,Enumeration,getInitParameterNames,(),返回在部署描述文件中指定的所有参数的名称。,ServletContext,getServletContext,(),返回,Web,应用程序的,ServletContext,。过滤器可以使用,ServletContext,设置、获取,application,范围内的属性。,FilterChain,接口,由容器实现,将请求传递到过滤器链的下一个组件,方法,描述,void,doFilter,(,ServletRequest,ServletResponse,),我们从一个过滤器对象的,doFilter,(),方法中调用此方法,以继续过滤器链的传递过程。它会将控制转到链中的下一个组件。,这个组件可能是另一个过滤器,如果过滤器是过滤器链中最后一个过滤器,那么这个组件就是目标的资源,配置,Filter,元素,ValidatorFilter,com.lovobook.filters.ValidatorFilter,locale,USA,与,Servlet,的初始化参数相同,配置,Filter,元素,所有匹配到该,URL,定义的请求,都要被,filter-name,中定义的过滤器过滤。,servlet,-name,用于定义一个,servlet,名,所有对该,servlet,的访问都要被,filter-name,中定义的过滤器过滤,过滤器对应的请求方式,可以是,REQUEST,、,INCLUDE,、,FORWARD,、,ERROR,四种之一,默认是,REQUEST,ValidatorFilter,*.doc,ValidatorFilter,reportServlet,配置过滤器链,用多个过滤器处理在同一个请求,使用多个,元素配置过滤器链,相同映射的过滤器执行顺序按照它们在部署描述文件中出现的顺序排序,首先调用匹配请求,URI,的过滤器,再查找用,Servlet,名匹配请求,URI,的所有过滤器,FilterA,RedServlet,FilterB,*.red,RedServlet,*.red,容器会先调用匹配请求,URI,的过滤器,然后才是匹配,servlet,名的过滤器。因此,,FilterB,始终在,FilterA,之前调用,总结,过滤器是驻留在,Web,服务器上的,Web,组件,它可以过滤从客户端传递到服务器端的请求和响应,可以部署多个过滤器,这些过滤器组成一个过滤器链,过滤器,API,包括,Filter,、,FilterConfig,、,FilterChain,三个接口,过滤器的包装器类可以更改请求和响应的内容,过滤器生命周期包括初始化、过滤、销毁三个阶段,部署描述文件中使用,和,元素进行配置,过滤器链中容器会先调用匹配请求,URI,的过滤器,然后才是匹配,servlet,名的过滤器,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!