zoukankan      html  css  js  c++  java
  • springmvc过滤器简单实例

    自定义过滤器

    
    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>
    勿忘初心 得过且过
  • 相关阅读:
    零基础入门学习python--第一章
    mount: no medium found on /dev/sr0 找不到介质
    linux中shell变量$#,$@,$0,$1,$2的含义解释
    ospf多区域实例配置
    Linux查看cpu信息
    ethtool查看网卡以及修改网卡配置
    circusctl命令在ubuntu 上执行,卡住的现象处理。
    ubuntu 16.04.1 LTS zabbix-agent安装
    ubuntu 16.04.1 LTS 初始化
    Ubuntu开机启动的方式
  • 原文地址:https://www.cnblogs.com/xpf1009/p/9227315.html
Copyright © 2011-2022 走看看