过滤器小分析
过滤器有字面意思可知就是进行过滤,过滤掉不要的东西。
过滤器(Filter):就是对Web资源进行拦截,然后再进入到下一个过滤器或servlet处理,可是一个非常棒的技术
过滤器的操作是双向的,都是用来拦截request进行处理的,也可以对返回的response进行拦截处理。
简单视图:通过A、B、C、D四个过滤器进行层层过滤
简单要用到到过滤器的地方:
登录的时候
为了防止乱码,去统一设置编码格式
确定是否有访问权限控制
创建一个Filter:
在Servlet中我们一般都会对request和response中的字符集编码进行配置,还有在网页界面给数据库添加数据,如果过多字符集编码发生变化时修改起码会很麻烦,这些通用的字符集编码配置等工作我们可以放到Filter中来就会比较简单快捷许多。
创建完成之后会自动为我们重写好
//@WebFilter("/*" //拦截所有资源 ) 需要进行拦截的资源
// destroy()方法一般用重写
//doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)方法中进行过滤操作,然后交给下一个过滤器。 常用代码有获取请求、获取响应、获取session、放行、设置编码格式等等
// init(FilterConfig config)方法可以获得初始化参数,一般不用重写
1、Filter的创建
Filter的创建由服务器负责。当服务器启动时,服务器将创建Filter的实例对象,并调用其init方法,完成对象的初始化功能,init方法也只会执行一次。
2、所有的拦截操作在doFilter方法里进行,
3、当关闭服务器是调用destroy方法销毁。destroy方法在Filter的生命周期中仅执行一次。
简单的小例子
对登录页面进行拦截
@WebFilter("/*")
public class