过滤器Filter
过滤器的概念:
1.过滤作用,对从客户端向服务器端发送的请求进行过滤,也可以对服务器端返回的响应进行处理。
2.它使用户可以改变一个request和修改一个 response.。
3.Filter 不是一个servlet,它不能产生一个response,但是它能够在一个request到达servlet之 前预处理request,也可以在 response离开servlet时处理response。换句话说,filter其实是客户端与servlet中间的一个传递者,并且它可以对要传递 的东西进行修改。
注意:过滤器是用来拦截请求和响应的,不能产生响应,而servlet是用来处理请求并产生响应的。
开发filter的两个基本步骤
1.编写java类实现Filter接口,并实现其 do Filter方法
do Fiter乱码处理好后,必须放行,若没放行,则会卡死
2.在 web.xml 文件中使用<filter>和<filter-mapping>元素对编写的filter类进行注册,并设置它所能拦截的资源。
web.xml/* :表示拦截所有的请求
Filter的三种典型应用:
1.可以在Filter中根据条件决定是否调用chain.doFilter(request, response)方法,即是否让目标资源执行
2.在让目标资源执行之前,可以对request\response作预处理,再让目标资源执行
3.在目标资源执行之后,可以捕获目标资源的执行结果,从而实现一些特殊的功能
Filter链:
在一个web工程中,可以开发编写多个Filter,这些Filter组合起来称之为一个Filter链.web服务器根据Filter在web.xml文件中的注册顺序,决定先调用哪个Filter,当第一个Filter的doFilter方法被调用时,web服务器会创建一个代表Filter链的FilterChain对象传递给该方法。在doFilter方法中,开发人员如果调用了FilterChain对象的doFilter方法,则web服务器会检查FilterChain对象中是否还有filter,如果有,则调用第2个filter,如果没有,则调用目标资源。
Filter的生命周期:
Filter的创建: 项目已发布,服务器启动
Filter的创建和销毁由WEB服务器负责。 web 应用程序启动时,web 服务器将创建Filter 的实例对象,并调用其init方法,完成对象的初始化功能,从而为后续的用户请求作好拦截的准备工作,filter对象只会创建一次,init方法也只会执行一次。通过init方法的参数,可获得代表当前filter配置信息的FilterConfig对象。
Filter的销毁: 服务器关闭
Web容器调用destroy方法销毁Filter。destroy方法在Filter的生命周期中仅执行一次。在destroy方法中,可以释放过滤器使用的资源。
FilterCfig接口:
例:
(一)处理网站的GET/POST请求乱码
1.编写java类,实现Filter接口
2.在web.xml 文件中配置<filter>和<filter-mapping>
(二)处理网站中未登陆访问需要登陆的地址(点击+拼接)
1.需要从sesion域中获取当前登陆状态,根据需要转型后,做出判断,指定相应限制条件
2.web.xml 配置, <url-pattern ></url-pattern> 配置相应网址地址,防止过滤失效
网友评论