springmvc拦截器怎么使用

什么是拦截器

在前端发来请求的时候,有时候需要拦截掉它的请求,不让他访问后端的请求处理器,举个简单的例子:
有人想不登录直接输入url地址访问网站的Main页面,此时我们就需要用拦截器对这样的请求进行拦截,不让他执行Controller中的 "/Main"对应的方法,这就可以用拦截器来实现。springMVC中集成了拦截器的实现。

使用步骤

  1. 创建一个拦截器:只需要自己写一个拦截器的类,然后实现HandlerInterceptor接口中的方法,这个接口只有三个方法,分别对应①处理请求前,②处理请求时,③处理请求后;常用的也就只有一个,就是处理请求前,所以只要根据实际需要来实现这个方法即可。
import org.springframework.web.servlet.HandlerInterceptor;

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

public class MyIntercept implements HandlerInterceptor {
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception{
        if(request.getRequestURI().contains("Login")){
            return true;
        }
        if(request.getSession().getAttribute("userName")==null){
         System.out.println(request.getSession().getAttribute("userName")+request.getRequestURI());
         //request.getRequestDispatcher("WEB-INF/Login.jsp").forward(request,response);
         response.sendRedirect("/Login");
         return false;
     }
        return  true;
    }
}
  1. 在spring配置文件中将拦截器绑定需要拦截的请求:(注意引入mvc的约束名)
  <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**/"/>
            <bean id="myIntercept" class="MyIntercept"></bean>
        </mvc:interceptor>
    </mvc:interceptors>

登陆注销的例子

  1. 写一个登陆页:
    在这里插入图片描述

  2. 写一个主页:
    在这里插入图片描述

  3. 后端请求:
    在这里插入图片描述

  4. 结果验证:
    ①不登录直接访问Main:会重定向到登陆页(说明拦截器生效了)

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210619211028519.png
在这里插入图片描述

②输入账号密码进入主页:
在这里插入图片描述
③不关浏览器,关掉当前页面,再重新输入地址同样可以进入;(说明session在仅关闭当前页面的时候是不会注销的)

④点击注销,再尝试直接进入Main页面,会被重定向到Login页;(说明session中的用户信息被移除了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值