程序员一代码搬运工
【Java学习心得和Java学习技术个人总结】

JAVA 过滤器 demo

过滤器。。

RequestFilter.java

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.activiti.engine.impl.util.json.JSONObject;

import com.alibaba.druid.support.json.JSONUtils;
import com.bcxcore.modules.util.JsonUtil;

/**
 * @ClassName: RequestFilter
 * @Description:filter的三种典型应用: 1、可以在filter中根据条件决定是否调用chain.doFilter(request,
 *                             response)方法, 即是否让目标资源执行
 *                             2、在让目标资源执行之前,可以对request\response作预处理,再让目标资源执行
 *                             3、在目标资源执行之后,可以捕获目标资源的执行结果,从而实现一些特殊的功能
 */
public class RequestFilter implements Filter {

	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		//System.out.println("----过滤器初始化----");
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {

		HttpServletRequest req = (HttpServletRequest) request;  
                HttpServletResponse res = (HttpServletResponse) response; 
		// 对request和response进行一些预处理
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");

		System.out.println("执行前!!!");
		//处理url加密 问题
		if (req.getMethod().equals("POST")){
			System.out.println("post请求");
		}else{
			System.out.println("post请求");
		}
		
	        int code=0;
		String jsonStr=request.getParameter("jsonData");
		JSONObject json = new JSONObject(jsonStr);
		if(json!=null&&json.get("date")!=null&&json.get("token")!=null){
		  String  currentTime=json.getString("date");
		  String  token=json.getString("token");
		  code=JsonUtil.getVerification(currentTime,token);
		}	
		request.setAttribute("code", code);
		chain.doFilter(request, response); // 让目标资源执行,放行
		System.out.println("RequestFilter执行后!!!");
	}

	@Override
	public void destroy() {
		System.out.println("----过滤器销毁----");
	}
}

web.xml 配置

<!--配置过滤器-->
<filter>
<filter-name>RequestFilter</filter-name>

<filter-class>com.yq1012.common.filter.RequestFilter</filter-class>
</filter>

<!--映射过滤器-->
<filter-mapping>
<filter-name>RequestFilter</filter-name>
<!--“/*”表示拦截所有的请求 -->
<url-pattern>/q/*</url-pattern>
</filter-mapping>

不是很难。。

赞(1)
未经允许不得转载:程序员一代码搬运工 » JAVA 过滤器 demo
分享到: 更多 (0)