filter、interceptor、aspect应怎样选择?许多人中招
副问题[/!--empirenews.page--]
媒介小搭档们应该传闻过过滤器、拦截器、切面,印象上都可以或许起到截断拦截的浸染,在做一些营业需求时,不知道怎样选择,本日老顾就来先容一下他们之间的区别。 Filter过滤器过滤器可以拦截到要领的哀求和相应(ServletRequest request, ServletResponse response),并对哀求相应做出过滤操纵。
行使过滤器的目标是用来做一些过滤操纵,获取我们想要获取的数据,好比:在过滤器中修改字符编码;在过滤器中修改HttpServletRequest的一些参数,包罗:过滤低俗笔墨、伤害字符等。 话不多说,先上代码 ![]() 再界说两个Controller,一个UserController,一个OrderController ![]() ![]() 固然Filter过滤器和Controller哀求都已经界说了,但此刻过滤器是不起浸染的。必要把Filter设置一下,有两个方案 第一个方案在Filter上面加上@Component
第二个方案设置化注册过滤器 ![]() 第二个方案的特点就是可以细化到过滤哪些法则的URL 我们来启动应用时,过滤器被初始化了,init函数被回调。 ![]()
![]() 看看节制台的日记输出 ![]()
![]() 节制台日记输出 ![]() 遏制应用后,节制台输出 ![]() Filter随web应用的启动而启动,只初始化一次,随web应用的遏制而烧毁。
我们再来看看doFilter要领
从参数我们看到,filter内里是可以或许获取到哀求的参数和相应的数据;但此要领是无法知道是哪一个Controller类中的哪个要领被执行。 尚有一点必要留意的是,filter中是没法行使注入的bean的,也就是无法行使@Autowired ![]() 上面代码注入的值为null。这是为什么呢?
Interceptor拦截器依靠于web框架,在SpringMVC中就是依靠于SpringMVC框架。在实现上,基于Java的反射机制,属于面向切面编程(AOP)的一种运用,就是在一个要领前,挪用一个要领,可能在要领后,挪用一个要领。 ![]() 在WebMvcConfigurationSupport设置一下 ![]() 执行功效 ![]() 我们发明拦截器中可以获取到Controller工具 preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) object handler就是controller要领工具 HandlerMethod handlerMethod = (HandlerMethod)handler; 但我们发明获取不到要领的参数值,这个是为什么呢?在DispatcherServlet类中,要领 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |