1.业务Action类继承ActionSupport类
业务Action中可以调用ActionSupport类中的getWebApplicationContext(),来获得wac,然后
调用wac.getBean("myservice")来获得需要的service对象
这种方法虽然可以,但是不推荐使用,原因如下:
1>业务Action类跟Spring的ActionSupport类藕合在一起不是很好
2>getWebApplicationContext().getBean("myservice")这种硬编码不是很好
3>这种方法Spring并没有托管Action对象
2.使用Spring的DelegatingRequestProcessor类来替代struts的RequestProcessor类
struts-config.xml
<controller locale= "true" processorClass= "org.springframework.web.struts.DelegatingRequestProcessor"> </controller>
DelegatingRequestProcessor类继承了RequestProcessor类,并重写了RequestProcessor的一些方法
DelegatingRequestProcessor.java
public class DelegatingRequestProcessor extends RequestProcessor { private WebApplicationContext webApplicationContext; public void init(ActionServlet actionServlet, ModuleConfig moduleConfig) throws ServletException { super.init(actionServlet, moduleConfig); if (actionServlet != null) { this.webApplicationContext = initWebApplicationContext(actionServlet, moduleConfig); } } protected WebApplicationContext initWebApplicationContext( ActionServlet actionServlet, ModuleConfig moduleConfig) throws IllegalStateException { return DelegatingActionUtils.findRequiredWebApplicationContext(actionServlet, moduleConfig); } protected final WebApplicationContext getWebApplicationContext() { return this.webApplicationContext; } protected Action processActionCreate( HttpServletRequest request, HttpServletResponse response, ActionMapping mapping) throws IOException { Action action = getDelegateAction(mapping); if (action != null) { return action; } return super.processActionCreate(request, response, mapping); } protected Action getDelegateAction(ActionMapping mapping) throws BeansException { String beanName = determineActionBeanName(mapping); if (!getWebApplicationContext().containsBean(beanName)) { return null; } return (Action) getWebApplicationContext().getBean(beanName, Action.class); } protected String determineActionBeanName(ActionMapping mapping) { return DelegatingActionUtils.determineActionBeanName(mapping); } }
1>调用init方法的时候,初始化并获得wac
2>调用processActionCreate方法的时候,先从wac中getBean("prefix+path"),如果找不到再从struts内部获取
3.所有的业务Action都配置成DelegatingActionProxy类
struts-config.xml
<action-mappings> <action path="/login" type="org.springframework.web.struts.DelegatingActionProxy" name="userForm" scope="request"> <forward name="success" path="/WEB-INF/jsp/index.jsp"/> </action> </action-mappings>
DelegatingActionProxy.java
public class DelegatingActionProxy extends Action { public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { Action delegateAction = getDelegateAction(mapping); return delegateAction.execute(mapping, form, request, response); } protected Action getDelegateAction(ActionMapping mapping) throws BeansException { WebApplicationContext wac = getWebApplicationContext(getServlet(), mapping.getModuleConfig()); String beanName = determineActionBeanName(mapping); return (Action) wac.getBean(beanName, Action.class); } protected WebApplicationContext getWebApplicationContext( ActionServlet actionServlet, ModuleConfig moduleConfig) throws IllegalStateException { return DelegatingActionUtils.findRequiredWebApplicationContext(actionServlet, moduleConfig); } protected String determineActionBeanName(ActionMapping mapping) { return DelegatingActionUtils.determineActionBeanName(mapping); } }
DelegatingActionProxy重写了execute方法,当struts调用execute方法的时候,内部会调用wac.getBean("prefix+path")获取被Spring托管的Action对象,然后再调用业务Action对象的execute方法,其实就是利用了代理模式对Action进行代理
Spring的配置文件:
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="loginService" class="prd.tidy.test.service.LoginService"> </bean> <bean name="/login" class="prd.tidy.test.action.LoginAction" scope="prototype"> <property name="loginService" ref="loginService"> </property> </bean> </beans>
相关推荐
1. **Spring整合** - 在MyEclipse中添加Spring支持,选择相应的Spring版本和开发包,如Spring 1.2系列。 - 创建Spring配置文件(如`applicationContext.xml`),配置Bean定义,包括Service层、DAO层以及Action类等...
12.6.1 Struts、Spring和Hibernate的整合方式 12.6.2 编写用户注册画面regedit.jsp 12.6.3 编写用户登录画面login.jsp 12.6.4 编写注册控制器RegeditAction.java 12.6.5 编写登录控制器LoginAction.java 12.6.6 建立...
Spring 和 Struts2 是两个...总之,Spring 和 Struts2 的整合利用了两者的优势,提供了一种强大的方式来构建可扩展、易于维护的 Java Web 应用。通过深入学习和实践,开发者可以掌握这种整合技巧,并在实际项目中应用。
- `StrutsSpring`可能包含一个简单的整合示例,包括Struts2的配置文件、Spring的配置文件以及相关的Action类和业务接口。 - 示例可能会展示如何配置Action类,如何在Spring中定义bean,以及如何在Struts2中引用...
比较流行的一本书,在公司内很受欢迎 比较实用 下半部分,需与上半部分放在一起解压。
12.6.1 Struts、Spring和Hibernate的整合方式 12.6.2 编写用户注册画面regedit.jsp 12.6.3 编写用户登录画面login.jsp 12.6.4 编写注册控制器RegeditAction.java 12.6.5 编写登录控制器LoginAction.java 12.6.6 建立...
《Struts2、Hibernate、Spring整合在线考试系统详解》 在线考试系统是现代教育技术发展的重要组成部分,它能够实现远程测试、自动评分等功能,极大地提高了教学效率。本系统基于Struts2、Hibernate和Spring三大主流...
SSH是 struts+spring+hibernate的一个集成框架,是目前比较流行的一种Web应用程序开源框架 现在的结构是,Struts负责显示层,Hibernate负责持久层,Spring负责中间的业务层,另外,由于Spring使用的依赖注射以及AOP...
这个“struts1.2+spring2.0 登录例子”是一个整合了这两个框架的示例项目,旨在帮助开发者理解如何在实际应用中集成和使用它们。下面将详细阐述这两个框架的核心概念、集成方式以及登录功能的实现。 **Struts1.2...
整合过程中,Spring起到中心控制的作用,同时负责管理Struts2和Mybatis的相关配置和生命周期。 1. **Spring与Struts2整合**:Struts2是一个MVC框架,负责处理用户的请求并返回响应。在整合中,Spring负责管理Struts...
Struts2、Spring3.1和MyBatis3.06是Java开发中常见的三大框架,它们各自在不同的层面上提供了强大的功能,并且可以互相整合,以实现更高效的企业级应用开发。本压缩包提供了整合这三大框架所需的核心库文件,下面将...
12.6.1 Struts、Spring和Hibernate的整合方式 12.6.2 编写用户注册画面regedit.jsp 12.6.3 编写用户登录画面login.jsp 12.6.4 编写注册控制器RegeditAction.java 12.6.5 编写登录控制器LoginAction.java 12.6.6 建立...
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们的整合应用,通常被称为SSH(Struts2、Spring、Hibernate)集成。这个简单的demo旨在帮助初学者理解并掌握这三者如何协同工作,实现一个完整的MVC...
4. **Spring MVC与Struts的比较**:虽然Struts是一个成熟的MVC框架,但随着Spring MVC的发展,很多开发者更倾向于使用Spring MVC,因为它提供了更现代的特性和更好的性能。Spring MVC也支持与Hibernate的整合,且在...
Struts、Spring和Hibernate是Java开发中非常流行的三大...综上所述,Struts、Spring和Hibernate的整合为用户登录功能提供了强大支持,使得开发者可以专注于业务逻辑,而无需关心底层细节,提高了开发效率和代码质量。
以上就是Spring、Struts和Hibernate的简单整合,这种整合方式在早期的Java Web项目中非常常见。虽然现代开发趋势更倾向于使用Spring Boot和Spring MVC,但理解这种传统的三层架构对于理解现代框架的工作原理仍然很有...
Java项目中通过Eclipse新建的Web项目,常包含Web.xml,通过该配置文件配置项目的必要信息,常做BS结构项目的人对Web.xml比较熟悉。一般情况下建立Web项目时,和Struts中的action请求向结合如下来配置,
Struts2、Spring和Hibernate是Java企业级开发中三大核心框架,它们的整合通常被称为SSH2(Struts2、Spring、Hibernate)。这个整合的主要目的是为了实现MVC(Model-View-Controller)架构,提高代码的可维护性、可...