filter过滤器简单实例

package com.test.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class FirstFilter implements Filter{

	//FilterConfig可用于访问Filter的配置信息
	private FilterConfig config;
	@Override
	public void destroy() {
		this.config = null; 
	}

	@Override  
    public void doFilter(ServletRequest request, ServletResponse response,   
            FilterChain chain) throws IOException, ServletException { 
		
		//获取ServletContext对象,用于记录日志
		ServletContext context = this.config.getServletContext(); 
		long before = System.currentTimeMillis();
		HttpServletRequest req = (HttpServletRequest) request;
		HttpServletResponse resp = (HttpServletResponse) response;
		HttpSession session = req.getSession();;
		String url = req.getRequestURI();
		String queryString = req.getQueryString();  
		String fullPath = url + queryString;  
		if (fullPath.equals(session.getAttribute("fullPath"))) {
			long middleTime = System.currentTimeMillis();
			if (middleTime - (Long.parseLong(session.getAttribute("before").toString()))<5000) {
				System.out.println("重复提交");
			}
		}
		session.setAttribute("before", before);
		session.setAttribute("fullPath", fullPath);
//        System.out.println("before invoke firstFilter's chain.doFilter() ..");   
        chain.doFilter(req, resp);   
//        System.out.println("after invoke firstFilter's chain.doFilter() ..");  
        long after = System.currentTimeMillis();
        long sumLoad = after - before;
        System.out.println("1.请求被定位到" + fullPath + "所花的时间为: " + sumLoad); 
        
    }   
  
    @Override  
    public void init(FilterConfig config) throws ServletException {   
    	this.config = config;
    	System.out.println("firstFilter init()..."); 
    } 
    
    private HttpServletRequest request;
    public boolean getParameter() {
             //如果是以post方式提交数据的,就直接返回获取到的值
             if(this.request.getMethod().equalsIgnoreCase("post")) {
                 return true;
             }else {
            	 return false;
             }
     }

}

猜你喜欢

转载自blog.csdn.net/tikaber/article/details/78778884