springmvc过滤器的简单使用

来源:互联网 发布:源码之家easck 编辑:程序博客网 时间:2024/05/23 01:11

这里用一个登陆的例子实现过滤器的简单使用

步骤:
1.编写一个类,接入接口OncePerRequestFilter
2.web.xml中配置这个类

2.接入接口

package cn.lay.web;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.filter.OncePerRequestFilter;import javax.servlet.FilterChain;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import java.io.IOException;import java.io.PrintWriter;/** * Created by lay on 2017/2/17 0017. */public class FilterControl extends OncePerRequestFilter{    @Override    protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) throws ServletException, IOException {        System.out.println("进入过滤器");        String[] strs = new String[]{"login"};        boolean doFilter = true;        String url = httpServletRequest.getRequestURI();        for (String str: strs) {            if (url.indexOf(str) != -1){                doFilter = false;                break;            }        }        HttpSession session = httpServletRequest.getSession();        String account = (String) session.getAttribute("account");        doFilter = doFilter && account == null;        if (doFilter){            // 防止乱码            httpServletResponse.setContentType("text/html;charset=UTF-8");            PrintWriter printWriter = httpServletResponse.getWriter();            String loginPage = "http://www.baidu.com";            StringBuilder builder = new StringBuilder();            builder.append("<script type=\"text/javascript\">");            builder.append("alert('网页过期,请重新登录!');");            builder.append("window.top.location.href='");            builder.append(loginPage);            builder.append("';");            builder.append("</script>");            printWriter.print(builder.toString());        }else{            filterChain.doFilter(httpServletRequest, httpServletResponse);        }    }}

2.web.xml配置

<!--过滤器配置-->    <filter>        <filter-name>FilterControl</filter-name>        <filter-class>cn.lay.web.FilterControl</filter-class>    </filter>    <filter-mapping>        <filter-name>FilterControl</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>

注意:如果项目中有配置拦截器,那么过滤器先执行,再执行拦截器。可以打印输出来测试一下。

参考链接

0 0
原创粉丝点击