SpringMVC拦截器简单使用

SpringMVC 拦截器的使用 SpringMVC 拦截器的使用1. 拦截器作用2. 单个拦截器3. 多个拦截器 参考资料:https://spring-mvc.linesh.tw/ 1. 拦截器作用 SpringMVC 框架中的拦截器用于对处理器进行预处理和后处理的技术。 可以定义拦截器链,连接器链就是将拦截器按着顺序结成一条链,在访问被拦截的方法时,拦截器链中的拦截器会按着定义的顺序执行。 拦截器和过滤器的功能比较类似,有以下区别: 过滤器是 Servlet 规范的一部分,任何框架都可以使用过滤器技术; 拦截器是 SpringM 阅读详情

转:http://exceptioneye.iteye.com/blog/1303842

基于上一篇文章的基础上

 

一、拦截器的配置

   1、传统的配置

 

Xml代码   收藏代码
  1. <bean  
  2.         class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" >  
  3.         <property name="interceptors">  
  4.            <!-- 多个拦截器,顺序执行 -->  
  5.            <list>  
  6.               <ref bean="commonInterceptor"/>  
  7.            </list>  
  8.         </property>  
  9.     </bean>  
  10.     <!--   
  11.               如果不定义mappingURL,则默认拦截所有对Controller的请求 ;   
  12.              可以使用正则表达式对url进行匹配,从而更细粒度的进行拦截(.*/entryOrJsonController\.do\?action=reg.*);  
  13.     -->  
  14.     <bean id="commonInterceptor" class="com.wy.interceptor.CommonInterceptor">  
  15.        <property name="mappingURL" value=".*/entryOrJsonController\.do\?action=reg.*"/>  
  16.     </bean>  

 

  2、基于注解的配置

 

Xml代码   收藏代码
  1. <!-- 拦截器 -->  
  2.     <mvc:interceptors>  
  3.         <!-- 多个拦截器,顺序执行 -->  
  4.         <mvc:interceptor>  
  5.            <mvc:mapping path="/entryOrJsonController/*" /><!-- 如果不配置或/*,将拦截所有的Controller -->  
  6.            <bean class="com.wy.interceptor.CommonInterceptor"></bean>  
  7.         </mvc:interceptor>  
  8.     </mvc:interceptors>  

 

 

 

 

二、拦截器类

 

Java代码   收藏代码
  1. package com.wy.interceptor;  
  2.   
  3. import javax.servlet.http.HttpServletRequest;  
  4. import javax.servlet.http.HttpServletResponse;  
  5.   
  6. import org.apache.log4j.Logger;  
  7. import org.springframework.web.servlet.HandlerInterceptor;  
  8. import org.springframework.web.servlet.ModelAndView;  
  9.   
  10. public class CommonInterceptor implements HandlerInterceptor {  
  11.   
  12.     private Logger log = Logger.getLogger(CommonInterceptor.class);  
  13.       
  14.     public CommonInterceptor() {  
  15.         // TODO Auto-generated constructor stub  
  16.     }  
  17.   
  18.     private String mappingURL;//利用正则映射到需要拦截的路径    
  19.         public void setMappingURL(String mappingURL) {    
  20.                this.mappingURL = mappingURL;    
  21.        }   
  22.   
  23.     /** 
  24.      * 在业务处理器处理请求之前被调用 
  25.      * 如果返回false 
  26.      *     从当前的拦截器往回执行所有拦截器的afterCompletion(),再退出拦截器链 
  27.      *  
  28.      * 如果返回true 
  29.      *    执行下一个拦截器,直到所有的拦截器都执行完毕 
  30.      *    再执行被拦截的Controller 
  31.      *    然后进入拦截器链, 
  32.      *    从最后一个拦截器往回执行所有的postHandle() 
  33.      *    接着再从最后一个拦截器往回执行所有的afterCompletion() 
  34.      */  
  35.     @Override  
  36.     public boolean preHandle(HttpServletRequest request,  
  37.             HttpServletResponse response, Object handler) throws Exception {  
  38.         // TODO Auto-generated method stub  
  39.         log.info("==============执行顺序: 1、preHandle================");  
  40.         String url=request.getRequestURL().toString();    
  41.         if(mappingURL==null || url.matches(mappingURL)){    
  42.             request.getRequestDispatcher("/msg.jsp").forward(request, response);  
  43.             return false;   
  44.         }    
  45.         return true;  
  46.     }  
  47.   
  48.     //在业务处理器处理请求执行完成后,生成视图之前执行的动作   
  49.     @Override  
  50.     public void postHandle(HttpServletRequest request,  
  51.             HttpServletResponse response, Object handler,  
  52.             ModelAndView modelAndView) throws Exception {  
  53.         // TODO Auto-generated method stub  
  54.         log.info("==============执行顺序: 2、postHandle================");  
  55.     }  
  56.   
  57.     /** 
  58.      * 在DispatcherServlet完全处理完请求后被调用  
  59.      *  
  60.      *   当有拦截器抛出异常时,会从当前拦截器往回执行所有的拦截器的afterCompletion() 
  61.      */  
  62.     @Override  
  63.     public void afterCompletion(HttpServletRequest request,  
  64.             HttpServletResponse response, Object handler, Exception ex)  
  65.             throws Exception {  
  66.         // TODO Auto-generated method stub  
  67.         log.info("==============执行顺序: 3、afterCompletion================");  
  68.     }  
  69.   
  70. }  

 

 

