• SpringMVC拦截器的使用


    什么是拦截器:Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、记录请求信息的日志、判断用户是否登录等SpringMVC中通过实现HandlerInterceptor接口实现自定义拦截器类。

    1.定义jsp

    <html>
    <body>
    <h2>Hello World!</h2>
    </body>
    </html>

    2.定义interceptor

    继承HandlerInterceptor

    public class Myinterceptor implements HandlerInterceptor {
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            System.out.println("/****************拦截器当中preHandle的执行方法****************/");
            return true;
        }
    
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
            System.out.println("在HandlerAdapter之后执行,在DispatcherServlet解析视图之前执行");
        }
    
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
            System.out.println("===========呈现之后调用===========");
        }
    }

    详情如上重写方法实现拦截

    3.Spring-MVC中配置拦截器

    <!--配置拦截器-->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/my/**"/>
            <bean class="com.SpringMVC.interceptor.Myinterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>

    4.配置控制器 

    @Controller
    @RequestMapping("/my")
    public class MyController {
        @RequestMapping("/first")
        public String fileer(){
            System.out.println("/***********控制器的方法***********/");
            return "index";
        }
    }

    效果如下所示:

    跳转到首页

    如将preHandle  return 改为false则是拦截,否则放行

    5.拦截器的执行流程

    1.程序先执行preHandle()方法,如果该方法的返回值为true,则程序会继续向下执行处理器中的方法,否则将不再向下执行。

    2.在业务处理器(即控制器Controller类)处理完请求后,会执行postHandle()方法,进行视图渲染之前被调用,然后会通过DispatcherServlet向客户端返回响应。

    3.在DispatcherServlet处理完请求后,才会执行afterCompletion()方法作用域释放资源,抛出异常等等

  • 相关阅读:
    Mysql存储类型选择
    Mysql的MVCC
    SQL标准中的四种隔离级别
    web权限管理总结
    关于oauth2中为什么不直接返回token而是传授权码code
    课程作业——爬取校园新闻首页的新闻的详情,使用正则表达式,函数抽离
    网络爬虫基础练习
    Python中文词频统计
    关于Maven的配置与学习
    课程作业——综合练习:英文词频统计
  • 原文地址:https://www.cnblogs.com/ws1149939228/p/11842821.html
Copyright © 2020-2023  润新知