过滤器
作用:
- 对服务器接受的请求资源和响应给浏览器的资源进行管理
- 保护servlet
使用
- 创建一个Filter接口的普通java类
- 复写接口的方法
init() 服务器启动的时候自动调用‘’
doFilter() 主动调用chain.doFilter放行
destory() 服务器关闭的时候自动调用 - 在web.xml中配置过滤器,使服务器自动调用过滤器
<filter>
<filter-name>myFilter</filter-name>
<filter-class>edu.yjsj.filter.Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
以上为单个web.xml配置文件,其中
- url-pattern:/*表示拦截所有的请求
- url-pattern:*.do表示拦截所有.do结尾的请求,一般进行模块化拦截处理
- url-pattern:/ts 表示拦截指定servlet的请求
过滤器生命周期
服务器启动到关闭
执行
浏览器发起请求到服务器,服务器接收到请求后,根据uri在web.xml中找到对应的过滤器执行doFilter方法,该方法对此次请求经行处理后如果符合要求则放行,放行后如果还有符合要求的过滤器则继续过滤,最终找到对应的servlet进行请求处理,service方法执行后还会返回到对应的doFilter方法中。
案例
- 统一编码格式
- session管理
- 权限管理
- 资源管理(同一水印,和谐词汇等等)
- 。。。
//设置编码格式
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
//session管理
HttpSession hs = ((HttpServletRequest)request).getSession();
if(hs.getAttribute("user") == null) {
((HttpServletResponse)response).sendRedirect("/login.jsp");
}else {
//放行
chain.doFilter(request, response);
}
以上是学习过程积累,有问题欢迎指教