zoukankan      html  css  js  c++  java
  • 【JavaEE企业应用实战学习记录】logFilter

     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

  • 相关阅读:
    P1219 N皇后(位运算&普通dfs)
    P1434 滑雪(记忆化搜索)
    P1118 数字三角形(技巧)
    P1162 填涂颜色
    P1141 01迷宫
    P2685抓牛(bfs)
    WordPress ‘crypt_private()’方法远程拒绝服务漏洞
    java获取网页源码
    tomcat报错: Error parsing HTTP request header
    空指针异常的原因
  • 原文地址:https://www.cnblogs.com/dream-to-pku/p/5933039.html
Copyright © 2011-2022 走看看