• 基于springMVC实现登录过滤器


    此文章是基于  搭建Jquery+SpringMVC+Spring+Hibernate+MySQL平台

    一. 相关文件介绍

      1. LoginFilter.java:登录过滤器,保证每次的url访问都对session进行验证

    package com.ims.web;
    
    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 javax.servlet.http.HttpSession;
    
    import org.springframework.web.filter.OncePerRequestFilter;
    
    import com.ims.common.ConfigHolder;
    
    /**
     * 登陆过滤器
     */
    public class LoginFilter extends OncePerRequestFilter{
    
        @Override
        protected void doFilterInternal(HttpServletRequest request,
                HttpServletResponse response, FilterChain filterChain)
                throws ServletException, IOException {
            // 不拦截的url
            String[] notFilter = new String[] {"/login.do","/service"};
    
            // 请求的url
            String url = request.getRequestURI();
            
            boolean doFilter = chek(notFilter, url);
            if (doFilter) {
                HttpSession session = request.getSession();
                Object obj = session.getAttribute(ConfigHolder.getValue("session.sys.user"));
                if (null == obj) {
                    // 如果session中不存在登录者实体,则弹出框提示重新登录
                    PrintWriter out = response.getWriter();
                    String loginPage = request.getContextPath() + "/login.do";
                    StringBuilder builder = new StringBuilder();
                    builder.append("<script type="text/javascript">");
                    builder.append("window.top.location.href='");
                    builder.append(loginPage);
                    builder.append("';");
                    builder.append("</script>");
                    out.print(builder.toString());
                } else {
                    filterChain.doFilter(request, response);
                }
            } else {
                filterChain.doFilter(request, response);
            }
        }
    
        /**
         * 检查是否拦截
         * @param notFilter 不拦截的url           
         * @param url 请求的url
         * @return false:不拦截  true:拦截
         */
        public boolean chek(String[] notFilter, String url) {
            // 图片、脚本、css、页面不进行拦截
            if (url.endsWith(".css") || url.endsWith(".js") 
                || url.endsWith(".png") || url.endsWith(".jpg")
                || url.endsWith(".gif") || url.endsWith(".jsp")
                || url.endsWith(".html")) {
                return false;
            }
            // 含有notFilter中的任何一个则不进行拦截
            for (String s : notFilter) {
                if (url.indexOf(s) != -1) {
                    return false;
                }
            }
            return true;
        }
    }
    View Code

      

      2. web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_4.xsd 
            http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
        version="2.4">
      
      <filter>
        <filter-name>loginFilter</filter-name>
        <filter-class>com.ims.web.LoginFilter</filter-class>
      </filter>
      
      <filter-mapping>
        <filter-name>loginFilter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
          
    </web-app>
    View Code
  • 相关阅读:
    学会Git玩转Github笔记(一)——Github基本概念 & 仓库管理
    Github 入门基本操作
    Struts2拦截器浅析
    SSH(Struts2+Spring4+Hibernate4)框架教程之配置篇
    Spring 体系结构
    Ubuntu启动sshd服务
    jquery ajax/post 请求 案例
    Elasticsearch 配置
    Jenkins安装与配置
    解决Ubuntu环境变量错误导致无法正常登录  (command 'xxx' is available in bin ls)
  • 原文地址:https://www.cnblogs.com/Mr-kevin/p/6679567.html
Copyright © 2020-2023  润新知