精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何集成Struts和Spring

開發(fā) 后端
本文想通過一個(gè)簡(jiǎn)單的實(shí)例闡述如何集成Struts和Spring。

1.Struts和Spring

Struts 代表了MVC第二類架構(gòu)的實(shí)現(xiàn),在Struts中最重要的組件是ActionServlet, Action,和 ActionForm 子類,ActionServlet 代表controller,他基于配置文件接受請(qǐng)求和把這些請(qǐng)求轉(zhuǎn)發(fā)到相應(yīng)的ActionForm和Action子類。 ActionForm把用戶輸入的數(shù)據(jù)傳送到Action, Action調(diào)用商務(wù)層組件完成必要的操作,最后提交到view。ActionServlet使用一個(gè)配置文件(struts-config.xml)加載Action子類的定義用以接受用戶請(qǐng)求,基于請(qǐng)求URL, controller 找到一個(gè)action定義去接受這個(gè)請(qǐng)求, Struts構(gòu)件處理用戶請(qǐng)求, 檢查配置文件, 完成相應(yīng)的動(dòng)作。

Spring是一種輕量級(jí)的容器,它使得使用一個(gè)外部XML配置文件非常容易綁定對(duì)象,每個(gè)對(duì)象能夠通過列出JavaBean屬性得到一個(gè)依賴對(duì)象的指針,通過綁定XML配置文件使剩下的工作更加簡(jiǎn)單。依賴注入(DI)是非常強(qiáng)大的功能,Spring支持可插拔的事務(wù)管理器,提供事物管理方式更多的選擇. 它集成了持久性的架構(gòu)同時(shí)也提供了一個(gè)統(tǒng)一的exception 分類,Spring也提供面向方面(AOP)編程的簡(jiǎn)單機(jī)制。

2.集成Struts和Spring

將Struts應(yīng)用集成到Spring框架可以采用多種方法,首先Spring明顯地被設(shè)計(jì)用于解決JEE的現(xiàn)實(shí)問題,如復(fù)雜性,性能低下,可測(cè)試性及其他;第二,Spring框架包括一個(gè)AOP實(shí)現(xiàn)讓你可以使用面向方面的程序設(shè)計(jì)技術(shù);第三, Spring 框架可以能夠非常容易地管理和協(xié)調(diào)Struts;和Struts類似, Spring也包含MVC 實(shí)現(xiàn).,兩個(gè)架構(gòu)都有優(yōu)缺點(diǎn),Struts是MVC最重要的架構(gòu),很多開發(fā)團(tuán)隊(duì)學(xué)會(huì)了依靠Struts在規(guī)定時(shí)限內(nèi)開發(fā)出高質(zhì)量的軟件,因此開發(fā)團(tuán)隊(duì)寧愿集成Spring的功能也不愿意轉(zhuǎn)到Spring MVC;好消息是Spring的結(jié)構(gòu)允許你集成Struts Web 框架、基于Spring的業(yè)務(wù)層和持久層,我們的方法是應(yīng)用Spring中的ActionSupport類去集成Struts,以完成集成Struts和Spring。

3.加載應(yīng)用的context

首先我們需要使用Spring中的ContextLoaderPlugin為Struts ActionServlet去裝載Spring應(yīng)用的上下文,簡(jiǎn)單在struts-config.xml 文件中增加plug-in,如下(1)所示:

  1. <?xml version="1.0" encoding="ISO-8859-1" ?> 
  2. <!DOCTYPE struts-config PUBLIC"-//Apache Software Foundation// DTD Struts                              Configuration 1.1//EN""http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"> 
  3. <struts-config> 
  4.  <form-beans> 
  5.     <form-bean name="searchForm" 
  6.                 type="org.apache.struts.validator.DynaValidatorForm"> 
  7.                <form-property name="cardno"    type="java.lang.String"/> 
  8.     </form-bean> 
  9.   </form-beans> 
  10.  <global-forwards type="org.apache.struts.action.ActionForward"> 
  11.      <forward   name="welcome"          path="/welcome.do"/> 
  12.      <forward   name="searchEntry"       path="/searchEntry.do"/> 
  13.      <forward   name="searchSubmit"      path="/searchSubmit.do"/> 
  14.  </global-forwards> 
  15.  <action-mappings> 
  16.     <action    path="/welcome" forward="/WEB-INF/pages/welcome.htm"/> 
  17.     <action    path="/searchEntry" forward="/WEB-INF/pages/search.jsp"/> 
  18.     <action    path="/searchSubmit" 
  19.                type=" com.infotek.Creditcard.actions.SearchSubmit" 
  20.                input="/searchEntry.do" 
  21.                validate="true" 
  22.                name="searchForm"> 
  23.               <forward name="success" path="/WEB-INF/pages/detail.jsp"/> 
  24.              <forward name="failure" path="/WEB-INF/pages/search.jsp"/> 
  25.     </action>    
  26.  </action-mappings> 
  27.  <message-resources parameter="ApplicationResources"/> 
  28.  <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> 
  29.     <set-property property="pathnames" value="/WEB-INF/                                                                               validator-rules.xml,/WEB-INF/validation.xml"/> 
  30.  </plug-in> 
  31.  <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">  (1)  
  32.     <set-property property="contextConfigLocation" value="/WEB-INF/beans.xml"/> 
  33.  </plug-in> 
  34. </struts-config>  

