《JSP2.0技术手册》读书笔记三-Filter

Filter,即过滤器了,很形象地说明了它的作用-在结果发生前获得控制做出相应操作,主要是改变一个请求或修改一个响应。具体运用情况如下:

1. 统一的认证处理。 2. 对用户的请求做检查、做更精确的记录。

3. 监视或对用户所传递的参数做前置处理。 4. 改变图像文件的格式

5. 对响应做编码的动作 6. 对响应做压缩处理

7. 对xml的输出使用xslt来转换

想要清楚地明白它在web应用中的位置和作用,就需要了解它的运作方式,下图较为形象:

由图可知:

1。一个响应或请求是经由过滤链层层转发的。一个Filter做完处理后,调用FilterChain.doFilter()来转送给其他Filter做处理。

2。Filter可以在request到达servlet或Jsp之前预处理请求,也可以在响应到达客户端前处理响应。

3。当客户端发出web资源请求时,web服务器根据web.xml设置的过滤规则进行检查,若客户请求满足过滤规则,则对客户请求/响应进行拦截,对请求头和请求数据进行检查或改动,并依次通过过滤器链,最后把请求/响应交给请求的web资源处理。

补:Filter做完处理后一般使用FilterChain.doFilter()来让其他Filter继续过滤。但也可以调用RequestDispatcher的forward()、include()方法转发请求,RequestDispatcher对象可由HttpServletRequest.getRequestDispatcher(uri)得到。还可以使用HttpServletResponse的sendRedirect(uri)、sendError(int statusCode)或sendError(int statusCode,String msg)来做出相应。

Filter可以处理不同的请求,这需要在web.xml中设置,如下:

 

REQUEST:只有当用户直接对网页做出请求的动作时,通过此Filter。一般默认情况为REQUEST。

FORWARD:当用户的请求是通过RequestDispatcher.forward()方法时,通过此Filter。

INCLUDE:当用户的请求是通过RequestDispatcher.include方法时,通过此Filter。还必须把<url-pattern>改成<servlet-name>,意思是当请求从servlet-name指定的servlet发出并且通过requestdispatcher.include()时,才通过此Filter。

ERROR:当用户的请求是通过错误机制处理的时候,通过此Filter。

我们来了解下RequestDispatcher接口。通常可用获得一个requestDispatcher对象,封装由一个特定的URL定义的服务器资源。从客户端接收请求,然后发给服务器端的可用资源(servlet/JSP等)。通常是通过HttpServletRequest.getRequestDispatcher(uri)来获得具体对象。forward(request,response)方法用来从生成它的servlet向其他资源传递请求;include(request,response)方法用来包括发送给其他服务器端资源的响应的内容。

Filter的使用:

1. 所有过滤器都必须实现javax.servlet.Filter接口。此接口中方法有:

1.1 public void init(FilterConfig config):当Filter被加载时执行。FilterConfig可用获得web.xml定义的该过滤器的名字-config.getFilterName(),可以获得ServletContext对象、web.xml设定的过滤器初始参数(param-name,param-value)。

1.2 public void doFilter(ServletRequest,ServletResponse,FilterChain):可以对请求和响应做处理,然后调用filterChain.doFilter()将控制权传给下一个Filter。若此Filter已为过滤链中最后一个过滤器,则运行最初请求的servlet或jsp。

1.3 public void destroy():当doFilter执行完毕就会调用此方法,释放资源,一般不需要使用。

2. 在web.xml中配置此过滤器的过滤规则。

 

我们经常用过滤器来进行访问权限控制、编码处理等。下面就举一个最实用的例子,解决乱码!

        首先定义过滤器SetCharacterEncodingFilter,它是tomcat自带的一个类,可以在网上找到源代码,引入到项目中就可使用了,现贴出代码如下:

 

其次就是配置过滤规则了:

 

真是太舒服了!这比任何其他解决中文乱码问题的办法都有效简洁!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
书名:JSP 2.0 技术手册(电子书) 格式:PDF 出版:电子工业出版社 作者:林上杰、林康司 本书图文并茂,以丰富的实例为引导,全面介绍了主流的 Java Web 开发技术—— JSP 2.0,重点介绍Java在展示层的两项重要技术:Java Servlet与JavaServer Pages。 它们是最重要的 Java 核心技术。对这两项技术的深入了解,将有助于您未来对于 JavaServer Faces(JSF)技术以及Java Web Services技术的学习 目录 第一章 安装执行环境 1-1 安装 J2SDK 1.4.2 1-2 安装 Tomcat 5.0.16 1-3 安装 JSPBook 站台范例 1-4 安装 Ant 1.6 第二章 Servlet 2.4 简介 2-1 Servlet 简介 2-2 First Servlet Sample Code 2-3 Servlet 的生命周期 2-4 Servlet 范例程序 2-5 Servlet 2.4 的新功能 第JSP 2.0 简介 3-1 JavaServer Pages 技术 3-2 What is JSP 3-3 JSP 与 Servlet 的比较 3-4 JSP 的执行过程 3-5 JSP 与 ASP 和 ASP+ 的比较 3-6 JSP 2.0 新功能 第四章 JSP 语法 4-1 Elements 和 Template Data 4-2 批注(Comments) 4-3 Quoting 和 Escape 规则 4-4 Directives Elements 4-5 Scripting Elements 4-6 Action Elements 4-7 错误处理 第五章 隐含对象(Implicit Object) 5-1 属性( Attribute ) 与范围( Scope ) 5-2 与 Servlet 有关的隐含对象 5-3 与 Input / Output 有关的隐含对象 5-4 与 Context 有关的隐含对象 5-5 与 Error 有关的隐含对象 第六章 Expression Language 6-1 EL 简介 6-2 EL 语法 6-3 EL 隐含对象 6-4 EL 算术运算符 6-5 EL 关系运算符 6-6 EL 逻辑运算符 6-7 EL 其他运算符 6-8 EL Functions 第七章 JSTL 1.1 7-1 JSTL 1.1 简介 7-2 核心标签库(Core tag library) 7-3 I18N 格式标签库(I18N-capable formatting tags library) 7-4 SQL 标签库(SQL tag library) 7-5 XML 标签库(XML tag library) 7-6 函数标签库(Functions tag library) 第八章 JSP 与 JavaBean 8-1 JavaBean 的简介 8-2 JSP 与 JavaBean 8-3 JavaBean 的范围 8-4 JavaBean 的移除 第九章 网页窗体的处理 9-1 HTML 窗体如何传送数据 9-2 窗体中常见的输入类型 9-3 JSP 处理窗体 9-4 文件上传—— Oreilly 上传组件 9-5 jspSmartUpload ——上传和下载 9-6 本文区输入类型(Textarea) 第十章 Session Tracking 10-1 Stateful & Stateless 10-2 Session Tracking 的四种方法 10-3 Session 的生命周期 10-4 HttpSessionBindingListener 接口 10-5 Shopping Cart 范例程序一 10-6 Shopping Cart 范例程序二 第十一章 Filter 与 Listener 11-1 Filter 简介 11-2 Filter 的运作方式 11-3 实现阶段第一个 Filter 11-4 对请求做统一的认证处理 11-5 ServletRequest 和 ServletResponse 之 Wrapper 类 11-6 使用 Filter 来解决中文问题 11-7 Listener 接口简介 11-8 ServletContext Listener 11-9 HttpSession Listener 11-10 ServletRequest Listener 第十二章 JSP 执行环境与开发工具 12-1 Tomcat 5.0 的介绍 12-2 JSP 开发工具介绍 12-3 Eclipse 简介与安装 12-4 使用 Eclipse 开发 Hello
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值