【JavaEE企业应用实战学习记录】logFilter
package sanglp.servlet; import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException; /**
* Created by Administrator on 2016/10/5.
*/
@WebFilter(filterName = "log", urlPatterns={"/*"} )
public class LogFilter implements Filter { //用于访问Filter的配置信息
private FilterConfig config; @Override
public void init(FilterConfig filterConfig) throws ServletException {
this.config=filterConfig;
} @Override
public void destroy() {
this.config=null;
} @Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//对于用户请求进行预处理
//获取ServletContext对象 用于记录日志
ServletContext context=this.config.getServletContext();
long before=System.currentTimeMillis();
System.out.println("开始过滤");
//将请求转换成HttpServletRequest
HttpServletRequest hrequest=(HttpServletRequest) servletRequest;
//输出提示信息
System.out.println("Filter已经截获到用户的请求的地址"+hrequest.getServletPath());
//Filter只是链式处理,请求依然放到目的地址
filterChain.doFilter(servletRequest, servletResponse);
//响应执行后处理
long after=System.currentTimeMillis();
System.out.println("过滤结束");
System.out.println("请求被定位到"+hrequest.getRequestURI()+"所花的时间为:"+(after-before));
}
}
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企业应用实战学习记录】logFilter的更多相关文章
- 【JavaEE企业应用实战学习记录】optiontransferselect实现两个列表选择框
<%@ page contentType="text/html; charset=GBK" language="java"%> <%@tagl ...
- 【JavaEE企业应用实战学习记录】struts2实现登录并获取各个范围的数据
package sanglp; import com.opensymphony.xwork2.*; /** * Created by Administrator on 2016/10/6. */ pu ...
- 【JavaEE企业应用实战学习记录】struts配置文件详细解析
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-/ ...
- 【JavaEE企业应用实战学习记录】struts2登录
<%-- login.jsp Created by IntelliJ IDEA. User: Administrator Date: 2016/10/6 Time: 16:26 To chang ...
- 【JavaEE企业应用实战学习记录】struts国际化
<%-- Created by IntelliJ IDEA. User: Administrator Date: 2016/10/6 Time: 16:26 To change this tem ...
- 【JavaEE企业应用实战学习记录】servlet3.0上传文件
<%-- Created by IntelliJ IDEA. User: Administrator Date: 2016/10/6 Time: 14:20 To change this tem ...
- 【JavaEE企业应用实战学习记录】sessionListener
package sanglp.servlet; import javax.servlet.ServletContext; import javax.servlet.annotation.WebList ...
- 【JavaEE企业应用实战学习记录】requestListener
package sanglp.servlet; import javax.servlet.*; import javax.servlet.annotation.WebListener; import ...
- 【JavaEE企业应用实战学习记录】MyGetAttributeListener
package sanglp.servlet; import javax.servlet.ServletContext; import javax.servlet.ServletContextAttr ...
随机推荐
- Fatal error: Call-time pass-by-reference has been removed
下面的代码报错:Fatal error: Call-time pass-by-reference has been removed function myFunc($arg) { do somethi ...
- proteus 查找 仿真元件 中英文对照 [持续更新]
CRYSTAL 晶振 CAP 电容 RES 电阻 LED 灯 DIODE 二极管 POWER 电源 GND 接地 SPEAKER 扬声器 AT89C51 51 CPU芯片 三极管 PNP N ...
- 在DigitalOcean云主机上搭建SVN服务器
最近买了个DigitalOcean主机,顺便搭建个PPTP SVN服务器. 下面是搭建方法: https://www.digitalocean.com/community/tutorials/how- ...
- HADOOP HDFS的设计
Hadoop提供的对其HDFS上的数据的处理方式,有以下几种, 1 批处理,mapreduce 2 实时处理:apache storm, spark streaming , ibm streams 3 ...
- Team Foundation Server 15 功能初探
1. 系统安装 1.1. 系统需求 新版的TFS的系统要求发生了很大的变化,主要包含: - 不再支持32位的操作系统,只支持64位操作系统 - 只支持SQL 2014和SQL Server 2016, ...
- 谈谈Lucene和Solr索引存目录
在Lucene中,有几种索引存放模式呢?用过的人可能记得SimpleFSDirectory.MMapDirectory.NIOFSDirectory.RAMDirectory这四种.新版本的通过FSD ...
- 小机房的树 codevs 2370
2370 小机房的树 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 小机房有棵焕狗种的树 ...
- Hibernate之组件映射
1:为什么要使用组件映射 答:建立关系数据模型的一个重要原则是在不会导致数据冗余的前提下,尽可能减少数据库表的数目及表之间的外键参照关系.以员工信息为例,员工信息中有员工的家庭地址信息,如果把地址信息 ...
- MySQL sql语言的笔记
3 MySQL数据库 3.1 mysql数据存储结构 先数据库,再表,再有数据 4 数据库管理 4.1 查询所有数据库 mysql> show databases; +------------- ...
- 开发之UI篇
首先这里介绍一个软件一个插件,它们的主要功能是方便开发者看UI(如尺寸,颜色,大小等),两个配合使用 一. Sketch软件 1.Sketch 看ui图,还可以切图 2.Sketch 如何切图: 1 ...