spring mvc 拦截器需要实现HandlerInterceptor接口_handlerinterceptor接口的方法-程序员宅基地

技术标签: interceptor  Spring  

spring mvc 拦截器需要实现HandlerInterceptor接口

复制代码
 public class UserIsLoginInterceptor implements HandlerInterceptor  {
    @Override
    public boolean preHandle(HttpServletRequest request,
            HttpServletResponse response, Object handler) throws Exception {
        
        System.out.println("Pre-handle");
        
        return false;
    }
    
    @Override
    public void postHandle(HttpServletRequest request,
            HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        System.out.println("Post-handle");
    }
    
    @Override
    public void afterCompletion(HttpServletRequest request,
            HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        System.out.println("After completion handle");
    }
}
复制代码

模拟一个控制器:

复制代码
@Controller
public class AddUserController {
    @RequestMapping(value = "/user/addUi", method = RequestMethod.GET)
    public String addUi() {
        return "addUser";
    }
}
复制代码

spring的配置:

复制代码
<?xml  version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">
        
    <context:annotation-config />
    <context:component-scan base-package="net.viralpatel.spring3.controller"/>
    
  <!--注册spring mvc 拦截器-->
<mvc:interceptors>   <bean class="com.yjdgis.interceptor.UserIsLoginInterceptor" /> </mvc:interceptors>
  <!--多个拦截器的注册-->
<!--<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
         <property name="interceptors"> 
            <list>            
             <ref bean="com.yjdgis.interceptor.handlerInterceptor1"/>           
             <ref bean="com.yjdgis.interceptor.handlerInterceptor2"/>         
          </list>     
      </property> 
   </bean>  --
>
<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> </beans>
复制代码

则拦截器的执行顺序就是此处添加拦截器的顺序;会输出:
HandlerInterceptor1 preHandle  
HandlerInterceptor2 preHandle  
  
HandlerInterceptor2 postHandle 
HandlerInterceptor1 postHandle  

HandlerInterceptor2 afterCompletion  
HandlerInterceptor1 afterCompletion

------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 

附加说明:

spring配置文件注册拦截器一

 <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="com.yjdgis.interceptors.MyInterceptor"></bean>
        </mvc:interceptor>
    </mvc:interceptors>

spring拦截器注册二

bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
        <property name="interceptors">
            <list>
                <bean class="com.yjdgis.interceptors.MyInterceptor"></bean>
            </list>
           </property>
    </bean>

在方法二中不可使用<mvc:annotation-driven />。 它默认已经注册了DefaultAnnotationHandlerMapping,AnnotationMethodHandlerAdapter

<!-- 包扫描,注册了各种处理器,<mvc:annotation-driven />也有可能重复注册好多处理器。只有我们都熟悉了,再使用完全自动化吧 -->
<context:component-scan base-package="com.yjdgis"/>

多拦截器注册:

<mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="com.yjdgis.interceptors.MyInterceptor1"></bean>
        </mvc:interceptor>

    <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="com.yjdgis.interceptors.MyInterceptor2"></bean>
         </mvc:interceptor>
</mvc:interceptors>

 

原文出自:http://www.cnblogs.com/hwj2wj/archive/2013/03/26/2981919.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/majiedota/article/details/26050665

智能推荐

ibase4J分布式架构使用eclipse部署_ibase4j eclipse导入-程序员宅基地

文章浏览阅读771次。这两天使用ibase4J分布式架构搭建环境,所以研究了一下,在本地先尝试一下。我使用的是基于64位操作系统的,先说一下本地环境:jdk 1.8_64;mysql 5.6及以上;maven 3.5.3;eclipse 较老的版本,是4.5.2;win10,x64;由于我下载的是ibase4J spring boot版的,而spring boot有内置tomcat,所以我没..._ibase4j eclipse导入

c++操作xml文件_c++ xml-程序员宅基地

文章浏览阅读1.1w次,点赞20次,收藏108次。做软件的不会c++,都不好意思说自己是搞软件的。最近也开始慢慢学习c++的东西,今天就写写c++如何操作xml文件吧。我们使用的是tinyxml,有个小巧的库,可以生成和解析XML文档。免费开源,可以直接将源码加到项目中,适合多种平台。他的官方文档为http://sourceforge.net/projects/tinyxml/,可以直接从上面下载相关资源。下载好之后添加到VC项目中..._c++ xml

Apache Flink 1.10 TaskManager 内存管理优化_taskmanager.runtime.hashjoin-bloom-filters-程序员宅基地

文章浏览阅读186次。转载_taskmanager.runtime.hashjoin-bloom-filters

组合数学中的项链计数_组合数学项链问题-程序员宅基地

文章浏览阅读789次。给c种不同颜色宝石能穿成多少种长度为s的宝石项链(本质不同)Burnside定理的应用:当n为奇数时,有n种翻转,每种翻转都是以一个顶点和该顶点对边的中点对称。有k^(n/2+1)*n种。当n为偶数时,有n种翻转,其中一半是以两个对应顶点,另一半是以两条对边对称。有k^(n/2+1)*n/2+k^(n/2)*n/2种。..._组合数学项链问题

蓝桥杯第八届 省赛 c语言A组_第八届蓝桥杯c语言a组-程序员宅基地

文章浏览阅读575次,点赞2次,收藏7次。第一题标题:迷宫X星球的一处迷宫游乐场建在某个小山坡上。它是由10x10相互连通的小房间组成的。房间的地板上写着一个很大的字母。我们假设玩家是面朝上坡的方向站立,则:L表示走到左边的房间,R表示走到右边的房间,U表示走到上坡方向的房间,D表示走到下坡方向的房间。X星球的居民有点懒,不愿意费力思考。他们更喜欢玩运气类的游戏。这个游戏也是如此!开始的时候,直升机把10..._第八届蓝桥杯c语言a组

常用的抓包工具_tcap包-程序员宅基地

文章浏览阅读1.3k次。建议先了解不同协议和网络层的数据包结构。不然,你将无法了解如何做包分组工作,以及这些工具如何使用。出于学习目的,在使用这些工具列表之前,你必须了解不同协议的数据包,包中的不同字段,这些包字段的含义或目的,以及这些包在网络通信中的使用方式。一旦你知道这些事情,你将能够改变这些值,以便你在网络中看到你所需的效果。1. HpingHping是最受欢迎和免费的抓包工具之一。它允许你修改和发送自定义..._tcap包

随便推点

centOs7下 bochs安装:_centos 7 安装 bochs-程序员宅基地

文章浏览阅读2.2k次,点赞4次,收藏11次。###安装步骤:##本人使用环境为VMware虚拟机CentOs7内核版本:Linux version 3.10.0-957.el7.x86_64安装QEMU版本: bochs-2.6.9##下载源码及依赖:sudo yum install gtk2 gtk2-develsudo yum install libXt libXt-develsudo yum i..._centos 7 安装 bochs

React性能优化之shouldComponentUpdate、PureComponent和React.memo-程序员宅基地

文章浏览阅读717次。React性能优化之shouldComponentUpdate、PureComponent和React.memo前言最近一直在学习关于React方面的知识,并有幸正好得到一个机会将其用在了实际的项目中。所以我打算以博客的形式,将我在学习和开发(React)过程中遇到的问题记录下来。这两天遇到了关于组件不必要的重复渲染问题,看了很多遍官方文档以及网上各位大大们的介绍,下面我会通过一些demo结合自己的理解进行汇总,并以此作为学习React的第一篇笔记(自己学习,什么都好,就是费头发…)。本文主要介绍以_componentupdate

C#RTSP通信2:RTSP语音广播+语音对讲(WinForm版本)_winform rtsp-程序员宅基地

文章浏览阅读4.5k次。C#RTSP通信2:RTSP语音广播+语音对讲(WinForm版本)C#RTSP通信1:C#高性能RTSP播放器(使用FFmepg封装自定义控件,使用简单)C#RTSP通信2:RTSP语音广播+语音对讲(WinForm版本)发布文件代码调用using NAudio.Codecs;using NAudio.Wave;using RTSPClient;using System;using System.IO;using System.Threa.._winform rtsp

Python报错pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool解决方法_pip vendor urllib3-程序员宅基地

文章浏览阅读8.8w次,点赞238次,收藏506次。在安装第三方库的时候,Python报错pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.解决方法如下:pip --default-timeout=100 install gevent..._pip vendor urllib3

springcloud版本号_锁定springcloud的版本-程序员宅基地

文章浏览阅读3.2k次。因为Spring Cloud不同其他独立项目,它拥有很多子项目的大项目。所以它是的版本是 版本名+版本号 ,下面这些都是它的一些版本名:这些Angle,Brixton,Camden等都是伦敦地铁站的名字,他们按照字母顺序发行,就是版本的演进.当一个版本的Spring Cloud项目的发布内容积累到临界点或者一个严重bug解决可用后,就会发布一个“service releases”版本,简称SR..._锁定springcloud的版本

GDPR从数据主体处收集信息时的信息提供,应包含哪些内容?怎样做才合规?_gdpr 组织需要向数据主体提供哪些类型的信息 处理的目的-程序员宅基地

文章浏览阅读1.7k次。2018年GDPR条例实施以后很多企业认识到,GDPR虽是欧盟法律,但有广泛的域外效力。根据GDPR第3条,对于在欧盟境内设有机构的企业,如其通过该机构开展业务的过程中涉及对个人数据的处理,不管该处理是否发生在欧盟境内,都应适用GDPR。对于未在欧盟境内设立机构的企业,如其向欧盟境内的个人提供商品或服务(无论是否需要付费)的过程中,或其对欧盟境内的个人发生于欧盟境内的行为进行监测的过程中,涉及..._gdpr 组织需要向数据主体提供哪些类型的信息 处理的目的

推荐文章

热门文章

相关标签