?
快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

百盛娛樂電子游戲官網:深入探討Spring與Struts 的集成方案

?

Spring是一個輕量級(大年夜小和系統開支的角度)的IoC和AOP容器.它力求簡化J2EE開拓即J2EE without EJB.而且作為贊助企業級開拓的核心支柱,Spring為模型層(OR持久層:Hibernate、JDO、iBatis等)辦事層(EJB、JNDI、WebService)以及體現層(Struts、JSF、Velocity)都供給了優越的支持和集成規劃. 造訪Spring官方站

Jakarta-Struts是Apache軟件組織供給的一個開源項目.它為Java Web利用供給了基于Model-View-Controller的MVC框架,尤著實用于開拓大年夜型可擴展的Web利用.只管基于Java的MVC框架層出不窮,事實上Spring的MVC模型也供給了驅動利百盛娛樂電子游戲官網用系統Web層的能力,但Jakarta-Struts仍舊是所有這些框架中的佼佼者.

下面,將若何整合這兩個J2EE領域的經典項目給出兩套詳盡的集成規劃.

1.首先我們來看一個Spring-Struts整合利用下的節制器Action類源代碼.

public class CourceAction extends Action { private CourceService courceService; public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { Set allCources = courceService.getAllCources(); //..........the other statements request.setAttribute("cources", allCources); return mapping.findForward("jspView"); } }

闡發:CourceService為一個營業實現的接口,此接口聲清楚明了一系列的營業處置懲罰措施.該措施的實現設置設置設備擺設擺設為Spring高低問的一個Bean.由此看來,我們大年夜家都可能會孕育發生一個疑問:Struts action若何取得一個包孕在Spring高低文中的Bean呢?為了回答這個問題,Spring供給了兩種與Struts集成的要領:

(1).從一個知曉Spring高低文的基類派生我們自己的Struts Action類.然后,在派生類中就可以應用super.XX()措施來得到一個對Spring受控Bean的引用.

(2).將哀求委托給作為Spring Bean治理的Struts Action來處置懲罰.百盛娛樂電子游戲官網

2.注冊Spring插件:為了使Struts Action能夠造訪由Spring治理的Bean,我們就必須要注冊一個知道Spring利用高低文的Struts插件.可以在struts-config.xml中經由過程如下的要領來完成注冊.

ContextLoadPlugin()認真裝載一個Spring利用高低文.(詳細的說:是一個WebApplicationContext).value屬性值為要加載的設置設置設備擺設擺設Spring受控Bean的xml文件的URI.

3.完成第一種集成規劃:實現一個知曉Spring的Action基類.

這種集成規劃是從一個公共的能夠造訪Spring利用高低文的基類中派生所有的Struts Action,但值得榮耀的是:我們不用自己去編寫這個知曉Spring利用高低文的基類,由于Spring已經供給了org.springframework.web.struts.ActionSupport:一個org.apache.struts.action.Action的抽象實現.它重載了setServlet()措施以從ContextLoaderPlugin中獲取WebapplicationContext.是以,任何時刻我們只必要調用super.getBean()措施即可得到一Spring高低文中的一個Bean的引用.

我們再來看一段Action源代碼:

public class CourceAction extends ActionSupport

{

public ActionForward execute(

ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)

throws Exception

{ //取得Spring高低文 ApplicationContext context = super.getWebApplicationContext();

//取得CourceService Bean CourseService courseService = (CourseService) context.getBean("courseService");

Set allCources = courceService.getAllCources();

request.setAttribute("cources", allCources);

//..........the other statements. return mapping.findForward("jspView"); }}

闡發:這個Action類由ActionSupport派生,當CourceAction必要一個Spring受控Bean時:它首先調用基類的getWebApplicationContext()措施以取得一個Spring利用高低文的引用;接著它調用getBean()措施來獲取由Spring治理的courceService Bean的一個引用.

小結

至此,我們已經用第一種規劃完滿的完成了Spring與Struts的集成事情.這種集成要領的好處在于直不雅簡潔輕易上手.除了必要從ActionSupport中派生,以及必要從利用高低文中獲取Bean之外,其他都與在非Spring的Struts中編寫和設置設置設備擺設擺設Action的措施相似.但這種集成規劃也有晦氣的一壁.最為顯明的是:我們的Action類將直接應用Spring供給的特定類,這樣會使我們的Struts Action(即節制層)的代碼與Spring慎密耦合在一路.這是我們不甘愿寧肯看到的.別的,Action類也認真查找由Spring治理的Bean,這違抗了反向節制(IoC)的原則.

4.實現第二種集成規劃:代理和委托Action.

這種集成規劃要求我們編寫一個Struts Action,但它只不過是一個包孕在Spring利用高低文中的真正Struts Action的一個代理.該代理Action從Struts插件ContextLoaderPlugIn中獲圖利用高低文,從中查找真正的Struts Action,然后將處置懲罰委托給真正的Struts Action.這個措施的幽雅之處在于:只有代理action才會包孕Spring特定的處置懲罰.真正的Action可以作為org.apache.struts.Action的子類來編寫.

下面我們來看一段在之中集成要領下的Struts Action源代碼:

public class CourceAction extends Action { private CourceService courceService; public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { Set allCources = courceService.getAllCources(); request.setAttribute("cources", allCources); //..........the other statements. return mapping.findForward("jspView"); } /* 注入CourceService */ public void setCourceService(CourceService courceService) { this.courceService = courceService; }}

闡發:大年夜家可以看到,在這種要領之下,我們的Struts Action類和Spring是低耦合的,它僅僅依附了Spring供給的反向節制(IoC)機制把CourceSer百盛娛樂電子游戲官網vice注入到了我們的Action中.到此,大年夜家肯定會有一個疑問:那便是Spring到底是若何供給IoC反向節制的呢?回答這個問題,我們必要完成兩個步驟的設置設置設備擺設擺設:

(1).在struts-config.xml中注冊Struts Action.但要留意的是我們在這里注冊的是代理Action.幸運的是,我們不必親身編寫這個類.由于Spring已經經由過程org.springframework.web.struts.DelegatingActionProxy供給了這個代理的Action.詳細的設置設置設備擺設擺設措施如下:

(2)將真正的Struts Action作為一個Spring Bean并在Spring高低文設置設置設備擺設擺設文件中作為一個Bean注冊之.并將Action所要引用的courceService注入給它.

留意:name屬性的值是異常緊張的,它必須和struts-config.xml中的path屬性完全同等.這是由于DelegatingActionProxy會應用path屬性值在Spring高低文中查找真正的Action.應用DelegatingActionProxy的好處在于我們可以不應用任何Spring特定的類來編百盛娛樂電子游戲官網寫Struts Action.同時,Struts動作能夠使用IoC取得和他相助的工具.獨一不夠之處便是不太直不雅,設置設置設備擺設擺設相對繁雜.為了使action委托顯得更為直不雅一些,我們可對這種集成規劃做進一步的改進:應用哀求委托.

5.應用哀求委托.

為了使action委托看上去更為直不雅一些,Spring供給了DelegatingRequestProcessor,另一種專門用于Spring的哀求處置懲罰器.必要在struts-config.xml中做如下設置設置設備擺設擺設:

這樣,DelegatingRequestProcessor將奉告Struts自動將動作哀求委托給Spring高低文中的Action來處置懲罰.這使得我們可以在struts-config.xml頂用struts action的真正類型來聲明它們.例如:

當吸收到一個針對/l百盛娛樂電子游戲官網istCourses的哀求時,DelegatingRequestProcessor會自動從Spring高低文設置設置設備擺設擺設文件中查找一個名為/listCourses的Bean(實為一個Struts Action)類.

http://www.javass.cn/javapeixunssh/index.html

免責聲明:以上內容源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

您可能還會對下面的文章感興趣:

浙江体彩20选5开奖号 琼崖海南麻将软件 江西快三基本走势一定 大乐透基本走势图 阿里巴巴股票行情走势 湖北十一选五可以玩吗 快乐十分前三直奖金 极速快3下载网站 重庆时时彩平台 幸运28有正规的网站吗 体彩江苏七位数走势图成语 股票跌停 赛车平台app-APP专业版下载 滚雪球理财骗局揭秘 山西快乐十分查询 深圳风采开奖结果 12月13号的股票分析