国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Jakarta Struts學(xué)習(xí)之應(yīng)用實(shí)踐

2019-11-18 15:56:30
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  本文是三篇學(xué)習(xí)Struts框架系列文章的第二篇。在本系列的的第一篇中,我們大致瀏覽了Struts框架,框架的功能以及框架中應(yīng)用到的各個(gè)模塊。而本文,我將利用Struts 1.0為大家演示建立一個(gè)簡(jiǎn)單的應(yīng)用;在第三篇文章中將介紹如何利用Struts的標(biāo)簽在jsp中訪問(wèn)applicationResource文件中的信息。 我們?cè)谶@篇文章將會(huì)一步一步的講解Struts的應(yīng)用,以這樣的形式打開(kāi)Struts一道道神秘的大門(mén),通過(guò)這樣的過(guò)程,相信也能激起你在應(yīng)用開(kāi)發(fā)中如何應(yīng)用Struts的靈感。假如你對(duì)Struts的一些術(shù)語(yǔ)不是很清楚的話,可以參考本系列前一篇對(duì)Struts作大體介紹的文章。
  
  再次重復(fù)一遍,本文需要讀者有如下幾方面的知識(shí)和經(jīng)驗(yàn):JSP,Servlets,自定義標(biāo)簽庫(kù)(Custom Tag libraries)和xml。此外,在本文中,我還會(huì)用到Jakarta項(xiàng)目組其他一些好東東,比如Tomcathttp://jakarta.apache.org/tomcat/index.Html(實(shí)現(xiàn)java Servlet和JSP官方標(biāo)準(zhǔn)的Servlet容器,通俗的講就是一個(gè)JSP的Web Server啦)和Anthttp://jakarta.apache.org/ant/index.html(基于Java的自動(dòng)編譯發(fā)布工具,這可是好東東啊)。
  
  作為一名一直使用前沿技術(shù)開(kāi)發(fā)了諸多應(yīng)用的技術(shù)人員,我一直堅(jiān)信把握新技術(shù),理解該技術(shù)開(kāi)發(fā)的邏輯是至關(guān)重要的。但這往往就是陷住我們學(xué)習(xí)步伐的泥潭,正因如此,我打算將利用Struts開(kāi)發(fā)的一套完整流程作為我們教學(xué)的案例。該流程的這個(gè)案例可謂“麻雀雖小、五臟據(jù)全”,你完全可以將這個(gè)流程應(yīng)用到你手頭那些復(fù)雜龐大的項(xiàng)目中,至少在我們的大項(xiàng)目中應(yīng)用這個(gè)流程效果不錯(cuò)。
  
  有開(kāi)發(fā)復(fù)雜商業(yè)應(yīng)用的開(kāi)發(fā)人員都知道,客戶(hù)的需求總是在不停變幻,所以假如有一套規(guī)范的開(kāi)發(fā)流程來(lái)遵循,當(dāng)客戶(hù)提出新的需求時(shí),我們至少可以明確哪些“無(wú)理”需求其實(shí)是合理可行的。好,接下里我將在我的這個(gè)例子中向各位展示和應(yīng)用整個(gè)流程。
  
  本文中的示例代碼是StrutsSample應(yīng)用中的一部分,包括build.xml的完整代碼可以到此處http://www.onjava.com/onjava/2001/10/31/examples/StrutsPartII.jar下載。
  
  Struts開(kāi)發(fā)過(guò)程
  從Struts發(fā)布的版本號(hào)可以看出,Struts是個(gè)新玩意,她有好幾個(gè)部分組成,明智的你假如搞清楚了何時(shí)該開(kāi)發(fā)完成合適的部分,那將會(huì)更好的利用我們的開(kāi)發(fā)時(shí)間。從我所開(kāi)發(fā)的幾個(gè)利用Struts應(yīng)用中,我大致總結(jié)出如下這個(gè)比較有效的開(kāi)發(fā)步驟:
  
  1,明確應(yīng)用需求;
  
  2,由用戶(hù)輸入和獲取數(shù)據(jù)的角度出發(fā),明確和設(shè)計(jì)出每一個(gè)用戶(hù)界面;
  
  3,確定用戶(hù)界面的進(jìn)入路徑;
  
  4,由應(yīng)用邏輯信息確定動(dòng)作映射表(ActionMapping);
  
  5,由設(shè)計(jì)完成的用戶(hù)界面開(kāi)發(fā)其所用到的類(lèi)和應(yīng)用函數(shù);
  
  6,由用戶(hù)界面中的數(shù)據(jù)信息開(kāi)發(fā)ActionForm和相應(yīng)的數(shù)據(jù)校驗(yàn)方法;
  
  7,ActionMapping中將會(huì)被調(diào)用相應(yīng)的Action或轉(zhuǎn)到相應(yīng)的JSP頁(yè)面,這一步我們先開(kāi)發(fā)這些Action;
  
  8,開(kāi)發(fā)商業(yè)應(yīng)用邏輯,就是相應(yīng)的JavaBean、EJB或其他東東;
  
  9,開(kāi)發(fā)由ActionMapping定義的系統(tǒng)工作流程完成對(duì)應(yīng)的JSP頁(yè)面;
  
  10,完成系統(tǒng)配置文件:struts-config.xml和web.xml;
  
  11,編譯/測(cè)試/發(fā)布。
  
  明確應(yīng)用需求
  開(kāi)發(fā)任何應(yīng)用系統(tǒng)的第一步就是收集用戶(hù)需求信息。不管一個(gè)用戶(hù)邏輯初看上去多么合理,但總有可能在開(kāi)發(fā)時(shí)才發(fā)現(xiàn)它比看上去要難得多。所以,建議擬一份明確的用戶(hù)需求列表,這不只是出于開(kāi)發(fā)的目的,還能通過(guò)該表分析用戶(hù)需求以確定哪些地方可能需要花更多的精力。
  
  在我們這個(gè)StrutsSample項(xiàng)目中,應(yīng)用需求就是:
  
  作為一個(gè)展示Struts框架應(yīng)用的完整例子,本示例完成的功能是用戶(hù)登錄。目的只為明確Struts的應(yīng)用,本示例將不會(huì)涉及到一般復(fù)雜應(yīng)用系統(tǒng)中可能應(yīng)用的安全、數(shù)據(jù)庫(kù)、EJB開(kāi)發(fā)等等相關(guān)技術(shù)。
  
  設(shè)計(jì)用戶(hù)界面
  這個(gè)應(yīng)用中,包括如下三個(gè)用戶(hù)界面:
  
  1)登錄界面,用于用戶(hù)名和密碼輸入;
  
  2)當(dāng)?shù)卿浻脩?hù)為合法用戶(hù)時(shí)的歡迎界面;
  
  3)當(dāng)?shù)卿浭r(shí)的錯(cuò)誤提示界面。
  
  確定用戶(hù)界面的進(jìn)入路徑
  1)登錄界面作為這個(gè)應(yīng)用的默認(rèn)頁(yè)面;
  
  2)歡迎界面只有當(dāng)成功登錄后才能進(jìn)入;
  
  3)任何可能發(fā)生錯(cuò)誤的頁(yè)面能可以進(jìn)入錯(cuò)誤提示界面;
  
  由應(yīng)用邏輯信息確定ActionMapping ActionMap昀三篇學(xué)????本文是三篇學(xué)習(xí)Struts框架系列文章的第二篇。在本系列的的第一篇中,我們大致瀏覽了Struts框架,框架的功能以及框架中應(yīng)用到的各個(gè)模塊。而本文,我將利用Struts 1.0為大家演示建立一個(gè)簡(jiǎn)單的應(yīng)用;在第三篇文章中將介紹如何利用Struts的標(biāo)簽在JSP中訪問(wèn)ApplicationResource文件中的信息。 我們?cè)谶@篇文章將會(huì)一步一步的講解Struts的應(yīng)用,以這樣的形式打開(kāi)Struts一道道神秘的大門(mén),通過(guò)這樣的過(guò)程,相信也能激起你在應(yīng)用開(kāi)發(fā)中如何應(yīng)用Struts的靈感。假如你對(duì)Struts的一些術(shù)語(yǔ)不是很清楚的話,可以參考本系列前一篇對(duì)Struts作大體介紹的文章。
  
  再次重復(fù)一遍,本文需要讀者有如下幾方面的知識(shí)和經(jīng)驗(yàn):JSP,Servlets,自定義標(biāo)簽庫(kù)(Custom Tag libraries)和XML。此外,在本文中,我還會(huì)用到Jakarta項(xiàng)目組其他一些好東東,比如Tomcathttp://jakarta.apache.org/tomcat/index.html(實(shí)現(xiàn)Java Servlet和JSP官方標(biāo)準(zhǔn)的Servlet容ping為整個(gè)應(yīng)用確定的“線路圖”,在配置文件struts-config.xml對(duì)ActionMapping進(jìn)行定義,通過(guò)轉(zhuǎn)發(fā)請(qǐng)求(forward)來(lái)理順應(yīng)用的處理流程,確定應(yīng)用中每個(gè)用戶(hù)請(qǐng)求對(duì)應(yīng)的動(dòng)作。 通常我們?cè)陂_(kāi)發(fā)過(guò)程中就逐步確定了ActionMapping所需的信息,開(kāi)發(fā)代碼的過(guò)程就是在由草稿開(kāi)始一步步完善struts-config.xml的過(guò)程。當(dāng)Action類(lèi)處理完用戶(hù)請(qǐng)求后,其返回的的forward就是在ActionMapping中定義的一個(gè)。一個(gè)Action返回的forward完全有多種可能,盡管一個(gè)Action一般只定義其相關(guān)的幾個(gè)forward。那么,假如有多個(gè)Action都可能返回的同一個(gè)forward,那么就可以將其定義為全局轉(zhuǎn)發(fā)(global forward)。這類(lèi)似于C中的頭文件中全局變量,假如在struts-config.xml描述信息中,某一個(gè)forward并不是在當(dāng)前Action描述中定義的而是全局定義的,那么這個(gè)全局的將起作用,同樣,一個(gè)Action中當(dāng)前定義的forward將覆蓋全局定義。在我們所給的這個(gè)簡(jiǎn)單實(shí)例中,我們定義了全局forward――“error”,當(dāng)某Action返回的forward是“error”這個(gè)映射,那么Errorpage.jsp頁(yè)面將會(huì)顯示給用戶(hù),盡管當(dāng)前Action并沒(méi)有對(duì)其定義。 我們繼續(xù)不斷的開(kāi)發(fā),項(xiàng)目日漸完善,項(xiàng)目相關(guān)的配置文件也會(huì)越來(lái)越具體。在下面的例子中,我們將以StrutsSample中用到的struts-confug.xml文件為例,學(xué)習(xí)global forward和一個(gè)Action中相關(guān)映射的定義。下面定義了一個(gè)名為“l(fā)ogin”的Action,其為com.oreilly.actions.LoginAction的實(shí)例,當(dāng)Action處理用戶(hù)登錄成功后將一個(gè)名為"sUCcess"的forward返回,用戶(hù)也就會(huì)看到Welcome.jsp頁(yè)面,假如登錄失敗,Action將返回對(duì)應(yīng)的forward以再顯示Login.jsp給用戶(hù),而假如處理過(guò)程中發(fā)生其他錯(cuò)誤,Action將返回全局定義的forward――“error”,用戶(hù)也就會(huì)看到錯(cuò)誤提示頁(yè)面Errorpage.jsp。
  
  <!-- ========== Global Forward 定義 -->
  <global-forwards>
  <forward name="login" path="/Login.jsp"/>
  <forward name="error" path="/Errorpage.jsp"/>
  </global-forwards>
  
  <!-- ========== Action Mapping 定義 -->
  <action-mappings>
  <!-- <action>元素的相關(guān)屬性 -->
  <!--
  
  以下只列出常用屬性,其他請(qǐng)參考o(jì)rg.apache.struts.action.ActionMapping的相關(guān)文檔
  
  path - 當(dāng)前Action對(duì)應(yīng)的用戶(hù)請(qǐng)求URI路徑
  
  type - 實(shí)現(xiàn)當(dāng)前Action的Java class的完整名字
  
  name - 當(dāng)前Action中用到的ActionForm的名字,其具體信息在配置文件其他地方另有具體定義
  
  unknown - 假如將該屬性設(shè)置為true,那么就是聲明這個(gè)Action將處理整個(gè)應(yīng)用中所有未找到相應(yīng)處理Action的請(qǐng)求,當(dāng)然,一個(gè)應(yīng)用系統(tǒng)中也只會(huì)有一個(gè)Action的unknown屬性可以設(shè)為true
  
  scope - Action中所用到的ActionForm的生存期,可以為“request”或“session”,隨著生存期的設(shè)置,該Action也會(huì)在相應(yīng)的時(shí)間被創(chuàng)建
  
  input - 該Action中相關(guān)ActionForm獲取用戶(hù)輸入的輸入頁(yè)面,當(dāng)將ActionForm設(shè)為自動(dòng)驗(yàn)證輸入數(shù)據(jù),發(fā)現(xiàn)不合法數(shù)據(jù)返回錯(cuò)誤時(shí),將返回該頁(yè)面
  
  validate - 假如本屬性為true則在Action動(dòng)作之前其對(duì)應(yīng)的ActionForm的validate方法會(huì)自動(dòng)被調(diào)用,一般用以驗(yàn)證用戶(hù)輸入的數(shù)據(jù)
  
  forward 元素 - 定義當(dāng)前Action相關(guān)的ActionForward
  
  -->
  <!-- =================== -->
  <!-- O'Reilly Struts Sample Main Actions -->
  <!-- =================== -->
  <action path="/login"
  type="com.oreilly.actions.LoginAction"
  name="loginForm"
  scope="request"
  input="/Login.jsp">
  <forw昀三篇學(xué)??? ?ard name="success" path="/Welcome.jsp"/>
  <forward name="failure" path="/Login.jsp"/>
  </action>
  </action-mappings>
  
  在前一篇文章中,我們?cè)f(shuō)過(guò),struts-config.xml就是MVC模式的的Controller。在確定struts-config.xml中的配置信息時(shí),應(yīng)該多花些時(shí)間精力在上面,以保證每一

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 囊谦县| 搜索| 陕西省| 浦县| 合江县| 息烽县| 中江县| 黑山县| 德保县| 利津县| 荆州市| 雅安市| 砚山县| 定结县| 济阳县| 石棉县| 池州市| 晋城| 色达县| 平邑县| 崇阳县| 乐陵市| 宾川县| 体育| 克山县| 朝阳市| 陆丰市| 博野县| 济阳县| 天柱县| 泰来县| 静乐县| 海林市| 文水县| 贡觉县| 磐石市| 霍邱县| 建平县| 明光市| 岳阳县| 台南市|