栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringMVC中HandlerInterceptor拦截器及接口中三个方法介绍

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringMVC中HandlerInterceptor拦截器及接口中三个方法介绍

文章目录
  • 一、前言:
  • 二、实现方法过程:
  • 三、三个方法介绍
    • public boolean preHandle
    • public void postHandle
    • public void afterCompletion
    • 代码如下:
  • 四、拦截器的配置:

一、前言:

当用到强制登陆操作时,要用到拦截器,下面介绍一下 HandlerInterceptor接口中三个方法

二、实现方法过程:


创建类实现HandlerInterceptor接口之后,jdk1.8之前如果没有实现三个preHandle、postHandle、afterHadnle方法会报错,由于jdk1.8的新特性,这里不会报错,需要手动实现三个方法,
idea快捷键:Alt+Inset,点击Implements Methods

选中三个方法,点击ok,即可手动实现三个方法;

三、三个方法介绍 public boolean preHandle

调用时间: Controller方法处理之前【也就是路径跳转之前】;

执行顺序: 链式Intercepter情况下,Intercepter按照声明的顺序一个接一个执行;

返回值: 返回值为true,则继续执行,false中断执行,生成时默认false;

应用场景: 常用于强制登陆等操作

public void postHandle

调用前提: preHandle返回true;

调用时间: Controller方法处理完之后,DispatcherServlet进行视图的渲染之前,也就是说在这个方法中你可以对ModelAndView进行操作

执行顺序: 链式Intercepter情况下,Intercepter按照声明的顺序倒着执行。

备注: postHandle虽然post打头,但post、get方法都能处理

public void afterCompletion

调用前提:preHandle返回true

调用时间:DispatcherServlet进行视图的渲染之后

应用场景:多用于清理资源,统一日志处理,统一异常处理

代码如下:
//拦截器
public class MyHandlerInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        
            return  false;
        }
    }
    
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

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

    }
}

粘上强制登陆的代码,仅供参考:

@Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession();
        Object flag = session.getAttribute("flag");//获取登陆时存放入session作用域中的标识flag
        if(flag!=null){  //flag不为空,说明登陆成功
            return  true;
        }else {  //flag为空,说明登陆失败,跳转到登陆页面
            response.sendRedirect(request.getContextPath()+"/login.jsp");
            return  false;
        }
    }
四、拦截器的配置:

使用HandlerInterceptor拦截器需要在springMVC-servlet.xml中配置如下:

    
    
        
             
            
            
            
            
            
            
            
              
        
    

在pom.xml文件里导入依赖:

    
    
      cn.hutool
      hutool-all
      5.4.1
    

准备工作就绪,接着就可以愉快使用拦截器了~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/331728.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号