首页 > 编程知识 正文

java怎么使用过滤器进行拦截,spring的拦截器和过滤器区别

时间:2023-05-05 06:12:55 阅读:17154 作者:3083

1 .过滤器:

依赖于servlet容器。 虽然实现中几乎可以基于函数回调过滤所有请求,但它的缺点是在容器初始化时只调用一个过滤器实例。 使用过滤器的目的是进行过滤器操作,以获取想要获取的数据,如通过过滤器更改字符编码。 在过滤器中更改http servlet request的一些参数。 例如,过滤低俗文字、危险文字等

2 .拦截器:

依赖于web框架,在SpringMVC中依赖于SpringMVC框架。 实现中基于Java的反射是面向切片编程(AOP )的一种操作。 拦截器是基于web框架的调用,因此可以使用Spring的dependentinmultiplexing执行一些业务操作。 此外,拦截器实例可以在控制器的生命周期中多次调用。 然而,缺点是只能阻止控制器请求,而不能阻止直接访问静态资源之类的其它请求

3 .过滤器和拦截器的区别:

拦截器基于java的反射机制,滤波器基于函数回调。

拦截器不依赖于servlet容器,过滤器依赖于servlet容器。

拦截器只对action请求起作用,但过滤器几乎对所有请求起作用。

阻止程序可以访问action上下文、值堆栈中的对象,但不能访问过滤器。

在action的生命周期中,将多次调用阻止程序,但在容器初始化时只调用一次过滤器。

拦截器可以获取IOC容器中的各个bean,但不能进行过滤,这一点很重要。 向拦截器注入服务后,可以调用业务逻辑。

过滤器

@ overridepublicvoiddofilter (servletrequestrequest,ServletResponse response,FilterChain chain ) throws IOException,servle

system.out.println('before . ';

chain.dofilter(request,response );

system.out.println('after . ';

}

chain.dofilter(request,response ); 此方法的调用充当一个分水岭。 实际调用servlet的doService (方法是chain.dofilter ) request,response ); 用这种方法进行的。

拦截器

窃听器被过滤器包裹着。 @Override

publicbooleanprehandle (httpservletrequestrequest,HttpServletResponse response,对象处理程序) throws Exception {

系统. out.println (pre handle );

返回真;

}

@Override

publicvoidposthandle (httpservletrequestrequest,HttpServletResponse response,对象处理程序,ModelAndView modelAndView ) )

system.out.println(posthandle );

}

@Override

publicvoidaftercompletion (httpservletrequestrequest,http servlet响应响应,对象处理程序,Exception ex ) throwsexcexcest

system.out.println (after completion );

}

a.preHandle ()此方法是过滤器的chain.dofilter(request,response )方法的上一步,也就是[ system.out.println ] ' befonse

可以在b.preHandle ()方法和returnModelAndView之前操作控制器的ModelAndView内容。

c.afterCompletion ()方法在过滤器返回前端之前执行。 也就是“chain.do filter (请求,响应)”“system.out.println”' after . '

SpringMVC的工作原理是同一servlet将请求分发到不同的控制器。 实际上,此过程是在servlet的servlet ()方法中执行的。 所以,过滤器、拦截器、service ()方法、dispatc )方法的执行顺序应该是这样的。 粗略地画了图。 其实是个非常好的测试。 我自己写了过滤器、拦截器,在那些方法上加了断点,去了F8得出了结论。

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