MVC配置登录拦截器


web.xml

代码:
<servlet>
  <servlet-name>springDispatcherServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext-mvc.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>springDispatcherServlet</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

 

applicationContext-mvc.xml
注意:<beans xsi:schemaLocation="">里面需要http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd,版本需要3.2以上才可以有后面的请求过滤mvc:exclude-mapping。

代码:

<mvc:interceptors>
        <!-- 配置登陆拦截器 -->
        <mvc:interceptor>
            <!-- /** 表示所有的url,包括子url路径 -->
            <mvc:mapping path="/**" />
            <!-- mvc:exclude-mapping过滤,js文件夹下的所有文件包括子路径的文件都不拦截 -->

            <mvc:exclude-mapping path="/js/**"/>
            <!-- 配置拦截类  (com.***.filter包名;LoginHandlerIntercepter类名)-->

            <bean class="com.***.filter.LoginHandlerIntercepter"></bean>
        </mvc:interceptor>
    </mvc:interceptors>
    

  <!-- mvc:exclude-mapping配置的这里需要再配一次这个,主要是用来进行静态资源的访问,因为可以静态资源(css.js)收到拦截器影响而获取不到  -->
    <mvc:resources location="/js/" mapping="/js/**"/>

 

LoginHandlerIntercepter.java

代码:

package com.***.filter;

import java.util.Arrays;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import com.cyimayi.bean.User;

/**
 * 登陆拦截器 场景:用户点击查看的时候,我们进行登陆拦截器操作,判断用户是否登陆? 登陆,则不拦截,没登陆,则转到登陆界面; TODO 作者:原明卓
 * 时间:2016年1月8日 下午3:25:35 工程:SpringMvcMybatis1Demo
 */
public class LoginHandlerIntercepter implements HandlerInterceptor {

    @Override
    public void afterCompletion(HttpServletRequest request,
            HttpServletResponse response, Object arg2, Exception arg3)
            throws Exception {
    }

    @Override
    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
            Object arg2, ModelAndView arg3) throws Exception {

    }

    @Override
    public boolean preHandle(HttpServletRequest request,
            HttpServletResponse arg1, Object arg2) throws Exception {
        String requestURI = request.getServletPath();
        String[] arr = {"/user/login", ""};
        List<String> list = Arrays.asList(arr);
        
        if (!list.contains(requestURI)) {
            // 说明处在编辑的页面
            HttpSession session = request.getSession();
            User user = (User) session.getAttribute("loginUser");
            if (user != null) {
                // 登陆成功的用户
                return true;
            } else {
                session.setAttribute("lastUrl", requestURI);//保存路径,登录后跳回拦截前的页面
                // 没有登陆,转向登陆界面
                request.getRequestDispatcher("/login.jsp").forward(request, arg1);
                return false;
            }
        } else {
            return true;
        }
    }

}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM