java学习之SpringMVC拦截器开发(springmvc拦截器原理)

  本篇文章为你整理了java学习之SpringMVC拦截器开发(springmvc拦截器原理)的详细内容,包含有springmvc实现拦截器两种方式 springmvc拦截器原理 spring mvc 拦截器 springmvc拦截器拦截路径规则 java学习之SpringMVC拦截器开发,希望能帮助你了解 java学习之SpringMVC拦截器开发。

   这两篇的mvc都是一些开发多的注解呀和一些配置的问题,只需要记住一些该有的注解,它们的使用跟Servlet是十分相似的,还有ssm整合和springboot了,整体来说我写的代码都很少很多都是直接抄的代码,主要是要去了解这些控件,始终要记得的是ioc开发模式很多东西都是属于是bean

  
springmvc的拦截器类似于Selvet的Filter,但是所属的操作又不一样

  Spring MVC 提供了 Interceptor 拦截器机制,用于请求的预处理和后处理,也就是增强方法,它主要用于拦截用户的请求并做相应的处理,通常应用在权限验证、记录请求信息的日志、判断用户是否登录等功能上。

  0x01基础使用

  拦截器需要实实现HandlerInterceptor

  

@Component

 

  //定义拦截器类,实现HandlerInterceptor接口

  //注意当前类必须受Spring容器控制

  public class ProjectInterceptor implements HandlerInterceptor {

   @Override

   //原始方法调用前执行的内容

   //返回值类型可以拦截控制的执行,true放行,false终止

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

   String contentType = request.getHeader("Content-Type");

   HandlerMethod hm = (HandlerMethod)handler;

   System.out.println("preHandle..."+contentType);

   return true;

   @Override

   //原始方法调用后执行的内容

   public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

   System.out.println("postHandle...");

   @Override

   //原始方法调用完成后执行的内容

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

   System.out.println("afterCompletion...");

  

 

  有三个方法

  原始方法调用前执行的内容
 

  返回值类型可以拦截控制的执行,true放行,false终止
 

  public boolean preHandle

  原始方法调用后执行的内容
 

  public void postHandle

  原始方法调用完成后执行的内容
 

  public void afterCompletion

  方法中参数都是可以用的,如postHandle中的requst,response那些都是可以进行配置的

  写配置需要继承WebMvcConfigurationSupport类实现addInterceptors方法

  

@Configuration

 

  public class SpringMvcSupport extends WebMvcConfigurationSupport {

   @Autowired

   private ProjectInterceptor projectInterceptor;

  @Override

  protected void addResourceHandlers(ResourceHandlerRegistry registry) {

   registry.addResourceHandler("/pages/**").addResourceLocations("/pages/");//配置访问静态资源

  @Override

  protected void addInterceptors(InterceptorRegistry registry) {

   //配置拦截器

   registry.addInterceptor(projectInterceptor).addPathPatterns("/books","/books/*");

  

 

  0x02简化配置

  经典前面白学

  

@Configuration

 

  @ComponentScan({"com.itheima.controller"})

  @EnableWebMvc

  //实现WebMvcConfigurer接口可以简化开发,但具有一定的侵入性

  public class SpringMvcConfig implements WebMvcConfigurer {

   @Autowired

   private ProjectInterceptor projectInterceptor;

   @Autowired

   private ProjectInterceptor2 projectInterceptor2;

   @Override

   public void addInterceptors(InterceptorRegistry registry) {

   //配置多拦截器

   registry.addInterceptor(projectInterceptor).addPathPatterns("/books","/books/*");

   registry.addInterceptor(projectInterceptor2).addPathPatterns("/books","/books/*");

  

 

  直接在核心配置类里面配置拦截器

  0x03拦截链

  拦截链,执行的顺序是先执行1的preHandle执行2的preHandle,后面的方法是从2开始执行因为preHandle过了就是原始方法,原始方法过了就是类似于,人从门里往外面走先过第二道门。

  这里直接引用一张上课的PPT

  只要pre执行了对呀的after就会执行。只要一个pre出错误了post就都不会执行。

  0x04xml配置

  按照前面的方法配置好拦截器然后在xml文件中加入一系列mvc的标签

  

 mvc:interceptors 

 

   mvc:interceptor

   !-- 配置拦截器拦截路径--

   mvc:mapping path="/book/*"/

   !-- 注入自定义拦截器--

   bean /

   /mvc:interceptor

   /mvc:interceptors

  

 

  

@Configuration

 

  public class SpringMvcSupport extends WebMvcConfigurationSupport {

   @Autowired

   private ProjectInterceptor projectInterceptor;

  @Override

  protected void addResourceHandlers(ResourceHandlerRegistry registry) {

   registry.addResourceHandler("/pages/**").addResourceLocations("/pages/");//配置访问静态资源

  @Override

  protected void addInterceptors(InterceptorRegistry registry) {

   //配置拦截器

   registry.addInterceptor(projectInterceptor).addPathPatterns("/books","/books/*");

  

 

  0x05总结

  这两篇的mvc都是一些开发多的注解呀和一些配置的问题,只需要记住一些该有的注解,它们的使用跟Servlet是十分相似的,还有ssm整合和springboot了,整体来说我写的代码都很少很多都是直接抄的代码,主要是要去了解这些控件,始终要记得的是ioc开发模式很多东西都是属于是bean

  以上就是java学习之SpringMVC拦截器开发(springmvc拦截器原理)的详细内容,想要了解更多 java学习之SpringMVC拦截器开发的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: