WEB28_Filter

什么是Filter?

过滤器:等于说是一次次的检查.

比如古代,我们从西北进京面圣,这中间需要经过多个关卡,来检验你是否可以通过,而且有的官员还想让你在圣上面前美言几句,贿赂你,于是你又多了一项任务,帮他美言几句.这些关卡就是Filter.

Filter的作用:

最直接的,我们可以在Filter中来修改request的所有的编码方式,本来是ios-8859-1的我们直接就改成utf-8.这里的修改request的编码方式就类似与贿赂...                                                                                                                                                                                  

如何使用?

项目结构

两步走:

1.在filter包中建一个类并实现Filter类,并实现其方法2.

2.在web.xml中注册Filter

看过之后,你会发现其实跟Servlet的注册差不多.

注意,多个filter先走哪个时,是先走fiter-mapping在前边的那个!

主要复习以下<url-pattern>这个标签的范围规范:

/*是项目下全部

/animal/*:animal文件夹下的全部

*.jsp:全部的jsp后缀的文件

可以看到,首先走的是关卡--Filter 然后才面圣--Servlet

而ServletContext早已经创建完成了!

注意:在Filter里实现的方法:最重要的是doFilter(),其余两个一个是初始化,一个是销毁,不怎么用.而doFilter方法就类似与关卡的城墙,我们要打开城门放人出去就应该调用,FilterChain arg2.doFilter(arg0,arg1)这个方法,切记,如果不调用这个方法的话,不论如何都无法到达我们的Servlet了!一定要调用!!!!!

可以实现的功能:

1.实现自动登录:

业务逻辑:首次,登录的用户,在servlet中判断是否勾选了自动登录,如果勾选了,我们就将用户名与密码通过Cookie持久化存储,这里要设置Cookie的持久化时间与持久化保存位置,然后建立一个Filter,该Filter管理的位置是全局,即/*.然后我们在Filter中将实现的doFilter方法的ServletRequest对象强转成HttpServletRequest对象,然后获取Session与Cookie.获取Session是为了取出自动登录的账户与密码时,保存在Session域中方便后面的网页使用,而Cookie是为了看看是否有可以自动登录的用户存在.

如果有,并存在了Session中,接下来的页面直接使用EL表达式${account}就可以获得到Session中的account

2.实现全局乱码的解决:

业务逻辑:我们每次在request中使用中文时,要修改request的编码,这里我们可以直接在Filter中修改request的编码类型然后再doFilter(request,response)中将修改了编码类型的request传给下面

发布了94 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_38827988/article/details/88928325