SpringMVC(八)拦截器

拦截器的定义:SpringMVC 的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理。

应用场景:
1、日志记录:记录请求信息的日志,以便进行信息监控、信息统计以及页面浏览次数
2、权限检查:登陆检车,进行处理器检车是否登录
3、性能监控:可以通过拦截器在进入处理器之前记录开始时间,在处理完记录结束时间
4、通用行为:读取cookie得到用户信息并将用户对象放入请求

如何使用:

1、创建一个自定义类实现HandlerInterceptor接口。接口中提供三个方法。
这里写图片描述

public class MyHandleInterceptor extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {

        // 进入 Handler方法之前执行
        // 用于身份认证、身份授权
        // 比如身份认证,如果认证通过表示当前用户没有登陆,需要此方法拦截不再向下执行
        System.out.println("请求处理前拦截");

        return super.preHandle(request, response, handler);
    }

    // 进入Handler方法之后,返回modelAndView之前执行
    // 应用场景从modelAndView出发:将公用的模型数据(比如菜单导航)在这里传到视图,也可以在这里统一指定视图
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            org.springframework.web.servlet.ModelAndView modelAndView) throws Exception {
        // 执行Handler完成执行此方法
        // 应用场景:统一异常处理,统一日志处理
        System.out.println("请求处理后页面渲染前拦截");

        super.postHandle(request, response, handler, modelAndView);
    }

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

        System.out.println("页面渲染后发送到客户端浏览器前拦截");

        super.afterCompletion(request, response, handler, ex);
    }

}

2、配置springMVC-servlet.xml文件
拦截器配置可是设置通用拦截和自定义拦截!

<!-- 配置拦截器 -->
    <mvc:interceptors>
        <!-- 通用拦截器 -->
        <!-- <bean class="com.zh.interceptor.MyHandleInterceptor" /> -->

        <!-- 自定义设置拦截 -->
        <mvc:interceptor>
            <mvc:mapping path="/login"/>    <!--指定拦截的url地址-->
            <bean class="com.zh.interceptor.MyHandleInterceptor" />
        </mvc:interceptor>
    </mvc:interceptors>

3、创建一个简单登录页面,点击运行:
这里写图片描述

因为我这里只是一个简单的登录,所以并没有响应信息!
控制台显示,表示设置成功!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值