JavaEE企业应用实战学习记录Filter
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaEE企业应用实战学习记录Filter相关的知识,希望对你有一定的参考价值。
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的主要内容,如果未能解决你的问题,请参考以下文章
JavaEE企业应用实战学习记录authorityFilter
JavaEE企业应用实战学习记录requestListener
JavaEE企业应用实战学习记录sessionListener