- 1、本文档共84页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
jsp程序设计入门沈泽刚、秦玉平主编的javaweb第二版第08章Servlet高级应用讲解
8.2.1 什么是过滤器 过滤器(Filter)是Web服务器上的组件,它拦截客户对某个资源的请求和响应,对其进行过滤。图8-3说明了过滤器的一般概念,其中F1是一个过滤器。它显示了请求经过滤器F1到达Servlet,Servlet产生响应再经过滤器F1到达客户。这样,过滤器就可以在请求和响应到达目的地之前对它们进行监视。 8.2.1 什么是过滤器 可以在客户和资源之间建立多个过滤器,从而形成过滤器链(filter chain)。在过滤器链中每个过滤器都对请求处理,然后将请求发送给链中的下一个过滤器(如果它是链中的最后一个,将发送给实际的资源)。类似地,在响应到达客户之前,每个过滤器以相反的顺序对响应处理。图8-4说明了这个过程。 这里,请求是按下列顺序 处理的:过滤器F1、过滤 器F2、过滤器F3,而响应 的处理顺序是过滤器F3、 过滤器F2、过滤器F1。 1. 过滤器是如何工作的 当容器接收到对某个资源的请求时,它首先检查是否有过滤器与该资源关联。如果有过滤器与该资源关联,容器先把该请求发送给过滤器,而不是直接发送给资源。在过滤器处理完请求后,它将做下面三件事: (1)将请求发送到目标资源。 (2)如果有过滤器链,它将把请求(修改过或没有修改过)发送给下一个过滤器。 (3)直接产生响应并将其返回给客户。 当请求返回到客户时,它将以相反的方向经过同一组过滤器。过滤器链中的每个过滤器都可能修改响应。 2. 过滤器的用途 Servlet规范中提到的过滤器的一些常见应用包括: 验证过滤器 登录和审计过滤器 数据压缩过滤器 加密过滤器 XSLT过滤器 8.2.2 过滤器API 表8-4描述了javax.servlet包中与过滤器有关的三个接口。 1. Filter接口 Filter接口是过滤器API的核心,所有的过滤器都必须实现该接口。该接口声明了三个方法,分别是init()、doFilter()和destroy(),它们是过滤器的生命周期方法。 init()是过滤器初始化方法。在过滤器的生命周期中,init()仅被调用一次。在该方法结束之前,容器并不向过滤器转发请求。该方法的声明格式为: public void init(FilterConfig filterConfig) 参数FilterConfig是过滤器配置对象,通常将FilterConfig参数保存起来以备用。该方法抛出ServletException异常。 doFilter()是实现过滤的方法。如果客户请求的资源与该过滤器关联,容器将调用该方法,格式如下: public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException; 该方法执行过滤功能,对请求进行处理或者将请求转发到下一个组件或者直接向客户返回响应。注意,request和response参数被分别声明为ServletRequest和ServletResponse的类型。 1. Filter接口 过滤器并不只限于处理HTTP请求。但如果过滤器用在使用HTTP协议的Web应用程序中,这些变量就分别指HttpServletRequest和HttpServletResponse类型的对象。在使用它们之前应把这些参数转换为相应的HTTP类型。 destroy()是容器在过滤器对象上调用的最后一个方法,声明格式为: public void destroy(); 该方法给过滤器对象一个释放其所获得资源的机会,在结束服务之前执行一些清理工作。 1. Filter接口 2. FilterConfig接口 FilterConfig对象是过滤器配置对象,通过该对象可以获得过滤器名、过滤器运行的上下文对象以及过滤器的初始化参数。它声明了如下4个方法: public String getFilterName() public ServletContext getServletContext() public String getInitParameter(String name) public Enumeration getInitParameterNames() 容器提供了FilterConfig接口的一个具体实现类,容器创建该类的一个实例、使用初始化参数值对它初始化
您可能关注的文档
- 固结灌浆表样要点.doc
- JB4730.2射线检测__在实际工作中的应用讲解.ppt
- JBT9007.1-1999起重滑车型式,基本参数和尺寸讲解.doc
- JB4730《承压设备无损检测》超声检测(单独)讲解.ppt
- JCWT-010回填土检测委托单讲解.doc
- JD-1106-22型低压加热器检修技术标准讲解.doc
- JB-ZQ4176-2006滚子链及链轮的选择计算讲解.doc
- JCI国际医院质量认证讲解.doc
- JG26001型高压加热器检修技术标准讲解.doc
- JC30-01绞车使用说明书讲解.doc
- 第十一章 电流和电路专题特训二 实物图与电路图的互画 教学设计 2024-2025学年鲁科版物理九年级上册.docx
- 人教版七年级上册信息技术6.3加工音频素材 教学设计.docx
- 5.1自然地理环境的整体性 说课教案 (1).docx
- 4.1 夯实法治基础 教学设计-2023-2024学年统编版九年级道德与法治上册.docx
- 3.1 光的色彩 颜色 电子教案 2023-2024学年苏科版为了八年级上学期.docx
- 小学体育与健康 四年级下册健康教育 教案.docx
- 2024-2025学年初中数学九年级下册北京课改版(2024)教学设计合集.docx
- 2024-2025学年初中科学七年级下册浙教版(2024)教学设计合集.docx
- 2024-2025学年小学信息技术(信息科技)六年级下册浙摄影版(2013)教学设计合集.docx
- 2024-2025学年小学美术二年级下册人美版(常锐伦、欧京海)教学设计合集.docx
文档评论(0)