码迷,mamicode.com
首页 > 编程语言 > 详细

【JavaEE企业应用实战学习记录】Filter

时间:2016-10-05 22:16:52      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

 1 package sanglp.servlet;
 2 
 3 import javax.servlet.*;
 4 import javax.servlet.annotation.WebFilter;
 5 import javax.servlet.http.HttpServletRequest;
 6 import java.io.IOException;
 7 
 8 /**
 9  * Created by Administrator on 2016/10/5.
10  */
11 @WebFilter(filterName = "log", urlPatterns={"/*"} )
12 public class LogFilter  implements Filter {
13 
14     //用于访问Filter的配置信息
15     private FilterConfig config;
16 
17 
18     @Override
19     public void init(FilterConfig filterConfig) throws ServletException {
20         this.config=filterConfig;
21     }
22 
23     @Override
24     public void destroy() {
25         this.config=null;
26     }
27 
28     @Override
29     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
30         //对于用户请求进行预处理
31         //获取ServletContext对象  用于记录日志
32         ServletContext context=this.config.getServletContext();
33         long before=System.currentTimeMillis();
34         System.out.println("开始过滤");
35         //将请求转换成HttpServletRequest
36         HttpServletRequest hrequest=(HttpServletRequest) servletRequest;
37         //输出提示信息
38         System.out.println("Filter已经截获到用户的请求的地址"+hrequest.getServletPath());
39         //Filter只是链式处理,请求依然放到目的地址
40         filterChain.doFilter(servletRequest, servletResponse);
41         //响应执行后处理
42         long  after=System.currentTimeMillis();
43         System.out.println("过滤结束");
44         System.out.println("请求被定位到"+hrequest.getRequestURI()+"所花的时间为:"+(after-before));
45     }
46 }

Filter:用于处理对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。
使用Filter完整的流程是:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理,
Filter用处:
在HttpServletRequest到达Servlet之前,拦截客户的HttpServletRequest
根据需要检查HttpServletRequest,也可以修改HttpServletRequest头和数据
在HttpServletResponse到达客户端之前,拦截HttpServletResponse
根据需要检查HttpServletResponse,也可以修改HttpServletResponse头和数据
Filter有如下几个种类:
用户授权的Filter:Filter负责检查用户请求,根据请求过滤用户非法请求
日志Filter:详细记录某些特殊的用户请求
负责解码的Filter:包括对非标准编码的请求解码
能改变XML内容的XSLT Filter等
Filter可拦截多个请求或响应,一个请求或响应也可以被多个Filter拦截
创建一个Filter:
创建Filter处理类,->实现javax.servlet.Filter借口
web.xml文件中配置Filter

【JavaEE企业应用实战学习记录】Filter

标签:

原文地址:http://www.cnblogs.com/dream-to-pku/p/5933039.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!