(一)Filter

   在Java EE中,Filter是一个可以将请求和响应的头部或内容进行转换的一个对象.包括

   (1)认证Filter

     (2)日志和审核Filter
     (3)图片转换Filter
     (4)数据压缩Filter
     (5)密码Filter
     (6)令牌Filter
     (7)触发资源访问事件的Filter
     (8)XSLT Filter
    (9)媒体类型链Filter

   Filter可以执行的主要任务如下:

     1. 查询请求,并采取相应的行动

    2. 阻止任何深层次的请求-响应.

     3.修改请求和响应的头和数据.

   Filter的API由Filter,FilterChain,FilterConfig定义.Filter类有三个方法,init(),destory()以及定义Filter功能的doFilter()

(二)定义使用

  1.通过web.xml定义

  2.javad代码中,可以通过实现一个Filter接口来定义一个Filter.

  3.使用@webFilter注释在web应用程序中定义一个过滤器.

    具体定义方法参照 https://blog.csdn.net/flowingflying/article/details/60956507

(三)LogFilter

  记录客户IP ,访问URI 以及消耗时间

package com.helloweenvsfei.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; public class LogFilter implements Filter { private Log log = LogFactory.getLog(this.getClass()); private String filterName;
  //定义
public void init(FilterConfig config) throws ServletException { // 获取 Filter 的 name,配置在 web.xml 中
filterName = config.getFilterName(); log.info("启动 Filter: " + filterName); } public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res; long startTime = System.currentTimeMillis();
String requestURI = request.getRequestURI();
//获取请求需要的URI
requestURI = request.getQueryString() == null ? requestURI : (requestURI + "?" + request.getQueryString());
//链接至下一个Filter
chain.doFilter(request, response); long endTime = System.currentTimeMillis(); log.info(request.getRemoteAddr() + " 访问了 " + requestURI + ", 总用时 "
+ (endTime - startTime) + " 毫秒。"); }
  //销毁
public void destroy() {
log.info("关闭 Filter: " + filterName);
} } 源代码:https://blog.csdn.net/flowingflying/article/details/60959618

最新文章

  1. 模拟淘宝购物,运用cookie,记录登录账号信息,并且记住购物车内所选的商品
  2. ABAP 一个隐藏 selection-screen block的实例
  3. Hive 安装配置
  4. Largest Number || LeetCode
  5. Python学习笔记--XML的应用
  6. Shell上传文件到ftp
  7. UVA12186--树型DP
  8. hbase 单机安装问题
  9. java通过JDBC链接SQLServer2012【转载!!!超详细】
  10. MySQL开启binlog并且保存7天有效数据
  11. python小总结4(文件)
  12. mysql之用户管理
  13. 计算机基础:计算机网络-socket编程
  14. Linux驱动之同步、互斥、阻塞的应用
  15. Sudo的用法和Visudo设置
  16. nodejs连接数据库的增删改查
  17. django admin 导出数据简单示例
  18. sql逻辑查询 理论知识
  19. 读《像计算机科学家一样思考python》——笔记
  20. const 用法全面总结

热门文章

  1. 如何使用postman传数组数据
  2. [原][飞行仿真]helios与dcs world安装,详尽教程
  3. CSS3 3D图片立方体旋转
  4. 请为CMyString类型编写构造函数、copy构造函数、析构函数和赋值运算符函数。
  5. js的点滴
  6. 在IIS中如何配置SSL(https)
  7. postman(十):配置jenkins自动发送邮件(邮件包含测试报告)
  8. zoj3223
  9. 20165309 《网络对抗技术》实验一:PC平台逆向破解
  10. mui预加载