springmvc过滤器简单实例

来源:互联网 发布:淘宝日本人占多少股份 编辑:程序博客网 时间:2024/05/21 16:59

自定义过滤器

package com.ssm.student.filter;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.FilterChain;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.filter.OncePerRequestFilter;/** * @className SessionFilter * @deprecated 登录过滤器 * @author pengfei.xiong * @date 2017年10月8日 */public class SessionFilter extends OncePerRequestFilter{    /*     * (non-Javadoc)     *      * @see     * org.springframework.web.filter.OncePerRequestFilter#doFilterInternal(     * javax.servlet.http.HttpServletRequest,     * javax.servlet.http.HttpServletResponse, javax.servlet.FilterChain)     */    @Override    protected void doFilterInternal(HttpServletRequest request,            HttpServletResponse response, FilterChain filterChain)            throws ServletException, IOException {        //request.getSession().setAttribute("loginedUser", "ssss");        // 不过滤的uri        String[] notFilter = new String[] { "login.jsp", "index.jsp" };        // 请求的uri        String uri = request.getRequestURI();        // uri中包含background时才进行过滤        if (uri.indexOf("do") != -1) {            // 是否过滤            boolean doFilter = true;            for (String s : notFilter) {                if (uri.indexOf(s) != -1) {                    // 如果uri中包含不过滤的uri,则不进行过滤                    doFilter = false;                    break;                }            }            if (doFilter) {                // 执行过滤                // 从session中获取登录者实体                Object obj = request.getSession().getAttribute("loginedUser");                if (null == obj) {                    // 如果session中不存在登录者实体,则弹出框提示重新登录                    // 设置request和response的字符集,防止乱码                    request.setCharacterEncoding("UTF-8");                    response.setCharacterEncoding("UTF-8");                    response.setContentType("text/html");                    PrintWriter out = response.getWriter();                    String loginPage = "login-old.jsp";                    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>");                    out.print(builder.toString());                } else {                    // 如果session中存在登录者实体,则继续                    filterChain.doFilter(request, response);                }            } else {                // 如果不执行过滤,则继续                filterChain.doFilter(request, response);            }        } else {            // 如果uri中不包含background,则继续            filterChain.doFilter(request, response);        }    }    //在web.xml中配置..}

web.xml配置过滤器

<!-- 自定义过滤器 -->    <filter>        <filter-name>sessionFilter</filter-name>        <filter-class>com.ssm.student.filter.SessionFilter</filter-class>    </filter>    <filter-mapping>        <filter-name>sessionFilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>
原创粉丝点击