spring mvc 拦截器
2016-09-25 21:53
232 查看
使用spring mvc也有一段时间了,一直都没有总结过拦截器的用法
一、什么是拦截器
拦截器是通过统一拦截从浏览器发往服务器的请求来完成功能的增强
二、使用场景
解决请求的共性问题(如:乱码问题,权限问题等)
三、拦截器的实现
1、创建拦截器时需要实现HandlerInterceptor接口,并实现HandlerInterceptor接口中的三个方法
例:
public class TestInterceptor implements HandlerInterceptor{
@Override
public void afterCompletion(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
System.out.println("执行了afterCompletion");
}
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2, ModelAndView arg3) throws Exception {
System.out.println("执行了postHandle");
}
@Override
public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2) throws Exception {
System.out.println("执行了preHandle");
return true;
}
}
2、将拦截器注册进springMVC框架中
a、拦截全部的配置
<mvc:interceptors>
<bean class="com.fcy.web.interceptor.TestInterceptor" />
</mvc:interceptors>
b、只拦截指定部分的配置
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/userName.action"/>
<bean class="com.fcy.web.interceptor.TestInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
path:指定的拦截的位置,也可以使用表达式来指定
四、实现拦截器的另外一种方式,可以实现WebRequestInterceptor接口,并重写里面的三个方法
五、实现HandlerInterceptor与WebRequestInterceptor接口的区别
1、同样都需要实现里面的三个方法:preHandle、postHandle、afterCompletion
2、HandlerInterceptor接口中的preHandle有一个布尔类型的返回值,为true时,表示请求会继续,为false则表示请求将会被终止,不能继续方法请求的方法。而WebRequestInterceptor中的preHandle方法没有返回值,所有就没有拦截终止的功能
3、其他的都基本是一样的
六、多个拦截器的配置和使用
1、流程图
七、拦截器和过滤器的区别
1、过滤器依赖servlet容器,基于回调函数,过滤范围大
2、拦截器依赖框架容易,基于反射机制,只能过滤请求
一、什么是拦截器
拦截器是通过统一拦截从浏览器发往服务器的请求来完成功能的增强
二、使用场景
解决请求的共性问题(如:乱码问题,权限问题等)
三、拦截器的实现
1、创建拦截器时需要实现HandlerInterceptor接口,并实现HandlerInterceptor接口中的三个方法
例:
public class TestInterceptor implements HandlerInterceptor{
@Override
public void afterCompletion(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
System.out.println("执行了afterCompletion");
}
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2, ModelAndView arg3) throws Exception {
System.out.println("执行了postHandle");
}
@Override
public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2) throws Exception {
System.out.println("执行了preHandle");
return true;
}
}
2、将拦截器注册进springMVC框架中
a、拦截全部的配置
<mvc:interceptors>
<bean class="com.fcy.web.interceptor.TestInterceptor" />
</mvc:interceptors>
b、只拦截指定部分的配置
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/userName.action"/>
<bean class="com.fcy.web.interceptor.TestInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
path:指定的拦截的位置,也可以使用表达式来指定
四、实现拦截器的另外一种方式,可以实现WebRequestInterceptor接口,并重写里面的三个方法
五、实现HandlerInterceptor与WebRequestInterceptor接口的区别
1、同样都需要实现里面的三个方法:preHandle、postHandle、afterCompletion
2、HandlerInterceptor接口中的preHandle有一个布尔类型的返回值,为true时,表示请求会继续,为false则表示请求将会被终止,不能继续方法请求的方法。而WebRequestInterceptor中的preHandle方法没有返回值,所有就没有拦截终止的功能
3、其他的都基本是一样的
六、多个拦截器的配置和使用
1、流程图
七、拦截器和过滤器的区别
1、过滤器依赖servlet容器,基于回调函数,过滤范围大
2、拦截器依赖框架容易,基于反射机制,只能过滤请求
相关文章推荐
- 11 Spring MVC 访问入参获取和拦截器使用(@RequestParam 和 Interceptors)登录模块demo
- spring mvc 拦截器
- spring mvc 拦截器
- spring mvc的拦截器的posthandle怎么用
- spring MVC - Inteceptors(拦截器)
- Spring mvc拦截器实现登录验证拦截
- Spring MVC拦截器
- 在spring-boot工程中添加spring mvc拦截器
- Spring mvc拦截器+angular js拦截器 做用户登录拦截控制
- Spring MVC 拦截器
- Spring MVC的拦截器
- 自定义 spring mvc 拦截器(近期项目需求实现)
- spring mvc拦截器interceptor
- Spring MVC--13.自定义拦截器
- Spring MVC 拦截器
- spring MVC - Inteceptors(拦截器)
- Spring MVC拦截器的配置
- spring mvc 拦截器拦截jsp页面
- spring mvc拦截器
- 菜鸟之路——Spring MVC(六)拦截器