【Spring学习笔记-MVC-17】Spring MVC之拦截器

作者:ssslinppp      


1. 拦截器简介及应用场景




2. 拦截器接口及拦截器适配器




3. 运行流程图


正常运行


中断流程






4. 程序实例


控制层:



@Controller

@RequestMapping(value = "/test")

public class TestController {

@RequestMapping(value = "/interceptor12")

public String interceptor12() {

System.out.println("Controller层方法-interceptor12");

return "index";

}

@RequestMapping(value = "/interceptor34")

public String interceptor34() {

System.out.println("Controller层方法-interceptor34");

return "index";

}

}



总共定义了5个拦截器


每个拦截器中只是打印消息,各拦截器类似,程序如下:



public class MyInterceptor1 extends HandlerInterceptorAdapter {

@Override

public boolean preHandle(HttpServletRequest request,

HttpServletResponse response, Object handler) throws Exception {

System.out.println("MyInterceptor1-preHandle()");

return true;

}

@Override

public void postHandle(HttpServletRequest request,

HttpServletResponse response, Object o, ModelAndView mav)

throws Exception {

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

}

@Override

public void afterCompletion(HttpServletRequest request,

HttpServletResponse response, Object o, Exception excptn)

throws Exception {

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

}

}


配置拦截器



<!-- 定义拦截器 -->

<mvc:interceptors>

<mvc:interceptor>

<!-- 拦截指定请求 -->

<mvc:mapping path="/test/interceptor12" />

<bean class="com.ll.Interceptor.MyInterceptor1" />

</mvc:interceptor>

<!-- 拦截所有的请求 -->

<mvc:interceptor>

<mvc:mapping path="/test/*" />

<bean class="com.ll.Interceptor.MyInterceptorAll" />

</mvc:interceptor>

<mvc:interceptor>

<mvc:mapping path="/test/interceptor12" />

<bean class="com.ll.Interceptor.MyInterceptor2" />

</mvc:interceptor>

<mvc:interceptor>

<mvc:mapping path="/test/interceptor34" />

<bean class="com.ll.Interceptor.MyInterceptor3" />

</mvc:interceptor>

<mvc:interceptor>

<mvc:mapping path="/test/interceptor34" />

<bean class="com.ll.Interceptor.MyInterceptor4" />

</mvc:interceptor>

</mvc:interceptors>


特别注意拦截器的配置顺序,如下:

  1. MyInterceptor1;
  2. MyInterceptorAll;
  3. MyInterceptor2;
  4. MyInterceptor3;
  5. MyInterceptor4;

其中,MyInterceptor1和MyInterceptor2拦截interceptor12请求,MyInterceptor3和MyInterceptor4拦截interceptor34请求,MyInterceptorAll拦截所有请求。



5. 测试


http://localhost:8080/SpringMVCTest/test/interceptor12 


http://localhost:8080/SpringMVCTest/test/interceptor34 


6. 其他应用举例-登录检测








7. 其他


博客:

http://www.cnblogs.com/ssslinppp

http://blog.sina.com.cn/spstudy

淘宝-代做毕设:

http://shop110473970.taobao.com/?spm=a230r.7195193.1997079397.42.AvYpGW

http://shop125186102.taobao.com/?spm=a1z10.1-c.0.0.SsuajD

来自为知笔记(Wiz)

附件列表

时间: 2024-11-07 10:40:19

【Spring学习笔记-MVC-17】Spring MVC之拦截器的相关文章

《Spring学习笔记》:Spring、Hibernate、struts2的整合(以例子来慢慢讲解,篇幅较长)

<Spring学习笔记>:Spring.Hibernate.struts2的整合(以例子来慢慢讲解,篇幅较长) 最近在看马士兵老师的关于Spring方面的视频,讲解的挺好的,到了Spring.Hibernate.struts2整合这里,由于是以例子的形式来对Spring+Hibernate+struts2这3大框架进行整合,因此,自己还跟着写代码的过程中,发现还是遇到了很多问题,因此,就记录下. 特此说明:本篇博文完全参考于马士兵老师的<Spring视频教程>. 本篇博文均以如下这

Spring学习笔记一(Spring核心思想)

通过学习<Spring in action (Third edition)>的第一章,我大概了解了Spring的基本思想: 1,依赖注入(Dependnecy Injection): 在不使用Spring框架的情况下,一个类要跟另一个类建立联系,可能会使用如下的模式: class A{...} class B{ private A a; ...       } 这样的话,每次实例化一个B的对象,如b1,必定实例化一个A的对象,如a1,并且b1和a1是紧耦合的,b1牢牢地和a1绑定在一起了.他们

学习笔记_springmvc文件上传和拦截器

文件上传 用到这两个包 配置视图解析器:springmvc配置文件配置 <!-- id必须要是"multipartResolver" --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- maxUploadSize文件上传的最大值,单位是byte

java JDK8 学习笔记——第17章 反射与类加载器

第十七章 反射与类加载器 17.1 运用反射 反射:.class文档反映了类基本信息,从Class等API取得类信息的方式称为反射. 17.1.1 Class与.class文档 1.java.lang.Class的实例代表Java应用程序运行时加载的.class文档,类.接口.Enum等编译过后,都会生成.class文档.Class类没有公开构造函数,实例时候JVM自动产生,每个.class文档加载时,JVM会自动生成对应的Class对象. 2.取得Class对象的方式: (1)通过Object

EJB学习笔记六(EJB中的拦截器)

 1.前言 听到拦截器,估计都不陌生,尤其是在Servlet规范中,充分应用了拦截器的概念.EJB3也提供了拦截器的支持,本质上是轻量级的AOP实现,拦截器可以将多个业务方法中的通用逻辑从业务方法中抽离出来,放在拦截器中实现,从而实现极好的代码复用. 2.EJB中的拦截器 Spring中的AOP实现提供了@Before.@AfterReturning.@AfterThrowing等大量的Annotation,这些注解用于定义功能丰富的增强处理,可是在EJB的拦截器没有打算实现完整的AOP ,只是

【Spring学习笔记-MVC-13】Spring MVC之文件上传

作者:ssslinppp       1. 摘要 Spring MVC为文件上传提供了最直接的支持,这种支持是通过即插即用的MultipartResolve实现的.Spring使用Jakarta Commons FileUpload技术实现了一个MultipartResolver实现类:CommonsMultipartResolver. 下面将具体讲解Spring MVC实现文件上传的具体步骤. 2. 添加Jar包 Spring MVC文件上传,需要添加如下两个jar包: commons-fil

【Spring学习笔记-MVC-10】Spring MVC之数据校验

作者:ssslinppp       1.准备 这里我们采用Hibernate-validator来进行验证,Hibernate-validator实现了JSR-303验证框架支持注解风格的验证.首先我们要到http://hibernate.org/validator/下载需要的jar包,这里以4.3.1.Final作为演示,解压后把hibernate-validator-4.3.1.Final.jar.jboss-logging-3.1.0.jar.validation-api-1.0.0.G

【Spring学习笔记-MVC-14】Spring MVC对静态资源的访问

作者:ssslinppp       参考链接: http://www.cnblogs.com/luxh/archive/2013/03/14/2959207.html http://www.cnblogs.com/fangqi/archive/2012/10/28/2743108.html 优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往使用

【Spring学习笔记-MVC-7】Spring MVC模型对象-模型属性讲解

作者:ssslinppp       来自为知笔记(Wiz) 附件列表 处理模型数据.png