27

ContextLoaderListener我用谷歌搜索了它,但没有找到满意的答案,如果你们能解释一下和之间的区别,那就太好了RequestContextListener

4

4 回答 4

16

contextloaderlistener :-引导侦听器以启动 Spring 的根 WebApplicationContext。只需委托给 ContextLoader。

requestcontextlistener :-这个监听器主要用于第三方 servlet,例如 JSF FacesServlet。在 Spring 自己的 web 支持中,DispatcherServlet 的处理是完全足够的。

于 2013-09-10T17:47:58.893 回答
5

如果您使用 Servlet 2.5 Web 容器,请求在 Spring 的 DispatcherServlet 之外处理(例如,使用 JSF 或 Struts 时),您需要注册org.springframework.web.context.request.RequestContextListener ServletRequestListener。对于 Servlet 3.0+,这可以通过 WebApplicationInitializer 接口以编程方式完成。或者,或者对于较旧的容器,将以下声明添加到您的 Web 应用程序的 web.xml 文件中:

    <listener>
        <listener-class>
            org.springframework.web.context.request.RequestContextListener
        </listener-class>
    </listener>

</web-app>
于 2016-08-14T13:11:20.347 回答
1

我已经读过,如果您使用 ContextLoaderListener,则不需要 RequestContextListener 或 Filter。它在本地线程中注册当前请求(属性),以便作用域代理可以使用它。

于 2014-05-27T08:05:36.223 回答
0

ContextLoaderListener 是启动 Spring 的根 WebApplicationContext 的引导侦听器。

当您希望请求线程中的属性保持活动状态时,使用 RequestContextListener。

这里需要注意的一点是,RequestContextListener中的inheritable flag设置为false。

http://docs.spring.io/spring/docs/4.0.6.RELEASE/javadoc-api/org/springframework/web/context/request/RequestContextListener.html

因此,如果您希望子线程继承请求属性,那么您应该尝试使用 RequestContextFilter 或 RequestContextHolder。

http://docs.spring.io/spring/docs/4.0.6.RELEASE/javadoc-api/org/springframework/web/filter/RequestContextFilter.html

于 2014-08-28T09:40:37.067 回答