首页 > 编程知识 正文

springmvc自定义拦截器,Springmvc拦截器拦截流

时间:2023-05-05 09:21:04 阅读:154529 作者:1380

拦截器:

1 )拦截器需要实现HanderInterceptor界面,如SpringMVC中所示

2 )拦截器与过滤器相似,功能方向侧重点不同。

过滤器是过滤请求参数并设置编码、字符集等的任务。

拦截器拦截用户的请求,并对请求进行判断处理。

3 )拦截器是全局的,可以对多个控制器进行拦截。

一个项目有0个以上的拦截者,他们可以一起屏蔽用户的请求。

拦截器常用于:用户的登录处理、权限检查、日志记录。

拦截器的使用过程3:1 .类实现HanderInterceptor接口//拦截器类3360拦截器用户的请求publicclassmyinterceptorimplementshandlementshandlor 定义prehandle预处理方法3360的参数: * Object handler:被阻塞的控制器对象*返回值boolean: * true:通过了拦截器的认证,并且处理过程* false:请求未通过拦截器验证,并在请求到达拦截器时终止。 *特征: * 1.方法先于控制器方法执行。 *用户请求将首先到达此方法* 2.通过此方法可以获取请求信息并验证请求是否满足要求。 *可以确认用户是否登录,以及用户是否可以访问链接地址(url )。 *如果验证失败,则可以截断请求,并且无法处理请求。 *如果验证成功,可以提交请求。 在这种情况下,控制方法是* */@ overridepublicbooleanprehandle (httpservletrequestrequest,httpservletresponsion object handler (throws exced ) ) 返回真; } /* * postHandle后处理方法:*参数: * Object handler:截获的控制器对象* ModelAndView mv:处理器方法的返回值*特征3360 * 1 .在处理器方法之后执行2 .可以获得处理器方法的返回值ModelAndView,可以修改ModelAndView中的数据和视图,*从而影响最终执行的结果。 * 3.主要对原执行结果进行二次修改。 *//@ overridepublicvoidposthandle (httpservletrequestrequest,HttpServletResponse response,Object handler, modelandview mv (throws exception (system.out.println ) )“开始执行拦截器MyInterceptor的postHandle方法”); } /* * afterCompletion:上次执行的方法*参数: * Object handler:被阻止的处理器对象* Exception ex:程序出现的异常*特殊中规定,如果在cjdmj视图处理完成后对视图执行正向,则认为请求已完成。 * 2.一般从事资源回收工作。 在程序请求过程中,创建了一些对象。 您可以在此删除并回收占用的内存。 *//@ overridepublicvoidaftercompletion (httpservletrequestrequest,HttpServletResponse response,Object handler, exception ex (throws exception (system.out.println ) )“开始执行拦截器的afterCompletion方法”; }需要注意的是,在更高版本的Spring框架中,HanderInterceptor接口的三种方法都是default的声明,应该使用哪一种进行重写。 但是,在Spring的较低版本中,这三种方法不是default声明。

在SpringMVC配置文件中,声明拦截器,并让框架知道拦截器的存在! -拦截器:拦截器声明可以有0以上--MVC :拦截器! -宣布第一个拦截器--MVC :拦截器! -指定截获的请求的uri地址。 path是监听地址,通配符** ** :可以表示任何字符、文件或多级目录和目录中的文件。 --MVC :映射路径='/* * ' /! -声明拦截器对象--bean class=' com.wxk.handler.my interceptor '/MVC : interceptor! -第二个拦截器--MVC : interceptor MVC : mapping path='/* '/bean class=' com.wxk.handler.my interceptor2' /

2 )拦截器在控制器方法执行后也会被执行

3 )请求处理完成后仍运行拦截器

多个拦截器的执行顺序

在有多个拦截器情况下,以处理器的执行为界,成为以下的执行顺序

1 .第一个拦截器preHandle返回true,第二个拦截器返回true

2 .第一个拦截器返回true,第二个拦截器返回false afterCompletion只有在该拦截器的preHandle返回true之后

拦截器和过滤器的区别:1.过滤器是servlet中的对象,拦截器是SpringMVC框架中的对象。 也就是说,一旦脱离框架,拦截器就不能使用

2 .过滤器是实现过滤器接口的对象,拦截器实现handler拦截器

3 .过滤器是用来设定request、response的参数、属性的,重点是数据的过滤,拦截器是用来验证要求的,可以阻断要求。

4 .过滤器在拦截器之前执行

5 .过滤器是tomcat服务器创建的对象,拦截器是SpringMVC容器创建的对象

6 .过滤器有一个执行时间点,拦截器有三个执行时间点

7 .过滤器可以处理jsp、js、html等; 拦截器是以迎击controller为重点的对象。 如果dispatcher servlet无法接收到您的请求,则此请求不会执行内容侦听

8 .拦截器阻止常规类方法的执行,过滤器过滤servlet请求响应

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。