Spring使用session,request,global sessiong作用域出现异常解决方法_平_静的博客-程序员宅基地

技术标签: spring  spring作用域  spring技术  

主要问题出在与web.xml配置文件中,在该配置文件中除了需要配置

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

还需要配置

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

将HTTP request对象绑定到为该请求提供服务的Thread。 这使得具有request和session作用域的bean能够在后面的调用链中被访问到。

具体参考下面解释:
要使用request、session和 global session作用域的bean(即具有web作用域的bean), 在开始设置bean定义之前,还要做少量的初始配置。请注意,假如你只想要“常规的”作用域,(singleton和prototype),就不需要这一额外的设置。

在目前的情况下,根据你的特定servlet环境,有多种方法来完成这一初始设置…

如果你用Spring Web MVC,即用SpringDispatcherServlet或DispatcherPortlet来处理请求,则不需要做特别的配置:DispatcherServlet 和 DispatcherPortlet已经处理了所有有关的状态

当使用了Spring’s DispatcherServlet以外的Servlet 2.4及以上的Web容器时(如使用JSF或Struts),你需要在Web应用的’web.xml’文件中增加 javax.servlet.ServletRequestListener 定义

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

如果你用的是早期版本的web容器(Servlet 2.4以前的版本),那么你要使用一个javax.servlet.Filter的实现。请看下面的web.xml配置片段:

<web-app>
..
<filter>
<filter-name>requestContextFilter</filter-name>
<filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>requestContextFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
...
</web-app>

RequestContextListener和RequestContextFilter两个类做的都是同样的工作: 将HTTP request对象绑定到为该请求提供服务的Thread。 这使得具有request和session作用域的bean能够在后面的调用链中被访问到。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/a382064640/article/details/49685277

智能推荐

深度学习普里姆算法(Prim)_qq_44086987的博客-程序员宅基地

如果你对数据结构了解不深,又想要学习普里姆算法,建议你看看我这篇,我尽量往细致的方向写,如果有些大佬认为我写的比较啰嗦,请见谅,毕竟我的目的是为了让数据结构小白能够在理解普里姆算法上相对容易一些。发文的目的 我个人学习树结构已经有相当长一段时间了,树这块对于初学者来说真的相当难学,建议在学习数据结构之前先修计算机数学或者离散数学。我学习数据机构是为了毕业设计服务,本身并非计算机...

abap写的小游戏 数字移动小游戏_abap游戏_forever_crazy的博客-程序员宅基地

项目后期维护,没什么事情干,闲着无聊,今天写了个小游戏玩玩:(注:由于代码不能从客户那边带回来,回家用记事本写的,注释也比较少,但是代码实现的逻辑很简单,不解释。。。。。 如有编译错误请谅解,    灰常感谢!!!!) report ......selection-screen pushbutton 2(10)  pb11 user-command pb11.selecti

列生成算法的python实现_gurobi求解器_列生成算法python实现_gurobi求解器_摩天崖FuJunWANG的博客-程序员宅基地

问题:Cutting Stock Problem讲解列生成算法的标配问题。可以百度,一百度一大把。模型建立代码实现ref:改代码引用自gurobi官方示例。个人感觉这个实现结构还是非常优秀的。from gurobipy import *TypesDemand = [3, 7, 9, 16] # 需求长度QuantityDemand = [25, 30, 14, 8] # 需求的量LengthUsable = 20

tomcat linux环境变量,linux下安装tomcat需要配置环境变量吗_VS华的博客-程序员宅基地

Tomcat部署Web应用方法总结在Tomcat中部署Java Web应用程序有两种方式:静态部署和动态部署。在下文中$CATALINA_HOME指的是Tomcat根目录。一、静态部署静态部署指的是我们在服务器启动之前部署我们的程序,只有当服务器启动之后,我们的Web应用程序才能访问。以下3种方式都可以部署:(以PetWeb项目为例说明,PetWeb目录假设是F:/PetWeb)1.利用Tomca...

Docker 停机扩容_林20的博客-程序员宅基地

Docker 停机扩容备份所有容器docker ps -a|grep -v "NAMES"|awk '{print $NF}'|xargs -I {} sudo sh -c "docker export {} >/tmp/docker_backup/containers/docker_{}.tar"

c语言中b++和++b有什么区别_b++和++b的区别_bobwang999的博客-程序员宅基地

c语言中b++和++b有什么区别来自知道合伙人认证行家 推荐于2017-09-02在++b中,++称为前自加。在b++中,++称为后自加。其计算效果均为操作数自加一。当单独一个语句的时候没有区别,如果用在表达式中:b++是先取b的值做计算,再自加;++b是先自加,再取b的值做计算。比如int b = 2, j;如果j = b++;那么先取b的值赋值给j,于是j值为2,b值再...

随便推点

CentOS 7 快速部署 ELK+Filebeat_ABSong-teacher的博客-程序员宅基地

Centos 7.4 部署 Elastic Stack目录Centos 7.4 部署 Elastic Stack一、Elastic Stack介绍二、环境规划三、Elasticsearch+Logstash+Kibana的安装1.安装Elasticsearch2.安装Kibana一、Elastic Stack介绍Kibana 能够以图表...

Spring3 整合MyBatis3 配置多数据源 动态选择SqlSessionFactory_hoojo的博客-程序员宅基地

一、摘要上两篇文章分别介绍了Spring3.3 整合 Hibernate3、MyBatis3.2 配置多数据源/动态切换数据源 方法 和Spring3 整合Hibernate3.5 动态切换SessionFactory (切换数据库方言),这篇文章将介绍Spring整合Mybatis 如何完成SqlSessionFactory的动态切换的。并且会简单的介绍下MyBatis整合Spr

另一个dasBlog Slashdot,这次是Greg Hughes的CopsOnTop Charity ...乞力马扎罗的音频博客..._cunfusq0176的博客-程序员宅基地

Any moment now, the blog that Greg Hughessetup for CopsOnTopis going to get Slashdotted. I was chatting with Greg, and he was telling me how cool it is that the cops are climbing Kilimanjaro as a me...

android中java.lang.IllegalStateException异常产生的原因及解决办法_illegalstateexception是什么异常_dodod2012的博客-程序员宅基地

原文地址:https://blog.csdn.net/u014737138/article/details/49737955[java] view plain copy11-09 13:33:56.080: E/MediaRecorder(19865): stop called in an invalid state: 0  11-09 13:33:56.080: I/MediaRecorder(...

JS、H5调用手机相册摄像头以及文件夹_js 5+app 调用手机相册获取文件_心动止于人海。的博客-程序员宅基地

转自:https://blog.csdn.net/qq_37610423/article/details/84319410效果图:Html代码:&lt;div class="file-box clearboth" id="fileBox"&gt; &lt;label class="clone-dom" style="display:none;...

十、链路追踪--Sleuth_carrier!的博客-程序员宅基地

链路追踪介绍分布式链路追踪(Distributed Tracing),就是将一次分布式请求还原成调用链路,进行日志记录,性能监控并将一次分布式请求的调用情况集中展示。比如各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等。常见的链路追踪技术有下面这些:cat:由大众点评开源,基于Java开发的实时应用监控平台,包括实时应用监控,业务监控 。 集成方案是通过代码埋点的方式来实现监控,比如: 拦截器,过滤器等。 对代码的侵入性很大,集成成本较高。风险较大。 zipkin:由T

推荐文章

热门文章

相关标签