springmvc之自定义拦截器

自定义拦截器

  • 跟过滤器比较像的技术。发送请求时,被拦截器拦截,在控制器的前后添加额外功能。
  • 注意:

①跟aop区分:aop拦截特定方法(service实现类);
②拦截器是用来拦截请求,针对于控制器方法(对controller);

  • SpringMVC拦截器和Filter的区别:

拦截器只能拦截controller;
Filter可以拦截任何请求;

  • 拦截区别

WebServlet("/")除了.jsp以外的请求都进行拦截;
WebServlet("/*")所有请求都拦截

  • Fileter用法:
/*创建Filter类*/
public class DemoFilter implements Filter{
}
<!--在web.xml中配置Filter类-->
<filter>
	    <filter-name></filter-name>
	    <filter-class></filter-class>
</filter>
<filter-mapping>
	    <filter-name></filter-name>
	    <url-pattern>/</url-pattern>
</filter-mapping>
  • springmvc拦截器(interceptor)配置

第一步

/*创建Interceptor类*/
public class DemoInterceptor inplements HandlerInterceptor{

}
HandlerInterceptor的方法作用
preHandle在进入控制器之前执行,如果返回值为false,阻止进入拦截器。控制代码写到这里,比如什么时候可以访问控制器。
postHandle在控制器执行完成,进入到jsp之前进行。如:日志记录、敏感词过滤。
afterCompletion在jsp执行完成后执行。记录在执行过程中出现的异常。可以吧异常记录在日志中。
preHandle 参数作用
HttpServletRequest请求参数
HttpServletResponse响应参数
Object所拦截的是哪个控制器的哪个方法
postHandle 参数作用
HttpServletRequest请求参数
HttpServletResponse响应参数
Object所拦截的是哪个控制器的哪个方法
ModelAndView具备传值和视图功能,可以获取传的参数和进行页面跳转。在控制器中传入参数Model,model.addAttribute()进行传值,return进行跳转。此时可以通过ModelAndView进行获取和修改。
afterCompletion 参数作用
HttpServletRequest请求参数
HttpServletResponse响应参数
Object所拦截的是哪个控制器的哪个方法
Exception执行过程的异常

第二步

在springmvc.xml里配置拦截器

<!--配置拦截器,第一种方法-->
<mvc:interceptors>
	<!--配置拦截器类,表示所有控制器器都拦截-->
	<bean class=”xxx.xxx.interceptor,DemoInterceptor”></bean>
</mvc:interceptors>
<!--配置拦截器,第二种方法-->
<mvc:interceptors>
	<!--配置拦截器类,表示拦截特定url的控制器-->
	<mvc:interceptor>
  	 	<mvc:mapping    path="/demo"/>
   	 	<mvc:mapping    path="/demo1"/>
   	 	<mvc:mapping    path="/demo2"/>
   	 	<!--表示只拦截demo、demo1、demo2控制器,@RequestMapping("demo")-->
   	 	
   		 <bean  class=”xxx.xxx.interceptor.DemoInterceptor”></bean>
	</ mvc:interceptor>
</mvc:interceptors>
  • 测试方法
    可以在filter、控制器、jsp中写输出语句,看看执行顺序。执行的中心点在控制器。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值