当前位置: 首页 > 编程笔记 >

SpringMVC拦截器配置及运行流程解析

甄志
2023-03-14
本文向大家介绍SpringMVC拦截器配置及运行流程解析,包括了SpringMVC拦截器配置及运行流程解析的使用技巧和注意事项,需要的朋友参考一下

1.与过滤器filter的区别

2.springMVC中拦截器的必须实现的三个方法:

3. 拦截器类的编写:

package com.imooc.core;

import com.imooc.bean.User;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

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

public class LoginInterceptor implements HandlerInterceptor {


  //在业务处理器被调用前的方法,若是返回false则不会继续进入业务处理器
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    User user = (User)request.getSession().getAttribute("session_user");
    if(user==null) {
      response.sendRedirect(request.getContextPath()+"/login");
      return false;//会终止所有的请求
    }
    return true;
  }

  //在业务处理器被调用后,dispatcher响应客户端前的方法,一般用于生成日志文件时调用
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

  }

  //dispatcher响应客户端后的方法,一般用于资源的清理
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

  }
}

4.在spring的配置文件中注册拦截器:

<!-- 拦截器的注册 -->
  <mvc:interceptors>
    <mvc:interceptor>
       <!--**表示往后的所有子目录也包括进来-->
      <mvc:mapping path="/user/**"></mvc:mapping>
      <!--exclude-mapping在所有拦截中进行排除,一般在通配符会有意义。-->
      <!--即以下的方法不会被拦截-->
      <mvc:exclude-mapping path="/user/updatepwd"></mvc:exclude-mapping>
      <mvc:exclude-mapping path="/user/updatebackground/*"></mvc:exclude-mapping>
      <!--填写之前配置好的拦截器-->
      <bean class="com.imooc.core.LoginInterceptor"></bean>
    </mvc:interceptor>
  </mvc:interceptors>

注意:要是有多个拦截器执行顺序以spring的配置文件中的注册拦截器顺序执行:

<!-- 拦截器的注册 -->
  <mvc:interceptors>

    <!--先注册先执行-->
    <mvc:interceptor>
      <mvc:mapping path="/user/**"/>
      <bean class="com.imooc.core.LogInterceptor"></bean>
    </mvc:interceptor>

    <mvc:interceptor>
      <mvc:mapping path="/user/**"></mvc:mapping>
      <!--exclude-mapping在所有拦截中进行排除,一般在通配符会有意义。-->
      <mvc:exclude-mapping path="/user/updatepwd"></mvc:exclude-mapping>
      <mvc:exclude-mapping path="/user/updatebackground/*"></mvc:exclude-mapping>
      <bean class="com.imooc.core.LoginInterceptor"></bean>
    </mvc:interceptor>
  </mvc:interceptors>

其次拦截器里的方法顺序:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍详解springmvc拦截器拦截静态资源,包括了详解springmvc拦截器拦截静态资源的使用技巧和注意事项,需要的朋友参考一下 springmvc拦截器interceptors springmvc拦截器能够对请求的资源路径进行拦截,极大的简化了拦截器的书写。但是,千万千万要注意一点:静态资源的放行。 上代码: 问题来了,在请求jsp页面的时候,你的静态资源的访问仍然会被自定义拦截器

  • 本文向大家介绍SpringMVC中的拦截器详解及代码示例,包括了SpringMVC中的拦截器详解及代码示例的使用技巧和注意事项,需要的朋友参考一下 本文研究的主要是SpringMVC中的拦截器的介绍及实例代码,配置等内容,具体如下。 Springmvc的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理。本文主要总结一下springmvc中拦截器是如何定义

  • 本文向大家介绍SpringMVC底层执行流程及原理解析,包括了SpringMVC底层执行流程及原理解析的使用技巧和注意事项,需要的朋友参考一下 一个简单的HelloSpringMVC程序 先在web,xml中注册一个前端控制器(DispatcherServlet) 配置文件(springmvc-servlet.xml) HandlerMapper是处理器映射器-->根据请求的地址去找处理器(如案例

  • 本文向大家介绍Springmvc的运行流程图文详解,包括了Springmvc的运行流程图文详解的使用技巧和注意事项,需要的朋友参考一下 一.常见类及其作用 HandlerExecutionChain : Handler执行链对象, 包含了请求处理器对象 以及所有的拦截器对象. HandlerMapping : 定义了所有的请求与 所有的请求处理器之间的映射. HandlerAdaptor: 请求处

  • 现在,当我到达spring-boot应用程序的endpoint时,它工作得很好 基本上,它根本不调用preandle。我错过了什么????

  • 本文向大家介绍springmvc拦截器登录验证示例,包括了springmvc拦截器登录验证示例的使用技巧和注意事项,需要的朋友参考一下 一开始,学了拦截器与过滤器,咋一看两者有点像,实际上两者有很大的不同。就用拦截器和过滤器分别做了登录验证试验,这次先说拦截器。下面是自己实践的一个实例: 在spring-mvc.xml中配置拦截器: 如上所示,这里配置了LoginIntercepter,为了简单起

  • 本文向大家介绍防止SpringMVC拦截器拦截js等静态资源文件的解决方法,包括了防止SpringMVC拦截器拦截js等静态资源文件的解决方法的使用技巧和注意事项,需要的朋友参考一下 SpringMVC提供<mvc:resources>来设置静态资源,但是增加该设置如果采用通配符的方式增加拦截器的话仍然会被拦截器拦截,可采用如下方案进行解决: 方案一、拦截器中增加针对静态资源不进行过滤(涉及spr

  • 本文向大家介绍详解利用SpringMVC拦截器控制Controller返回值,包括了详解利用SpringMVC拦截器控制Controller返回值的使用技巧和注意事项,需要的朋友参考一下 背景:需求是在Controller中方法没有实现时,返回模拟结果。主要用于项目初期前台跟后台的交互,Web项目就是在前台发出请求然后后台响应并返回结果。本示例利用拦截器和注解实现跳过执行方法直接返回定义结构的功能