过滤器 监听器 拦截器 区别

110 篇文章 0 订阅
95 篇文章 0 订阅

过滤器,监听器,拦截器

过滤器:主要的用途是过滤字符编码,做一些业务逻辑判断,随你的web应用启动而启动,只初始化一次,以后就可以拦截相关的请求,只有当你的web应用停止或者重新部署的时候才能销毁。

监听器:主要作用:做一些初始化的内容添加工作、设置一些基本的内容,比如一些参数或者是一些固定的对象,比如统计在线人数,当session创建时候数值就加1,当session销毁时候就减1.它是随着web应用的启动而启动,只初始化一次,随web应用的停止而销毁。

拦截器:面向切面编程应用,就是在你的service或者一个方法前调用一个方法,或者在方法后调用一个方法,在你调用方法前打印出字符串,也可以在你调用方法后打印字符串,甚至在你抛出异常时候做业务逻辑的操作。在*.xml中配置,定义拦截器实现HandlerInterceptor接口

 preHandle方法:进入Handler方法之前执行。可以用于身份认证、身份授权。比如如果认证没有通过表示用户没有登陆,需要此方法拦截不再往下执行(return false),否则就放行(return true)。
  postHandle方法:进入Handler方法之后,返回ModelAndView之前执行。可以看到该方法中有个modelAndView的形参。应用场景:从modelAndView出发:将公用的模型数据(比如菜单导航之类的)在这里传到视图,也可以在这里同一指定视图。
  afterCompletion方法:执行Handler完成之后执行。应用场景:统一异常处理,统一日志处理等。
在springmvc中,拦截器是针对具体的HandlerMapping进行配置的,也就是说如果在某个HandlerMapping中配置拦截,经过该 HandlerMapping映射成功的handler最终使用该拦截器。

过滤器(Filter):当你有一堆东西的时候,你只希望选择符合你要求的某一些东西。定义这些要求的工具,就是过滤器。
拦截器(Interceptor):在一个流程正在进行的时候,你希望干预它的进展,甚至终止它进行,这是拦截器做的事情。
监听器(Listener):当一个事件发生的时候,你希望获得这个事件发生的详细信息,而并不想干预这个事件本身的进程,这就要用到监听器。

把整个项目的流程比作一条河,那么监听器的作用就是能够听到河流里的所有声音,过滤器就是能够过滤出其中的鱼,而拦截器则是拦截其中的部分鱼,并且作标记。所以当需要监听到项目中的一些信息,并且不需要对流程做更改时,用监听器;当需要过滤掉其中的部分信息,只留一部分时,就用过滤器;当需要对其流程进行更改,做相关的记录时用拦截器。

自定义拦截器的使用需要实现HandlerInterceptor

自定义拦截器的配置:

<mvc:interceptors>

 <mvc:interceptor>

<mvc:mapping path=””>path后面路径是你的拦截器将要拦截这个路径下的所有请求

<mvc:exclude-mapping path=””>path后面路径是你指定拦截器不拦截当前路径下的请求

<bean class=””/>class后面路径是指你自定义的拦截器类的路径

</mvc:interceptor>

</mvc:interceptors>

 

异常处理:

<bean class=”org.springframework.web.servlet.handler.SimpleMappingExceptionResolver”>

<property name=”exceptionMappings”>

<props>

<prop key=”java.lang.Exception”>error</prop>

Key代表的是异常类型,error代表的是发生异常时候页面跳转到error页面

</props>

</property>

</bean>

@ExceptionHandler注解实现异常处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值