Filter开发

Filter开发
本章将详细介绍Filter的定义和作用,还将介绍如何配置Filter。将详细介绍Filter的生命周期,以及一些常用的Filter,如非法文字过滤器、字符编码过滤器以及登录验证过滤器。
通过本章的学习,读者应该能够完成如下几个目标。
熟练掌握如何定义并配置Filter
理解Filter的生命周期
熟练掌握如何添加非法文字过滤器
熟练掌握如何添加字符编码过滤器
熟练掌握如何添加登录验证过滤器

1.1Filter简介
Filter的中文译名为过滤器。从字面名称就可以看出来Filter是用来进行过滤的。借助于过滤器可以实现如下功能。
(1)过滤非法文字和信息。
(2)设置统一字符编码。
(3)对用户进行登录验证。
(4)改变图片文件格式。
(5)对相应做压缩处理。
(6)对XML的输出使用XSLT来进行转换。
在Servlet 2.3之后,如果要添加Filter只需在web.xml中配置相关设定即可。可以非常方便的为Web项目添加新的Filter和修改现有的Filter,而不需要修改原有的Servlet、JSP以及其他静态页面文件。

1.2第一个Filter程序
Filter同Servlet类似同样也是一个Java类,所以其添加方式和普通的Java类完全相同。自定义的Filter类必须实现Filter接口,还必须实现Filter接口中定义的init()方法、doFilter()方法和destroy()方法。
其中init()方法和destroy()方法分别用来初始化和销毁时调用。doFilter()方法用来实现过滤,所有的处理代码都放置在该方法中。doFilter()方法接受三个参数,分别是request、response和chain。其中request和response用来传递给下一个Filter(如果有多个Filter)或者JSP和Servlet。chain则通过调用其doFilter方法来调用下一个Filter,获得调用原始的JSP或者Servlet等其他内容。

1.3Filter生命周期
Filter同Servlet类似也具有生命周期。Filter从生成到销毁必须进过如下几个步骤。
(1)生成Filter,并通过调用其init()方法来进行初始化。
(2)过滤用户请求,调用其doFilter()方法。
(3)调用destroy()方法进行销毁,并通过垃圾收集器进行收集清理。

2 常用Filter
本节将介绍一些常用的Filter,如非法文字过滤器、字符编码过滤器、登录验证器。

2.1非法文字过滤器
实现非法文字过滤器非常简单,首先通过Filter类中doFilter()方法的request参数来获得客户端的输入。然后通过对输出的文字进行判断并进行处理,如替换该非法文字或者提示输出非法文字要求重新输出等等。最后通过chain的doFilter方法来调用下一个Filter,获得调用原始的JSP或者Servlet等其他内容。

2.2字符编码过滤器
可以通过Filter来定义一个字符编码过滤器,这时就不需要在每个JSP页面中添加设置参数字符编码格式代码了。

2.3登录验证过滤器
可以通过Filter来定义一个登录验证过滤器,这时就不需要在每个JSP页面中添加判断用户合法性代码了。

具体配置:

静态及默认通过文件路径配置
<!-- 訪問路徑過濾及session登录校验过滤 -->

<filter>
<filter-name>Filter</filter-name>
<filter-class>com.***.filter.FilterDemo</filter-class>
<init-param>
<param-name>allowed</param-name>
<param-value>***.jsp,***.jpg</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<!-- 字符转码 -->
<filter>
<filter-name>EncodChar</filter-name>
<filter-class>com.***.filter.EncodChar</filter-class>
<init-param>
<param-name>ChangeWord</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodChar</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

------------------java类-------------------------
public class FilterDemo implements Filter{
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {

*****
}

public void init(FilterConfig config) throws ServletException {

*****
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值