千家信息网

怎么集成Spring和Struts

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章将为大家详细讲解有关怎么集成Spring和Struts,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.Struts和SpringStruts 代表了MVC
千家信息网最后更新 2026年11月02日怎么集成Spring和Struts

这篇文章将为大家详细讲解有关怎么集成Spring和Struts,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

1.Struts和Spring

Struts 代表了MVC第二类架构的实现,在Struts中最重要的组件是ActionServlet,Action和 ActionForm 子类,ActionServlet 代表controller,他基于配置文件接受请求和 把这些请求转发到相应的ActionForm和Action子类。 ActionForm把用户输入的数据传送到Action,Action调用商务层组件完成必要的操作,***提交到view。ActionServlet使用一个配置文件(struts-config.xml)加载Action子类的定义用以接受用户请求,基于请求URL, controller 找到一个action定义去接受这个请求,Struts构件处理用户请求, 检查配置文件, 完成相应的动作。

Spring是一种轻量级的容器,它使得使用一个外部XML配置文件非常容易绑定对象,每个对象能够通过列出JavaBean属性得到一个依赖 对象的指针,通过绑定XML配置文件使剩下的工作更加简单。依赖注入(DI)是非常强大的功能,Spring支持可插拔的事务管理器,提供事物管理方式更 多的选择. 它集成了持久性的架构同时也提供了一个统一的exception 分类,Spring也提供面向方面(AOP)编程的简单机制。

2.Struts和Spring的集成

将Struts应用集成到Spring框架可以采用多种方法,首先Spring明显地被设计用于解决JEE的现实问题,如复杂性,性能低下,可测试性及其他;第二,Spring框架包括一个AOP实现让你可以使用面向方面的程序设计技术;第三, Spring 框架可以能够非常容易地管理和协调Struts;和Struts类似,Spring也包含MVC 实现,两个架构都有优缺点,Struts是MVC最重要的架构,很多开发团队学会了依靠Struts在规定时限内开发出高质量的软件,因此开发团队宁愿 集成Spring的功能也不愿意转到Spring MVC;好消息是Spring的结构允许你集成Struts Web 框架、基于Spring的业务层和持久层,我们的方法是应用Spring中的ActionSupport类去集成Struts。

3.加载应用的context

首先我们需要使用Spring中的ContextLoaderPlugin为Struts ActionServlet去装载Spring应用的上下文,简单在struts-config.xml 文件中增加plug-in,如下(1)所示:

﹤ ?xml version="1.0" encoding="ISO-8859-1" ?﹥

﹤ !DOCTYPE struts-config PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"

"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"﹥

﹤ struts-config﹥

﹤ form-beans﹥

﹤ form-bean name="searchForm"

type="org.apache.struts.validator.DynaValidatorForm"﹥

﹤ form-property name="cardno" type="java.lang.String"/﹥

﹤ /form-bean﹥

﹤ /form-beans﹥

﹤ global-forwards type="org.apache.struts.action.ActionForward"﹥

﹤ forward name="welcome" path="/welcome.do"/﹥

﹤ forward name="searchEntry" path="/searchEntry.do"/﹥

﹤ forward name="searchSubmit" path="/searchSubmit.do"/﹥

﹤ /global-forwards﹥

﹤ action-mappings﹥

﹤ action path="/welcome" forward="/WEB-INF/pages/welcome.htm"/﹥

﹤ action path="/searchEntry" forward="/WEB-INF/pages/search.jsp"/﹥

﹤ action path="/searchSubmit"

type=" com.infotek.Creditcard.actions.SearchSubmit"

input="/searchEntry.do"

validate="true"

name="searchForm"﹥

﹤ forward name="success" path="/WEB-INF/pages/detail.jsp"/﹥

﹤ forward name="failure" path="/WEB-INF/pages/search.jsp"/﹥

﹤ /action﹥

﹤ /action-mappings﹥

﹤ message-resources parameter="ApplicationResources"/﹥

﹤ plug-in className="org.apache.struts.validator.ValidatorPlugIn"﹥

﹤ set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/﹥

﹤ /plug-in﹥

﹤ plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"﹥ (1)

﹤ set-property property="contextConfigLocation" value="/WEB-INF/beans.xml"/﹥

﹤ /plug-in﹥

﹤ /struts-config﹥

4.使用Spring的ActionSupport类

要用Spring去集成Struts,创建一个Spring 上下文是必须要做的。 org.springframework.web.struts.ActionSupport 类提供一个 getWebApplicationContext() 方法非常容易地获得Spring上下文,全部你需要去做的是从Spring的ActionSupport 代替Struts 中的Action类去延伸你的action,如下所示:

package com.infotek.Creditcard.actions;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionError;

import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.action.DynaActionForm;

import org.springframework.context.ApplicationContext;

import org.springframework.web.struts.ActionSupport;

import com. infotek.Creditcard.beans.Creditcard;

import com. infotek.Creditcard.business.CreditcardService;

public class SearchSubmit extends ActionSupport { |(1)

public ActionForward execute(ActionMapping mapping,ActionForm form,

HttpServletRequest request,HttpServletResponse response)

throws IOException, ServletException {

DynaActionForm searchForm = (DynaActionForm) form;

String isbn = (String) searchForm.get("cardno");

//the old fashion way

//CreditcardService creditcardService = new CreditcardServiceImpl();

ApplicationContext ctx = getWebApplicationContext(); |(2)

CreditcardService creditcardService =

(CreditcardService ) ctx.getBean("creditcardService"); |(3)

CreditCard creditard = CreditCardService.read(cardno.trim());

if (null == creditard) {

ActionErrors errors = new ActionErrors();

errors.add(ActionErrors.GLOBAL_ERROR,new ActionError ("message.notfound"));

saveErrors(request, errors);

return mapping.findForward("failure") ;

}

request.setAttribute("creditcard", creditcard);

return mapping.findForward("success");

}

}

在(1)中,我们通过延伸Spring ActionSupport 类而不是Struts Action 类创建了一个action;在(2)中,我们使用getWebApplicationContext()方法获得一个 ApplicationContext;为了获得商务服务, 在(3)中,我们使用ApplicationContext去查找Spring bean;这个技术非常容易理解,不幸的是它把Struts的action和Spring framework绑定了,如果你想替换Spring你不得不重写代码,而且Struts的action不在Spring的控制之下, 遗憾的是这种方法无法获得Spring AOP的好处。

关于"怎么集成Spring和Struts"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

文件 方法 配置 架构 框架 应用 上下 上下文 子类 对象 用户 篇文章 开发 管理 重要 代表 功能 商务 团队 技术 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司起名 互联网科技小贷 迪茉互联网科技 远拓互联网科技 奔汉互联网科技 伴你行互联网科技有限公司 上海亿帐通互联网科技 互联网巨头投资的硬核科技 山东吉时兔互联网科技有限公司 互联网科技教育视频 银川新华互联网科技学校联系电话 乌鲁木齐新华智原互联网科技学校 互联网在线教育科技创业 明优互联网科技有限公司 科技互联网的核心竞争力 上海钢联属于互联网科技股吗 银川新华互联网科技学校是国营吗 互联网科技手抄报图片 保山互联网科技靠谱吗 瑞安市蟠桃会互联网科技有限公司 未来的互联网科技 小米互联网科技园设置 北京华百购互联网科技有限公司 银川新华互联网科技职业技术培训学校图片 互联网公司科技股 允成互联网科技有限公司融资 互联网科技公司营业执照怎么办理 互联网科技圈年度人物 富国互联网金融科技混合基金 科技发展第三阶段互联网时代
0