注意:注释中的说明。

 

完整的spring配置文件

 

Java代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.         xmlns:context="http://www.springframework.org/schema/context"  
  5.         xmlns:mvc="http://www.springframework.org/schema/mvc"  
  6.         xmlns:util="http://www.springframework.org/schema/util"   
  7.         xsi:schemaLocation="  
  8.           http://www.springframework.org/schema/beans  
  9.           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
  10.           http://www.springframework.org/schema/context  
  11.           http://www.springframework.org/schema/context/spring-context-3.0.xsd  
  12.           http://www.springframework.org/schema/mvc      
  13.           http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  
  14.           http://www.springframework.org/schema/util   
  15.           http://www.springframework.org/schema/util/spring-util-3.0.xsd">  
  16.       
  17.     <!-- 默认的注解映射的支持 ,它会自动注册DefaultAnnotationHandlerMapping 与AnnotationMethodHandlerAdapter   
  18.     <mvc:annotation-driven />  
  19.     -->  
  20.       
  21.     <!-- 配置静态资源,直接映射到对应的文件夹,不被DispatcherServlet处理,3.04新增功能,需要重新设置spring-mvc-3.0.xsd -->  
  22.     <mvc:resources mapping="/js/**" location="/js/" />  
  23.       
  24.     <!-- 自动扫描注解的Controller -->  
  25.     <context:component-scan base-package="com.wy.controller.annotation" />  
  26.       
  27.     <!-- 处理在类级别上的@RequestMapping注解-->  
  28.     <bean  
  29.         class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" >  
  30.         <property name="interceptors">  
  31.            <!-- 多个拦截器,顺序执行 -->  
  32.            <list>  
  33.               <ref bean="commonInterceptor"/>  
  34.            </list>  
  35.         </property>  
  36.     </bean>  
  37.     <!--   
  38.              如果不定义mappingURL,则默认拦截所有对Controller的请求 ;   
  39.              可以使用正则表达式对url进行匹配,从而更细粒度的进行拦截(.*/entryOrJsonController\.do\?action=reg.*);  
  40.     -->  
  41.     <bean id="commonInterceptor" class="com.wy.interceptor.CommonInterceptor">  
  42.        <property name="mappingURL" value=".*/entryOrJsonController\.do\?action=reg.*"/>  
  43.     </bean>  
  44.           
  45.     <!-- 处理方法级别上的@RequestMapping注解-->  
  46.     <bean  
  47.         class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >  
  48.         <property name="messageConverters">    
  49.             <util:list id="beanList">    
  50.                 <ref bean="mappingJacksonHttpMessageConverter"/>    
  51.             </util:list>    
  52.         </property>   
  53.     </bean>  
  54.       
  55.     <!--   
  56.               将指定路径的请求直接转到对应的view上,而不需要特定的controller来处理请求 .  
  57.               注意:此处的映射路径是/hello,请求时http://localhost:8080/SpringMVC/hello  
  58.               不能在hello.xxx,而不使用此种方式的映射可以加的,因为web.xml配置的是‘/’              
  59.      -->  
  60.     <mvc:view-controller path="/hello" view-name="hello" />  
  61.        
  62.     <!-- 视图解析器策略 和 视图解析器 -->  
  63.     <!-- 对JSTL提供良好的支持 -->  
  64.     <bean  
  65.         class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  66.         <!-- 默认的viewClass,可以不用配置  
  67.         <property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceView" />  
  68.          -->  
  69.         <property name="prefix" value="/WEB-INF/page/" />  
  70.         <property name="suffix" value=".jsp" />  
  71.     </bean>  
  72.       
  73.     <!-- 处理JSON数据转换的 -->  
  74.     <bean id="mappingJacksonHttpMessageConverter"   
  75.         class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">   
  76.         <!-- 为了处理返回的JSON数据的编码,默认是ISO-88859-1的,这里把它设置为UTF-8,解决有乱码的情况 -->   
  77.         <property name="supportedMediaTypes">    
  78.             <list>    
  79.                   <value>text/html;charset=UTF-8</value>    
  80.             </list>    
  81.         </property>    
  82.     </bean>    
  83.       
  84.     <!-- 拦截器 -->  
  85.     <mvc:interceptors>  
  86.         <!-- 多个拦截器,顺序执行 -->  
  87.         <mvc:interceptor>  
  88.            <mvc:mapping path="/entryOrJsonController/*" /><!-- 如果不配置或/*,将拦截所有的Controller -->  
  89.            <bean class="com.wy.interceptor.CommonInterceptor"></bean>  
  90.         </mvc:interceptor>  
  91.     </mvc:interceptors>  
  92.       
  93.     <!--   
  94.        ResourceBundleViewResolver通过basename所指定的ResourceBundle解析视图名。  
  95.                   对每个待解析的视图,ResourceBundle里的[视图名].class所对应的值就是实现该视图的类。  
  96.                   同样,[视图名].url所对应的值是该视图所对应的URL。  
  97.                   可以指定一个parent view,其它的视图都可以从parent view扩展。  
  98.                   用这种方法,可以声明一个默认的视图。  
  99.        
  100.     <bean id="messageSource"  
  101.         class="org.springframework.context.support.ResourceBundleMessageSource">  
  102.         <property name="basename" value="welcome" />  
  103.     </bean>  
  104.     -->  
  105.       
  106. </beans>  

VASP计算层错能(SFE)全攻略2 本文介绍了使用VASP计算纯镍(Ni)层错能(SFE)的具体步骤。首先构建Ni的FCC单胞并扩展为超胞,通过修改原子位置引入堆垛层错;随后分别计算完美晶体和含层错结构的能量;最后通过能量差与层错面积之比求得SFE值。计算需注意k点网格、截断能和超胞尺寸的收敛性测试,并推荐使用PAW赝势和ASE等工具辅助结构构建。 阅读详情

相关推荐

对西安交大轴承数据集XJTU-SY_Bearing_Datasets进行读取和处理:

故障诊断,对西安交大轴承数据集XJTU-SY_Bearing_Datasets进行读取和处理

qq_44757503的博客 6061

springmvc自定义拦截器配置和使用

<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/buyer/**"/> <bean class="com.core.message.LoginInterceptor"></b...

lyf_ldh的博客 740

工业4.0 底层逻辑

工业4.0 的概念已经被滥用了,它与物联网,工业物联网等概念一样,几乎什么都往里面装。演变成了一句口号和愿景。许多人并不清楚工业4.0的底层逻辑到底是什么?如何遵循工业4.0 的思想构建新一代智能制造系统?并没用清晰地展示工业4.0的技术路线图。

姚家湾博客 1996

SpringBoot - 拦截器 preHandler、postHandler、afterCompletion 之案例讲解

SpringBoot - 拦截器 preHandler、postHandler、afterCompletion 之案例讲解

9254

手把手教你用SpringBoot+Vue3+Docker从零搭建一个在线OJ系统(附完整源码)

本文详细介绍了如何使用SpringBoot、Vue3和Docker从零搭建一个在线OJ系统,涵盖前后端开发、判题机实现及Docker容器化部署。通过完整的源码和实战步骤,帮助开发者掌握OJ系统的核心架构与关键技术,适用于算法训练、编程竞赛等场景。

weixin_42648844的博客 297

IsaacLab 从入门到精通(一) 环境配置和依赖安装

本系列文章将针对机器人操作任务中的强化学习平台IsaacLab提供较为全面的教程

DejaWu33的博客 1万+

Spring拦截器

实现方式2:HandlerInterceptorAdapter,重写preHandle(),postHandle(),afterCompletion() 三个方法。实现方式1:实现HandlerInterceptor接口,实现preHandle(),postHandle(),afterCompletion() 三个方法。<mvc:exclude-mapping path=“”/>:放开的请求。<mvc:mapping path=“/**”/>:拦截所有请求。

qq_50705328的博客 167

从AMBA到USB:手把手教你评估和选择Synopsys DesignWare里的免费商用IP

本文详细介绍了如何评估和选择Synopsys DesignWare中的免费商用IP,从AMBA到USB等关键模块。通过技术参数核对、验证环境评估和集成注意事项,帮助工程师高效利用这些经过硅验证的商业级IP,提升SoC设计效率。文章还探讨了免费IP与付费IP的边界策略,避免常见陷阱。

weixin_42683394的博客 298

springMVC中拦截器执行时机和执行顺序分析

springMVC中在配置拦截器的时候,拦截器的每个方法在哪里执行?如果有多个拦截器,那么他们每个方法的执行顺序怎么判断

w55935的博客 6585

TI 实时操作系统SYS/BIOS使用总结

1:概述: SYS/BIOS 是一个可扩展的实时的操作系统。具有非常快速的响应时间(在中断和任务切换时达到较短的延迟),响应时间的确定性,强壮的抢占系统,优化的内存分配和堆栈管理(尽量少的消耗和碎片)。能够实现系统的模块化并可裁剪。 最大的特点就是:实时。 2:XDCtools: XDCtools 是SYS/BIOS引用的一种实时的软件组件技术(RTSC),它包括一些有用的工具,标准的AP

带头奋青的博客 5万+

别再乱改grub.cfg了!手把手教你用GRUB2自定义多系统启动菜单(含UEFI/BIOS双模式配置)

本文详细介绍了如何安全、高效地使用GRUB2自定义多系统启动菜单,涵盖UEFI/BIOS双模式配置。通过避免直接编辑grub.cfg文件,采用正确的配置方法和命令,帮助用户打造稳定且美观的启动环境,特别适合Linux多系统用户和开发者。

weixin_42553471的博客 590

springmvc拦截器

SpringMVC中的interceptor拦截器,它主要的作用是拦截指定的用户请求,并进行相应的预处理与后处理。其拦截的时间点在“处理器映射器根据用户提交的请求映射出了所要执行的处理器类,并且也找到了要执行该处理器类的处理器适配器,在处理器适配器执行处理器之前。”当然处理器映射器映射出所要执行的处理器类时,已经将拦截器与处理器组合为了一个处理器执行链,并返回给了中央调度器。...

weixin_48826996的博客 8905

FineReport FCP模拟题五

新建决策报表,设置 移动端 格式,采用绝对布局。数据来源:FRDemo中的订单表/雇员表。

Davina_yu的博客 725

SpringMVC拦截器

拦截器是 `SpringMVC` 提供的一个组件,它允许我们在请求到达处理方法之前或之后,对请求拦截并进行预处理或后处理。拦截器可以帮助我们实现许多功能,如用户权限验证、记录日志、处理异常等。

是程序喵呀 2944

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

SpringMVC之拦截器

一、什么是拦截器? SpringMVC的处理器拦截器,类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。依赖于web框架,在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用。由于拦截器是基于web框架的调用,因此可以使用Spring的依赖注入(DI)进行一些业务操作,同时一个拦截器实例在一个controller生命周期之内可以多次调用。 二、拦截器与过滤器 2.1 什么是过滤器(Filter) 依赖于servlet容器。在实现上基于函数回调...

weixin_64987028的博客 7659

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【SpringMVC】拦截器使用详解

本文目录拦截器概述过滤器和拦截器区别拦截器的使用创建工程和添加相关文件添加SpringMVC提供的拦截器接口:HandlerInterceptor配置拦截器拦截所有Controller类里的所有处理方法只拦截某个请求路径的处理方法 拦截器概述 SpringMVC的处理器拦截器,类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。 过滤器和拦截器区别 过滤器:依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一

lucashu的博客 8939

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【SpringMVC】拦截器

什么是SpringMVC拦截器?它和过滤器有什么区别?以及拦截器的执行顺序,这篇文章主要针对这些问题进行实践解答。

你不来,再美的天地,都狼藉 ~ 3946

SpringMVC基于注解使用:拦截器

​​​​​再添加另外一个拦截器。

逍遥人世欢 1556

SpringMVC-拦截器

Spring MVC 中的拦截器(Interceptor)是一种强大的机制,用于拦截请求和响应。它允许开发者在请求处理的不同阶段执行预处理和后处理操作,比如日志记录、权限检查、国际化等。

时间如瑾 代码如诗 3656

【SpringMVC】SpringMVC拦截器

1.编写配置类。2.实现WebMvcConfigurer接口3.重写addInterceptors(InterceptorRegistry registry) 方法4.声明类注解为配置类:@Configuration5.编写拦截器6.在配置类中写入拦截器。在 Spring MVC 中,可以通过配置文件或者 Java 代码来注册拦截器。我们创建了一个名为 WebMvcConfig 的配置类,并实现了 WebMvcConfigurer 接口。

风浪很小 973

SpringMVC——拦截器的使用

文章目录SpringMVC——拦截器1、什么是拦截器2、拦截器的定义3、拦截器的执行流程4、拦截器实现登录判断验证 SpringMVC——拦截器 1、什么是拦截器 在开发一个网站时可能有这样的需求:某些页面只希望几个特定的用户浏览。对于这样的访问权限控制,应该如何实现呢?拦截器就可以实现上述需求。在 Struts 2 框架中,拦截器是其重要的组成部分,Spring MVC框架也提供了拦截器功能。 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和

万里顾一程的博客 584
上一篇: ERROR 2003 (HY000): Can't connect to MySQL server on 'xx.xx.xx.xx' (110)
下一篇: Spring4+Hibernate4事务小记
lcathm
博客等级 码龄18年 37粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值