浅析java中 Spring MVC 拦截器作用及其实现

 更新时间:2017年04月17日 14:33:26   投稿:wbb  
本篇文章主要介绍了java中SpringMVC 拦截器的使用及其实例,需要的朋友可以参考

拦截器的实现

1、编写拦截器类实现HandlerInterceptor接口;

2、将拦截器注册进springmvc框架中;

3、配置拦截器的拦截规则;

其他实现方法

WebRequestInterceptor接口:

与上一个的区别是参数区别和prehandle的方法没有返回值。没有上一个功能全,因此常用第一个。

拦截器的使用场景

 处理所有请求共性问题:

1、乱码问题:用request,response参数去设置编码;

2、解决权限验证问题(是否登陆,取session对象查看);

拦截器与过滤器的区别

1、拦截器Interceptor依赖于框架容器,基于反射机制,只过滤请求;

2、过滤器Filter依赖于Servlet容器,基于回调函数,过滤范围大;

例子

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
 
public class TestInterceptor implements HandlerInterceptor {
 /**
  * 返回值说明是否需要将当前的请求拦截下来
  * false:请求将被终止
  * true:请求会被继续运行
  * Object handler 表示的是被拦截的请求的目标对象
  */
 @Override
 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
   throws Exception {
  System.out.println("TestInterceptor.preHandle()");
  return true;
 }
 /**
  * modelAndView:
  *  可以通过modelAndView参数改变显示的视图,或者修改发往视图的方法
  */
 @Override
 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
   ModelAndView modelAndView) throws Exception {
  System.out.println("TestInterceptor.postHandle()"); 
 }
 /**
  * 在视图加载完毕之后调用
  * 常用于作于资源的销毁,流等
  * 类似于析构函数
  */
 @Override
 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
   throws Exception {
  System.out.println("TestInterceptor.afterCompletion()"); 
 }
}

注册方式:

在springmvc的Dispatcherservlet配置文件中加入拦截器代码;

<!-- 注册拦截器 -->
 <mvc:interceptors>
 <!-- 单个拦截器:设置具体的拦截路径 -->
 <mvc:interceptor>
  <mvc:mapping path="/courses/view2/*">
  <bean class="com.cc.mvcdemo.interceptor.TestInterceptor"></bean>
 </mvc:mapping></mvc:interceptor>
 <!-- 第二种方式:拦截经过当前Dispatcherservlet的所有请求 -->
 <bean class="com.cc.mvcdemo.interceptor.TestInterceptorTwo"></bean>
 </mvc:interceptors>

希望本篇文章内容对各位朋友有所帮助

相关文章

  • Java后台与微信小程序的数据交互实现

    Java后台与微信小程序的数据交互实现

    这篇文章主要介绍了Java后台与微信小程序的数据交互实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • SpringMVC实现Validation校验过程详解

    SpringMVC实现Validation校验过程详解

    这篇文章主要介绍了SpringMVC实现Validation校验过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • springboot中使用groovy的示例代码

    springboot中使用groovy的示例代码

    Groovy就是一种继承了动态语言的优良特性并运行在JVM上的编程语言,Groovy支持动态输入,闭包,元编程,运算符重载等等语法,这篇文章主要介绍了springboot中使用groovy的相关知识,需要的朋友可以参考下
    2022-09-09
  • springboot 参数格式校验操作

    springboot 参数格式校验操作

    这篇文章主要介绍了springboot 参数格式校验操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • mybatis plus表的创建时间和修改时间的操作方法

    mybatis plus表的创建时间和修改时间的操作方法

    这篇文章主要介绍了mybatis plus表的创建时间和修改时间的实现方法,本文给大家分享两种方法,每种方法通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2021-09-09
  • 详解JVM栈溢出和堆溢出

    详解JVM栈溢出和堆溢出

    今天带大家学习的是Java的相关知识,文章围绕着JVM栈溢出和堆溢出展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • IDEA2022搭建Spring Cloud多模块项目的详细过程

    IDEA2022搭建Spring Cloud多模块项目的详细过程

    这篇文章主要介绍了IDEA2022搭建Spring Cloud多模块项目,网上有很多教程父模块都是通过maven的方式创建的,然后子模块是通过Spring Initalizr方式创建,这种方式父模块无法管理子模块的依赖仲裁,需要每个子模块自行管理,就失去了父模块的用处了
    2022-10-10
  • springboot如何添加全局异常捕获类

    springboot如何添加全局异常捕获类

    这篇文章主要介绍了springboot如何添加全局异常捕获类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • 基于mybatis 动态SQL查询总结

    基于mybatis 动态SQL查询总结

    这篇文章主要介绍了mybatis 动态SQL查询总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • SpringBoot使用Async注解失效原因分析及解决(spring异步回调)

    SpringBoot使用Async注解失效原因分析及解决(spring异步回调)

    这篇文章主要介绍了SpringBoot使用Async注解失效原因分析及解决(spring异步回调),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10

最新评论