接口工程采用spring+struts2搭建,外部请求调用时,出现了部分请求返回值数据混乱,
查找原因如下:
spring 默认scope 是单例模式
这样只会创建一个Action对象
每次访问都是同一个Action对象,数据不安全
struts2 是要求 每次次访问 都对应不同的Action
scope="prototype" 可以保证 当有请求的时候 都创建一个Action对象
解决方式:
利用容器的scope="prototype"来保证每一个请求有一个单独的Action来处理,避免struts中Action的线程安全问题
单例对象,同一方法被多次调用的时候,不能包含公共对象,否则会造成数据混乱。
最终问题原因是,多个请求返回值使用同一个HttpServletResponse response返回结果导致。
- 大小: 42.3 KB
分享到:
相关推荐
在Struts1中,Action类作为业务逻辑的入口,接收并处理来自视图的请求,然后调用Service层的方法。ActionForm对象用于封装请求参数,而配置文件struts-config.xml则定义了各个Action和ActionForm的映射关系。 搭建...
Spring、Struts2和JPA是Java开发中常用的三大框架,它们各自负责应用程序的不同层面:Spring作为基础架构框架,提供依赖注入(DI)和面向切面编程(AOP)等功能;Struts2是一个用于构建MVC(Model-View-Controller)...
7. **Web服务调用**:使用Spring和XFire,开发者可以创建基于SOAP的Web服务接口,允许远程客户端通过HTTP或HTTPS协议调用。自定义对象和数组可以通过序列化和反序列化机制在Web服务调用中传递。 8. **测试与调试**...
在本项目中,Struts2负责接收用户请求,调用相应的Action(动作)类,Action类再通过Spring的依赖注入获取Service进行业务处理,最终返回结果到视图层。Struts2的拦截器机制使得我们可以方便地添加全局处理逻辑,如...
在Java Web开发中,"SSH"(Spring、Struts、Hibernate)是一个常见的技术栈,用于构建复杂的业务逻辑和数据管理应用程序。本项目是基于SSH框架实现的一个文件上传模块,非常适合初学者学习和实践。 首先,Spring是...
在分页上下文中,Struts2通常会创建一个Action类,该类包含处理分页请求的方法,并通过返回值将控制权传递给相应的视图层组件。Action类可能包含参数来接收用户指定的页码和每页大小,然后调用服务层的方法获取分页...
Struts2、Spring和MyBatis是Java Web开发中经典的三大框架,它们组合起来能够构建出高效、可维护性良好的企业级应用。本项目提供了一个基于这三个框架的简单搭建示例,下面将详细介绍这三个框架的核心功能及它们如何...
当用户发送请求时,Struts框架按照以下步骤处理: 1. 查找匹配的ActionMapping,如果找不到,则返回错误信息。 2. 如果ActionForm对象不存在,就创建一个实例。 3. 调用ActionForm的validate方法进行表单验证。 4. ...
这个“Struts2接口文档”是开发者的重要参考资料,提供了关于Struts2框架内各个组件、类库以及接口的详细说明,帮助开发者深入理解框架的内部工作原理并有效地使用其功能。 Struts2的核心组件包括Action、Result、...
Struts2、Spring和iBatis是Java Web开发中三个非常重要的开源框架,它们的集成应用可以构建出高效、灵活且可维护性极强的企业级应用程序。以下将详细阐述这三个框架的功能、集成方式以及如何实现"Struts2+Spring+...
Struts2主要用于处理HTTP请求和响应,提供MVC(Model-View-Controller)架构,而Spring则是一个全面的后端解决方案,包括依赖注入、AOP(面向切面编程)、事务管理等功能。在"struts2+spring aop demo"这个项目中,...
2. **结果映射**:在Struts2的配置文件中,可以定义结果类型来处理DWR调用后的返回值,比如将返回值渲染到页面上。 3. **拦截器**:利用Struts2的拦截器机制,可以在DWR调用前后添加额外的操作,如日志记录、性能...
在调用MySQL存储过程时,iBatis提供了接口,允许我们方便地执行存储过程并获取返回值。 MySQL存储过程是数据库层面的程序,可以包含一系列的SQL语句,如INSERT、UPDATE、DELETE以及SELECT。在处理复杂的业务逻辑或...
接下来,Struts2作为流行的MVC框架,其核心是Action类,负责处理HTTP请求并调用业务逻辑。Struts2的动作映射、拦截器和结果映射等功能使得控制器层的实现更为简洁。 整合Spring和Struts2时,我们需要: 1. **配置...
在IT行业中,Spring、Struts2和iBatis是三个非常重要的开源框架,它们分别在不同的层面上解决了Java Web开发中的问题。这篇文章将详细介绍如何整合这三个框架,并探讨它们与JSON的交互。 首先,Spring框架是一个...
8. 实现Action:在Struts2的Action类中,调用Service层的方法,处理用户请求。 9. 视图渲染:设置Result,根据Action的返回值决定跳转到哪个JSP页面。 10. 测试:编写JUnit测试用例,对整合后的系统进行功能验证。...
6. **编写业务逻辑**:在Action类中,通过Spring的依赖注入获取Service层接口的实现,调用方法完成业务逻辑。 7. **设计视图**:使用JSP或其他视图技术创建用户界面,根据Struts的ActionForward或ActionRedirect与...
8. **Struts2 Action**:业务逻辑处理,接收请求,调用Service层方法,返回结果。 9. **Struts2结果类型**:定义如何根据Action的返回值跳转到相应的页面。 10. **整合配置**:Spring、Hibernate和Struts2之间的集成...
对于Action的测试,由于Struts的Action通常会依赖于Spring管理的服务接口,因此在编写单元测试时,需要模拟这些服务的调用。JUnit是常用的Java单元测试框架,可以结合Mockito等库来创建mock对象,模拟Service的行为...