错误信息:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cartService': Scope 'session' is not active for the current thread; consider defining a scoped proxy for this bean if you intend to refer to it from a singleton; nested exception is 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.
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:312)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:168)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:435)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:409)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:537)
at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:180)
at org.springframework.beans.factory.annotation.InjectionMetadata.injectFields(InjectionMetadata.java:105)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessAfterInstantiation(CommonAnnotationBeanPostProcessor.java:289)
... 40 more
Caused by: 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.
at org.springframework.web.context.request.RequestContextHolder.currentRequestAttributes(RequestContextHolder.java:122)
at org.springframework.web.context.request.SessionScope.get(SessionScope.java:88)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
... 48 more
JAVA Code:
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:ssh-*.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>main/main.jsp</welcome-file>
</welcome-file-list>
</web-app>
ssh-service.xml
<bean id="cartService" scope="session" class="com.tarena.dang.service.impl.CartServiceImpl">
<property name="proDao" ref="proDao" />
</bean>
到网上搜集答案:首先说web.xml里顺序有严格的要求,好吧!改改顺序,好在当年排列组合学得不错,把上面可能的出现的顺序一一试过。汗……问题照旧。
然后又有人说把listener换成filter。行吧,换!问题照旧。
后来终于解决:在ssh-service.xml的里加点东西
首先是beans里:
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation= 里面再添加:
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
然后:
<bean id="cartService" scope="session" class="com.tarena.dang.service.impl.CartServiceImpl">
<property name="proDao" ref="proDao" />
<aop:scoped-proxy/>
</bean>
分享到:
相关推荐
S2SH整合指的是Struts2、Spring和Hibernate这三个开源框架的集成应用,它们分别是MVC(Model-View-Controller)架构中的控制层、业务层和数据持久层的优秀解决方案。在Java Web开发中,S2SH整合能提供一个强大、灵活...
本压缩包"**s2sh整合详细jar**"显然是一份包含了这三个框架核心组件的集合,旨在帮助初学者快速搭建SSH整合环境。以下是对每个框架及其整合细节的详细解释: 1. **Struts2**:Struts2是一个基于MVC设计模式的Java ...
【S2SH整合完美教程】 在Java Web开发中,Struts2、Spring和Hibernate的整合是常见的技术栈,被广泛用于构建MVC架构的应用程序。S2SH整合旨在实现业务逻辑与控制层、持久化层的高效协同,提高代码的可维护性和可...
在**S2SH整合**过程中,通常会将Struts2的动作类(Action)作为Spring的Bean,这样可以通过Spring的依赖注入来获取Hibernate的SessionFactory,从而进行数据库操作。同时,Struts2的拦截器可以与Spring的事务管理...
下面将详细讲解这个"S2SH整合_注册_登录"项目中的关键知识点。 首先,Struts2作为控制器层,负责处理HTTP请求,并将这些请求转发给相应的业务逻辑处理。在注册和登录功能中,Struts2配置文件(struts.xml)定义了...
这个"最新S2SH整合所需jar包"是开发者为了方便快速搭建基于这三个框架的应用而准备的资源集合。以下是这些标签所代表的框架和它们的主要知识点: 1. **Struts2**:Struts2是一个强大的MVC(Model-View-Controller)...
这个“s2sh整合jar包”包含了所有必要的库文件,使得开发者能够快速搭建一个基于这三个框架的项目,而无需逐一下载每个框架的组件。下面,我们将详细探讨S2SH整合的关键知识点。 **Struts2** 是一个基于MVC(Model-...
这个“S2SH整合架包(二)”很可能是为开发者提供的一份集成这三大框架的二次开发包,便于快速搭建和运行Java Web项目。在本文中,我们将深入探讨S2SH整合的关键知识点以及它们如何协同工作。 **Struts2框架**: ...
总的来说,"S2SH整合简单登陆增删改查"项目涉及到了企业级Web开发中的核心概念,包括MVC架构、依赖注入、ORM、数据库操作以及项目构建流程。理解和掌握这些知识点对于成为一名合格的Java Web开发者至关重要。
7. **测试与调试**:编写JUnit测试用例,验证各个层的交互是否正常,确保S2SH整合成功。 学习S2SH框架整合的过程中,了解每个组件的核心概念和工作原理至关重要。例如,Struts2的拦截器、Hibernate的实体映射、...
【S2SH整合详解】 S2SH,全称为Struts2、Spring和Hibernate的整合,是Java Web开发中常见的技术栈。这三个框架分别是用于MVC(Model-View-Controller)架构的Struts2,用于依赖注入和管理业务层组件的Spring,以及...
在S2SH框架中,Hibernate负责数据持久化,通过SessionFactory创建Session,进而执行SQL操作。Hibernate支持HQL(Hibernate Query Language)和Criteria API,提供了一种与数据库方言无关的方式来查询和操作数据。 *...
在S2SH整合中,Hibernate通过SessionFactory创建Session,进而执行SQL语句,完成对数据库的数据操作。 在这个"S2SH整合小例子"中,我们可以看到以下几个关键知识点: 1. **Struts2配置**:Struts2的配置文件...
在S2SH整合中,Spring可以管理Struts2的Action实例,以及Hibernate的SessionFactory,通过配置Spring的bean定义文件(如applicationContext.xml)来实现。 再者,Hibernate是ORM(对象关系映射)框架,它将数据库...
这个项目提供的"CorseDesign"可能是课程设计或者系统设计的一部分,其中可能包含了完整的源代码、配置文件和其他相关资源,供学习者研究和理解S2SH整合的具体实现。通过分析和运行这个项目,开发者能够深入理解这三...
在IT行业中,S2SH整合指的是Struts2、Spring和Hibernate三个开源框架的集成应用,它们共同构建了一个强大的Java Web开发平台。Struts2作为MVC(Model-View-Controller)框架,负责处理用户请求和展示视图;Spring...
本资源提供了进行S2SH整合所需的基本jar包,帮助开发者构建高效稳定的Web应用。 Struts2作为MVC框架,主要负责处理用户请求和展现视图。它引入了Action类来封装业务逻辑,并通过配置struts.xml来定义请求到Action的...
在提供的文件中,"s2sh整合开发.doc"和"s2sh整合文章.doc"可能包含了更详细的整合步骤、示例代码和最佳实践,对深入理解S2SH框架的整合过程非常有帮助。对于初学者来说,这些文档是宝贵的参考资料,可辅助实际操作,...
"最基础的S2SH整合"是一个面向初学者的基础教程,旨在帮助开发者理解如何将这三个框架集成在一起,实现一个完整的MVC(Model-View-Controller)应用程序。下面将详细介绍S2SH整合中的关键技术和步骤。 **Struts2** ...
这个“S2SH整合是需要的jar文件struts2.2+spring3+hibernate3.6.rar”是一个压缩包,包含了进行S2SH整合时所需的关键库文件。以下是关于这三个框架及其整合的详细知识点: 1. **Struts2**:Struts2是一个基于MVC...