4.使用Spring的ActionSupport類

要用Spring去集成Struts,創(chuàng)建一個(gè)Spring 上下文是必須要做的。 org.springframework.web.struts.ActionSupport 類提供一個(gè) getWebApplicationContext() 方法非常容易地獲得Spring上下文,全部你需要去做的是從Spring的ActionSupport 代替Struts 中的Action類去延伸你的action,如下所示:

  1. package com.infotek.Creditcard.actions;  
  2. import java.io.IOException;  
  3. import javax.servlet.ServletException;  
  4. import javax.servlet.http.HttpServletRequest;  
  5. import javax.servlet.http.HttpServletResponse;  
  6. import org.apache.struts.action.ActionError;  
  7. import org.apache.struts.action.ActionErrors;  
  8. import org.apache.struts.action.ActionForm;  
  9. import org.apache.struts.action.ActionForward;  
  10. import org.apache.struts.action.ActionMapping;  
  11. import org.apache.struts.action.DynaActionForm;  
  12. import org.springframework.context.ApplicationContext;  
  13. import org.springframework.web.struts.ActionSupport;  
  14. import com. infotek.Creditcard.beans.Creditcard;  
  15. import com. infotek.Creditcard.business.CreditcardService;  
  16. public class SearchSubmit extends ActionSupport { |(1)  
  17. public ActionForward execute(ActionMapping mapping,ActionForm form,  
  18. HttpServletRequest request,HttpServletResponse response)  
  19. throws IOException, ServletException {  
  20. DynaActionForm searchForm = (DynaActionForm) form;  
  21. String isbn = (String) searchForm.get("cardno");  
  22. //the old fashion way  
  23. //CreditcardService creditcardService = new CreditcardServiceImpl();  
  24. ApplicationContext ctx = getWebApplicationContext(); |(2)  
  25. CreditcardService creditcardService =  
  26. (CreditcardService ) ctx.getBean("creditcardService"); |(3)  
  27. CreditCard creditard = CreditCardService.read(cardno.trim());  
  28. if (null == creditard) {  
  29. ActionErrors errors = new ActionErrors();  
  30. errors.add(ActionErrors.GLOBAL_ERROR,new ActionError ("message.notfound"));  
  31. saveErrors(request, errors);  
  32. return mapping.findForward("failure") ;  
  33. }  
  34. request.setAttribute("creditcard", creditcard);  
  35. return mapping.findForward("success");  
  36. }  

在(1)中,我們 通過延伸Spring ActionSupport 類而不是Struts Action 類創(chuàng)建了一個(gè)action;在(2)中,我們使用getWebApplicationContext()方法獲得一個(gè) ApplicationContext;為了獲得商務(wù)服務(wù), 在(3)中,我們使用ApplicationContext去查找Spring bean;這個(gè)技術(shù)非常容易理解,不幸的是它把Struts的action和Spring framework綁定了,如果你想替換Spring你不得不重寫代碼,而且Struts的action不在Spring的控制之下, 遺憾的是這種方法無(wú)法獲得Spring AOP的好處。

5.結(jié)論

本文闡述如何集成Struts和Spring,我們嘗試使用Spring的 ActionSupport,ContextLoaderPlugIn去集成Struts,這是一種最高效的和最簡(jiǎn)單的方式,另外還可用Spring中的代理子類去代理Struts中的RequestProcessor和代理Struts的actions。

【編輯推薦】

  1. Spring框架的7個(gè)模塊
  2. 簡(jiǎn)述Spring JDBC的學(xué)習(xí)
  3. Spring 2.0和Spring AOP
  4. 整合Struts和Spring
  5. Spring2.0升級(jí)Spring2.0.7的變化
責(zé)任編輯:佚名 來源: IT168
相關(guān)推薦

2009-03-24 10:30:35

SpringStruts集成

2009-06-18 15:56:49

Struts和Spri

2009-06-26 17:15:44

Struts2

2009-06-30 17:03:49

Spring集成Str

2009-06-19 10:00:37

Struts和Spri

2009-06-19 15:28:03

SpringHibernate

2024-01-16 08:17:29

Mybatis驗(yàn)證業(yè)務(wù)

2009-09-24 09:18:18

2009-06-23 13:21:26

JSF和Spring

2009-06-03 09:16:03

Hibernate工作原理使用

2020-07-14 11:00:12

Spring BootRedisJava

2009-09-22 14:46:18

struts-spri

2025-07-29 09:06:29

SpringAIMCP

2009-06-19 17:05:08

MVC框架Struts和Spri

2020-09-02 17:28:26

Spring Boot Redis集成

2009-09-14 19:31:36

Struts1和Str

2011-05-13 09:53:02

strutsAjax

2021-12-28 11:13:05

安全認(rèn)證 Spring Boot

2009-09-25 17:47:35

Struts+Hibe

2009-07-29 09:54:34

struts2和str
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

无码人妻精品一区二区三应用大全| 国产 国语对白 露脸| 懂色av中文字幕| 99久久影视| 亚洲大尺度美女在线| 久久久免费视频网站| 3p在线观看| www.在线成人| 国产一区二区色| 麻豆changesxxx国产| 免费欧美一区| 日韩区在线观看| 免费看污黄网站| 2021中文字幕在线| 亚洲欧洲国产日韩| 欧洲精品一区色| 成人免费视频国产| 精品午夜久久福利影院| 日本精品va在线观看| 538精品在线观看| 欧洲杯什么时候开赛| 亚洲国产日韩精品在线| 亚洲一区二区三区观看| 韩国成人漫画| 天天影视网天天综合色在线播放| 男女啪啪的视频| 国产高清美女一级毛片久久| av网站一区二区三区| 91精品在线影院| 中国一级片黄色一级片黄| 99精品国产在热久久| 久久久精品2019中文字幕神马| 丰满少妇高潮一区二区| 国产精伦一区二区三区| 91精品国产欧美日韩| 午夜激情av在线| 成人一区福利| 色综合天天视频在线观看 | 日韩免费视频| 亚洲人成欧美中文字幕| 激情综合丁香五月| 免费看成人人体视频| 欧美成人a∨高清免费观看| 97人人模人人爽人人澡| va天堂va亚洲va影视| 欧美精品在欧美一区二区少妇| 亚洲老女人av| aaaa欧美| 欧美久久一二区| 手机免费av片| 91九色成人| 日韩一级二级三级| ass极品水嫩小美女ass| 综合伊人久久| 亚洲国内精品视频| 亚洲调教欧美在线| 免费成人高清在线视频theav| 日韩电影免费在线观看中文字幕| 久久人妻一区二区| 美女网站色精品尤物极品姐弟| 亚洲国产精品电影在线观看| jizz日本免费| 欧美禁忌电影网| 亚洲一区第一页| 女人黄色一级片| 欧美第十八页| 九九久久久久99精品| 国产一级片久久| 99精品国产在热久久| 日韩av第一页| 亚洲天堂中文字幕在线| 狠狠网亚洲精品| 国产精品美女久久久久av福利| 亚洲精品久久久久久动漫器材一区| 高清不卡在线观看av| 精品亚洲欧美日韩| 成人在线观看黄色| 自拍偷拍欧美激情| 日本中文字幕在线视频观看| 国产精品yjizz视频网| 色婷婷久久99综合精品jk白丝| 日本久久久久久久久久久久| 国产精品美女久久久久| 欧美精品一区二区三区一线天视频 | 国产精品久久久免费视频| 亚洲女人av| 国产免费亚洲高清| 国产18精品乱码免费看| 久久婷婷国产综合国色天香| 亚洲视频sss| 免费电影网站在线视频观看福利| 午夜影院久久久| 一区二区三区免费播放| 都市激情亚洲| 中文字幕在线成人| 久草视频精品在线| 美女在线视频一区| 国产日韩一区二区三区| 日本精品在线| 欧美午夜无遮挡| 天堂在线精品视频| 九九久久婷婷| 欧美寡妇偷汉性猛交| 国产情侣呻吟对白高潮| 国产69精品一区二区亚洲孕妇| 日本高清久久一区二区三区| 日本小视频在线免费观看| 色视频成人在线观看免| www.四虎在线| 欧美大黑bbbbbbbbb在线| 欧美在线视频免费观看| xxxwww在线观看| 国产精品久久一级| 国产精品免费观看久久| 美女日韩一区| 色综合影院在线| 国产午夜性春猛交ⅹxxx| 国产精品影视在线| 亚洲综合第一| 亚洲不卡系列| 亚洲久久久久久久久久久| 国产一二三四在线| 黑人精品欧美一区二区蜜桃| 欧美日韩综合久久| 蜜桃视频m3u8在线观看| 欧美成人免费网站| av成人免费网站| 国内精品写真在线观看| 亚洲精蜜桃久在线| 免费在线观看一区| 亚洲欧洲中文天堂| 亚洲不卡视频在线观看| av资源网一区| 国产av天堂无码一区二区三区| 永久免费精品视频| 欧美成人亚洲成人| 国产乱码精品一区二三区蜜臂 | 欧美成人精品激情在线视频| 黄一区二区三区| 亚洲精品在线视频观看| 成人免费在线观看视频| 伊人青青综合网站| 人妻中文字幕一区二区三区| 久久奇米777| 日本精品久久久久中文字幕| 亚洲人亚洲人色久| 人人爽久久涩噜噜噜网站| 久香视频在线观看| 欧美亚洲日本国产| 欧美巨胸大乳hitomi| 蜜臀av性久久久久蜜臀aⅴ流畅| 日韩高清国产一区在线观看| 欧美精选视频一区二区| 在线播放亚洲激情| 国产精品久久久久久久久久久久久久久久久久 | 91精品尤物| 午夜精品久久久久久久99黑人 | 深夜福利国产精品| 一级特黄aa大片| 亚洲欧美日韩一区二区三区在线观看| 肉色超薄丝袜脚交| 国内在线观看一区二区三区| 国内精品视频免费| 高清电影一区| 日韩少妇与小伙激情| 国产人妻精品一区二区三区| 亚洲午夜久久久久久久久久久 | 国产成人精品a视频| 一区二区三区不卡在线观看| 北京富婆泄欲对白| 丝袜亚洲另类欧美综合| 亚洲一卡二卡| 9l视频自拍九色9l视频成人| 69av成年福利视频| 精品国产av色一区二区深夜久久 | 国产精品97| 91青青草免费观看| 天堂网在线最新版www中文网| 亚洲天堂av在线免费观看| 国产精品久久欧美久久一区| 亚洲自拍偷拍图区| 蜜桃无码一区二区三区| 精品一区二区久久| 91丨porny丨探花| 欧美精选视频在线观看| 91久久极品少妇xxxxⅹ软件| 天堂av在线| 久久精视频免费在线久久完整在线看| 免费观看黄一级视频| 欧美色区777第一页| 久草视频在线资源| 国产精品天干天干在线综合| av电影在线播放| 麻豆久久久久久| 国产黄色一级网站| 午夜片欧美伦| 欧美日韩免费高清| 日韩精品中文字幕一区二区| 97avcom| av香蕉成人| 国产亚洲视频在线观看| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 欧美午夜电影网| wwwxxx亚洲| 亚洲欧美激情在线| 精品无码人妻一区二区免费蜜桃| 国产宾馆实践打屁股91| jizzzz日本| 欧美综合二区| 一本久道高清无码视频| 国产精品成人av| 日韩电影免费观看在| 欧美大片网址| 成人xxxxx色| 成人影院在线免费观看| 3344国产精品免费看| 污污在线观看| 久久综合色影院| 欧美jizz18hd性欧美| 亚洲网址你懂得| 日本韩国一区| 亚洲精品国产综合久久| 性做久久久久久久| 日韩欧美一区在线| 国产精品久久久久久免费免熟| 在线精品视频一区二区| www.毛片.com| 欧美日韩精品在线| 久久久精品视频免费| 亚洲免费av观看| 久久嫩草捆绑紧缚| 国产精品黄色在线观看| 亚洲欧美日韩第一页| 欧美激情中文不卡| 中文字幕第24页| 欧美国产一区在线| 天堂资源在线视频| 国产精品天干天干在观线| 69精品无码成人久久久久久| 久久精品一区八戒影视| 国产jk精品白丝av在线观看| 久久久99精品久久| 国产人妻大战黑人20p| 国产欧美视频一区二区三区| 亚洲色图第四色| 国产精品热久久久久夜色精品三区| 五月婷六月丁香| 亚洲欧美综合网| 中文字幕手机在线观看| 亚洲乱码国产乱码精品精的特点| 婷婷在线精品视频| 亚洲一区二区三区美女| 国产在线观看成人| 欧美日韩激情视频| 蜜臀尤物一区二区三区直播| 91久久国产综合久久| 中日韩av在线| 91精品国产高清一区二区三区蜜臀| 国产av精国产传媒| 欧美精品一区二区在线播放| 日本在线视频1区| 一区二区国产精品视频| 日本免费在线观看| 欧美激情伊人电影| 一区二区三区短视频| 国产精品久久久久久久久久新婚| 日日夜夜亚洲精品| 成人9ⅰ免费影视网站| 亚洲黄页在线观看| 亚洲日本精品一区| 欧美福利在线| 激情五月开心婷婷| 久久99久久99小草精品免视看| www.桃色.com| 99在线精品观看| 久久精品色妇熟妇丰满人妻| 亚洲激情第一区| 国产一级一级国产| 欧美一区二区免费观在线| 天天干天天草天天射| 在线观看91久久久久久| 欧美草逼视频| 国产精品久久久久久中文字 | 久久久7777| 久久综合成人| 国产av国片精品| 蜜桃精品在线观看| xxxwww国产| 国产精品理论片在线观看| 18精品爽视频在线观看| 91久久人澡人人添人人爽欧美| 国产三级伦理片| 国产午夜精品一区二区三区| 在线视频观看国产| 国产精品国产自产拍高清av水多| 日韩精品视频一区二区三区| 日韩精品久久一区| 最新日韩av| 99精品999| 久久久久9999亚洲精品| 亚洲国产成人精品综合99| 一本到不卡精品视频在线观看| 国产高清视频免费| 中文字幕日韩精品在线| 久久影院午夜精品| 成人av播放| 亚洲一区二区三区无吗| the porn av| 久久这里只有精品首页| 国产波霸爆乳一区二区| 欧美天堂亚洲电影院在线播放| 亚洲 小说区 图片区 都市| 久久成人精品电影| 久久国内精品| 日本一区二区三区视频在线播放| 极品中文字幕一区| 免费欧美一级片| 国产精品久久久久久久浪潮网站 | 麻豆视频免费在线播放| 精品久久久久久久久久| 国内精品久久久久久久久久| 中文字幕综合一区| 午夜日韩成人影院| 久久香蕉综合色| 99亚洲一区二区| 国产一卡二卡三卡四卡| 一个色综合网站| 国产后入清纯学生妹| zzijzzij亚洲日本成熟少妇| 日韩一区二区三区免费| 日本一区精品| 久久久综合网| 国产精品高清无码在线观看| 精品露脸国产偷人在视频| 人妻无码一区二区三区久久99| 欧美高清一级大片| 91成人精品在线| 欧美在线观看黄| 国v精品久久久网| 国产一级片久久| 亚洲精品98久久久久久中文字幕| xxxcom在线观看| 激情小说综合网| 国产精品久久久久久久久久妞妞| 污污污www精品国产网站| 亚洲成人一区二区| 色综合视频在线| 热re91久久精品国99热蜜臀| 日韩大片在线免费观看| 50路60路老熟妇啪啪| 国产婷婷一区二区| 日批视频免费观看| 色偷偷91综合久久噜噜| 91精品网站在线观看| 成人在线视频一区二区三区| 成人午夜看片网址| 综合激情网五月| 一色桃子一区二区| 99久久久国产| www.在线观看av| 91老司机福利 在线| 无码一区二区三区在线观看| 深夜福利日韩在线看| 日韩中文字幕| 中文字幕无码精品亚洲35| 久久精品一区四区| 91尤物国产福利在线观看| 欧美片一区二区三区| 啪啪激情综合网| 久久99爱视频| 一区二区三区免费在线观看| 五月婷婷六月丁香| 国产女同一区二区| 精品动漫一区| 99久久99久久精品免费看小说.| 日韩一区二区在线看| 亚洲性受xxx喷奶水| 一区二区三区|亚洲午夜| 丰满亚洲少妇av| 国产女主播喷水视频在线观看| www.欧美三级电影.com| 国产+成+人+亚洲欧洲在线| 国产精品69页| 亚洲激情中文1区| 黄色美女网站在线观看| 亚洲aaa激情| 噜噜噜91成人网| 69xx绿帽三人行| 亚洲情综合五月天| 亚洲91网站| 亚洲老女人av| 高跟丝袜欧美一区| 国产超级va在线视频| 欧美激情专区| 国产精品69久久久久水密桃| 国产一级免费视频| 欧美激情二区三区| 91欧美在线| 欧美 日本 国产| 精品国产一区二区三区四区四|