RequestContextListener有什么用

问题:

java.lang.IllegalStateException: No thread-bound request found:
Are you referring to request attributes outside of an actual web request,
or processing a request outside of the originally receiving thread?
If you are actually operating within a web request and still receive this message,
your code is probably running outside of DispatcherServlet/DispatcherPortlet:
In this case, use RequestContextListener or RequestContextFilter to expose the current request.

查询:

public class RequestContextListener
extends Object
implements ServletRequestListener

Servlet listener that exposes the request to the current thread, through both LocaleContextHolder and

RequestContextHolder. To be registered as listener in web.xml.

Alternatively, Spring‘s RequestContextFilter and Spring‘s DispatcherServlet also expose the same request

context to the current thread. In contrast to this listener, advanced options are available there (e.g.

"threadContextInheritable"). This listener is mainly for use with third-party servlets, e.g. the JSF FacesServlet.

Within Spring‘s own web support, DispatcherServlet‘s processing is perfectly sufficient.

解释

疑问:在介绍webApplicationContext初始化时,我们已经通过ContextLoaderListener将web容器与

spring容器整合,为什么这里又要引入一个额外的RequestContextListener以支持Bean的另外3个作用域呢?

在整合spring容器时使用ContextLoaderListener,它实现了ServletContextListener监听器接口,

ServletContextListener只负责监听web容器启动和关闭的事件。

而RequestContextListener实现ServletRequestListener监听器接口,该监听器监听HTTP请求事件,web服务器

接收的每一次请求都会通知该监听器。

spring容器启动和关闭操作由web容器的启动和关闭事件触发,但如果spring容器中的Bean需要request,session,globalsession

作用域的支持,spring容器本身就必须获得web容器的HTTP请求事件,以HTTP请求的事件驱动Bean作用域的控制逻辑。

时间: 2024-11-05 02:18:48

RequestContextListener有什么用的相关文章

request.RequestContextListener

由于是使用spring mvc来做项目,因此脱离了HttpServletRequest作为参数,不能够直接使用request,要想使用request可以使用下面的方法: 在web点xml中配置一个监听 [html] view plaincopyprint? <listener> <listener-class> org.springframework.web.context.request.RequestContextListener </listener-class>

Spring的作用域以及RequestContextListener作用

一.配置方式 在Spring2.0中除了以前的Singleton和Prototype外又加入了三个新的web作用域,分别为request.session和global session,如果你想让你的容器里的某个bean拥有其中某种新的web作用域, 除了在bean级上配置相应的scope属性,还必须在容器级做一个额外的初始化配置. <listener> <listener-class>org.springframework.web.context.request.RequestCo

使得任何Bean在Spring IOC容器中可以访问request、session、global Session作用域,RequestContextListener

首先在web.xml配置 <web-app> ... <listener> <listener-class> org.springframework.web.context.request.RequestContextListener </listener-class> </listener> ... </web-app> 然后在你的Bean中获取request ... HttpServletRequest request = ((S

web.xml 中的listener、filter、servlet加载及一些配置

在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰. 首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关.即不会因为 filter 写在 listener 的前面而会先加载 filter.最终得出的结论是:listener -> filter -> servlet 同时还存在着这样一种配置节:context-param,它用于向 Servlet

SSM框架中使用Spring的@Transactional注解进行事务管理

一 介绍 在企业级应用中,保护数据的完整性是非常重要的一件事.因此不管应用的性能是多么的高.界面是多么的好看,如果在转账的过程中出现了意外导致用户的账号金额发生错误,那么这样的应用程序也是不可接受的 数据库的事务管理可以有效地保护数据的完整性(PS:关于数据库的事务管理基础可以参考我以前写过的这篇文章:http://www.zifangsky.cn/385.html),但是原生态的事务操作需要写不少的代码,无疑是非常麻烦的.在使用了Spring框架的应用中,我们可以使用@Transactiona

spring学习四

1: InitializingBean  vs  init-method InitializingBean 是一个接口,有一个方法afterPropertiesSet,不建议使用:因为InitializingBean是Spring接口,这样导致 bean和spring耦合到一起了. <bean id="SimpleBean1" class="com.SimpleBean" init-method="init" destroy-method=

Spring 笔记

1, 新建包或导入工程错误提示: The type javax.servlet.ServletContext cannot be resolved. It is indirectly referenced from required .class files. 解决方法:在安装的tomcat下的lib目录里面找到servlet-api.jar包,导入项目下的lib文件夹中即可. 2,Could not load the Tomcat server configuration at /Server

如何在类中获取request,和网站路径

@RequestMapping(value = "res/testjs") public ModelAndView testjs( ModelMap model ) throws Exception { String path = resService.getRequestPath(); model.put("path", path); return new ModelAndView("res/testjs"); } 上面是调用: 下面是方法:

IEDA开发多项目的示例

前言:慢慢习惯用IDEA了,觉得用起来确实还不错,有VS的感觉,但是缺点就是每次启动慢,如果修改以后反应也需要好久,这方面做得不好.但是职能提示个人觉得要比Eclipse好太多.好了现在我用IDEA来开发一个简单的功能,希望给刚刚使用不太熟悉或者准备使用IDEA的开发者一点帮助. 1:需求 我们开发一个项目基本的需要一个domain层.dao层.Service层.web层.有的时候我们也需要comment层(存放一些公告调用的一些类) 2:创建项目 第一步:我们先创建一个父工程. 点击file然