Spring实战 - 创建登录拦截器

Spring Web MVC拦截器:主要对处理器进行预处理和后处理。

  • 常用场景:

日志记录,权限检查,性能监控,通用行为

  • Spring Web MVC拦截器实现方法:

Spring Web MVC 拦截器需要重写HandlerInterceptor接口中的三个方法。

  • preHandle(HttpServletRequest request,HTTPServletResponse response,Object handle) :该方法在请求处理之前进行调用。

  • postHandle(HttpServletRequest request,HTTPServletResponse response,Object handle,ModelAndView modelAndView):该方法在当前请求进行处理之后,在DispatherServlet进行视图返回渲染之前进行调用。

  • afterCompletion (HttpServletRequest request,HTTPServletResponse response,Object handle, Exception ex) :该方法在整个请求结束之后,也就是在DispatherServlet渲染了视图之后执行,主要用于进行资源清理。

  • 环境: MacOS + IntelliJ IDEA 2019.3.1 (Ultimate Edition)

  • 基于Spring实战 - 整合Spring MVC,设置SpringMVC 拦截器

1、在web 文件夹下创建interceptor文件夹
选择web文件夹->右键->Package->interceptor

2、interceptor创建登录拦截器LoginInterceptor

package com.codeonline.cats.web.interceptor;

import com.codeonline.cats.entity.User;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

/**
 * @author 码出高薪
 * @Desc. 登录拦截
 * @date 2020/1/14 14:46
 */

public class LoginInterceptor implements HandlerInterceptor {

  private static final Logger logger = LoggerFactory.getLogger(LoginInterceptor.class);

  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
      throws Exception {
    /**
     * 从会话中登录记录信息
     */
    User user = (User)request.getSession().getAttribute("user");
    // 未登录 跳转到登录页面
    if(user==null){
      logger.info("未登录 跳转到登录页面");
      response.sendRedirect("/login");
      return false;

    }else {
      // 已登录 则放行 跳转到主页
      logger.info("已登录 则放行 跳转到主页");
      return true;
    }
  }
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
      ModelAndView modelAndView) throws Exception {

  }
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
      Object handler, Exception ex) throws Exception {
  }
}

3、在spring-mvc中配置spring web mvc拦截器

<!--  配置拦截器  使用登录拦截器拦截所有路径-->
  <mvc:interceptors>
    <mvc:interceptor>
      <mvc:mapping path="/**"/>
      <mvc:exclude-mapping path="/login"/>
      <mvc:exclude-mapping path="/static/**"/>
      <bean class="com.codeonline.cats.web.interceptor.LoginInterceptor"/>
    </mvc:interceptor>
  </mvc:interceptors>

4、运行项目,在浏览器中打开http://localhost:8080/

2020-01-14 15:40:57,225 INFO [com.codeonline.cats.web.interceptor.LoginInterceptor] - 未登录 跳转到登录页面
posted @ 2020-01-14 16:04  小黑开发  阅读(215)  评论(0编辑  收藏  举报