Filter的使用

WEB-INF\classes\LogFilter.java

package sadhu;
import javax.servlet.annotation.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
/**
	Filter过滤类
	实现对用户请求进行处理,登陆、权限验证等。然后决定是否可以放行,也可以对请求或者响应的参数进行修改。
*/

@WebFilter(filterName="log",urlPatterns={"/*"})
public class LogFilter implements Filter
{
	private FilterConfig config;
	//实现初始化方法
	public void init(FilterConfig config)
	{
		this.config = config;
	}
	//实现销毁方法
	public void destroy()
	{
		this.config = null;
	}
	//执行过滤的核心方法
	public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws IOException,ServletException
	{
		//获取ServletContext对象,用户记录日志
		ServletContext context = this.config.getServletContext();
		long before = System.currentTimeMillis();
		System.out.println("开始过滤...");
		//将请求转换成HttpServletRequest请求
		HttpServletRequest hrequest = (HttpServletRequest)request;
		System.out.println("Filter已经获取用户的请求的地址:"+hrequest.getServletPath());
		//Filter只是链式处理,请求依然放行到目的地址(允许通过)
		chain.doFilter(request,response);
		long after = System.currentTimeMillis();
		System.out.println("过滤结束");
		System.out.println("请求被定为到"+hrequest.getRequestURL()+"  所花的时间为:"+(after-before));
	}
}

通过javac命令编译到classes目录中

WEB-INF\web.xml

<?xml version="1.0" encoding="utf-8" ?>
<web-app version="2.5" xmls="http://java.sun.com/xml/ns/j2ee" xmls:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd">
	<filter>
		<!-- 过滤器名字 -->
		<filter-name>log</filter-name>
		<!-- 指定的处理类 -->
		<filter-class>sadhu.LogFilter</filter-class>
		<!-- 可以为过滤器进行配置参数 -->
		<init-param>
			<param-name>encoding</param-name>
			<param-value>GBK</param-name>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>log</filter-name>
		<!-- 哪些Servlet使用过滤,*代表全部 -->
		<url-pattern>/*</url-pattern>
	</filter-mapping>
</web-app>

index.jsp

<%@ page contentType="text/html;charset=GBK" language="java" %>
<%@ taglib uri="http://www.sadhu.com/jsp2-taglib" prefix="mytag" %>

<html>
	<head>
		<title>动态属性标签的练习</title>
	</head>
	<body>
		<mytag:myTag name="sadhu" url="sadhu.com" />
		<%
			System.out.println("页面");
		%>
	</body>
</html>

tomcat控制台输出:

开始过滤...

Filter已经获取用户的请求的地址:/index.jsp

页面

过滤结束

请求被定为到http://localhost:8080/Sample/index.jsp  所花的时间为:520


你可能感兴趣的:(Filter的使用)