background image

Spring MVC 过滤器 

Spring—MVC 项目, 定义的过滤器类:
代码如下:
package com.cmcc.soc.aop;

import org.springframework.web.filter.OncePerRequestFilter; // 过滤器类 需要 实现的 每次请
求都过滤的类

import javax.servlet.FilterChain; //请求的 处理链
import javax.servlet.ServletException; //servlet 的异常
import javax.servlet.http.HttpServletRequest; //http 的请求 
import javax.servlet.http.HttpServletResponse; //http 的响应
import java.io.IOException; //io 流异常
import java.io.PrintWriter; // 字符输出流

/**
 * Project: soc
 * User: Henry
 * Date: 13-7-26
 * Description:
 * Modify Memo:
 */
public class AuthenticationFilter extends OncePerRequestFilter {//继承一个 每次都过滤的过滤
器类
    @Override
       protected  void  doFilterInternal(HttpServletRequest  request,  HttpServletResponse  response, 
FilterChain filterChain) throws ServletException, IOException {

        // 不过滤的 uri
        String[] notFilter = new String[] { "/Login/Login.do","/Home/Index.do"};// 设置不过滤的
uri

        // 请求的 uri
        String contextpath = request.getContextPath();  //获取上下文的路径
        String spring_uri = request.getRequestURI().replace(contextpath, "");  //获取 请求的  uri

        boolean doFilter = true;// 简写  doFiter 为 true 时 会执行下面的

        for (String s : notFilter) { //遍历 不过滤的 uri
            if (spring_uri.equals(s)) {  //取过 获取的 uri  包含不过滤的 uri  doFiter 返回 false
                // 如果 uri 中包含不过滤的 uri,则不进行过滤
                doFilter = false;