麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

Jakarta Struts學(xué)習(xí)之新手上路

2019-11-18 12:56:19
字體:
供稿:網(wǎng)友

  Web應(yīng)用開發(fā)早期曾經(jīng)是那么的“簡(jiǎn)單”,那個(gè)時(shí)候還只是純Html頁(yè)面和瀏覽器特效而已。由于還涉及不到動(dòng)態(tài)數(shù)據(jù)操作和商業(yè)應(yīng)用,也就省去了很多麻煩。但是這樣的“簡(jiǎn)單”只是過眼云煙,如今我們不得不為復(fù)雜的基于Web的商業(yè)應(yīng)用開發(fā)采用諸多技術(shù)。 本文將介紹如何利用Struts進(jìn)行應(yīng)用開發(fā)的前臺(tái)整合的開發(fā)過程。Struts是一個(gè)為開發(fā)基于模型(Model)-視圖(View)-控制器(Controller)(MVC)模式的應(yīng)用架構(gòu)的開源框架,是利用java Servlet和jsp構(gòu)建Web應(yīng)用的一項(xiàng)非常有用的技術(shù)。 閱讀本文需要讀者具有以下幾方面的開發(fā)經(jīng)驗(yàn):JSP、Servlet、自定義標(biāo)簽庫(kù)(custom tag library)和xml。假如讀者想補(bǔ)一補(bǔ)自定義標(biāo)簽庫(kù)的知識(shí),可以參考作者以前關(guān)于這方面的文章。而本文也是關(guān)于介紹如何使用Struts系列文章的上半部分,本系列暫定分為上下兩部分。
  
  新手上路注重事項(xiàng)
  Struts是一個(gè)基于Sun J2EE平臺(tái)的MVC框架,主要是采用Servlet和JSP技術(shù)來實(shí)現(xiàn)的。其最初萌芽于Craig McClanahan的構(gòu)思,誕生至今也一年有余了(譯注2)。現(xiàn)在,Struts是Apache軟件基金會(huì)旗下Jakarta項(xiàng)目組的一部分,其官方網(wǎng)站是http://jakarta.apache.org/struts。由于Struts能充分滿足應(yīng)用開發(fā)的需求,簡(jiǎn)單易用,靈敏迅速,在過去的一年中頗受關(guān)注。Struts把Servlet、JSP、自定義標(biāo)簽和信息資源(message resources)整合到一個(gè)統(tǒng)一的框架中,開發(fā)人員利用其進(jìn)行開發(fā)時(shí)不用再自己編碼實(shí)現(xiàn)全套MVC模式,極大的節(jié)省了時(shí)間,所以說Struts是一個(gè)非常不錯(cuò)的應(yīng)用框架。
  
  目前的Struts 1.0修正版包括完整的文檔,既可以說是用戶文檔又是開發(fā)指導(dǎo)文檔。假如讀者是JSP新手,或者對(duì)MVC設(shè)計(jì)模式不是太熟的話,可能剛上路時(shí)會(huì)比較慢,不過不用擔(dān)心,要相信自己會(huì)盡快趕上的:)
  
  此外,應(yīng)該注重到盡管當(dāng)前Struts只是1.0版,但已經(jīng)相當(dāng)穩(wěn)定了,作者從Struts 0.9版就在一個(gè)大規(guī)模的項(xiàng)目中應(yīng)用了(最近升級(jí)到1.0版),至今還沒有碰到什么麻煩問題。實(shí)際上,Struts在這個(gè)要開發(fā)復(fù)雜用戶界面的項(xiàng)目中,為我們團(tuán)隊(duì)大大的縮短了開發(fā)時(shí)間,在此衷心的感謝Struts項(xiàng)目團(tuán)隊(duì)的所有開發(fā)人員。
  
  哦,還有,假如讀者開始上路了,要知道Struts的郵件列表可是有相當(dāng)分量的,在這里混混才可保證能及時(shí)跟上Jakarta項(xiàng)目的最新動(dòng)態(tài)哦 http://jakarta.apache.org/site/mail.html。
  
  開始上路!
  Struts框架可分為以下四個(gè)主要部分,其中三個(gè)就和MVC模式緊密相關(guān): 1、模型(Model),本質(zhì)上來說在Struts中Model是一個(gè)Action類(這個(gè)會(huì)在后面具體討論),開發(fā)者通過其實(shí)現(xiàn)商業(yè)邏輯,同時(shí)用戶請(qǐng)求通過控制器(Controller)向Action的轉(zhuǎn)發(fā)過程是基于由struts-config.xml文件描述的配置信息的。
  
  2、視圖(View),View是由與控制器Servlet配合工作的一整套JSP定制標(biāo)簽庫(kù)構(gòu)成,利用她們我們可以快速建立應(yīng)用系統(tǒng)的界面。
  
  3、控制器(Controller),本質(zhì)上是一個(gè)Servlet,將客戶端請(qǐng)求轉(zhuǎn)發(fā)到相應(yīng)的Action類。
  
  4、一堆用來做XML文件解析的工具包,Struts是用XML來描述如何自動(dòng)產(chǎn)生一些JavaBean的屬性的,此外Struts還利用XML來描述在國(guó)際化應(yīng)用中的用戶提示信息的(這樣一來就實(shí)現(xiàn)了應(yīng)用系統(tǒng)的多語(yǔ)言支持)。
  
  好,下一步咱們來看看構(gòu)成這個(gè)框架的各個(gè)部分以及相互之間是怎樣運(yùn)作的吧!
  
  搞定配置
  在使用Struts之前,咱們必先設(shè)置好JSP服務(wù)器,以便讓服務(wù)器在用戶請(qǐng)求時(shí),知道該如何將指定后綴的請(qǐng)求轉(zhuǎn)到相應(yīng)的Controller-Struts ActionServlet處理,當(dāng)然,這些配置信息都一般在服務(wù)器啟動(dòng)時(shí)通過web.xml文件讀入的。我們可以在web.xml定義多個(gè)Controlloer,為每一個(gè)應(yīng)用定義一個(gè)。一個(gè)典型的web.xml文件配置如下,其中有相應(yīng)的注釋,很好懂的,在后面討論Action的時(shí)候,我們將主要分析strutc-config.xml。
  
  <web-app>
   <servlet>
  <!--
  
  以下配置信息聲明了Struts中的ActionServlet,即一個(gè)名為OreillyAction的Servlet,其具體實(shí)現(xiàn)為org.apache.struts.action.ActionServlet。在這個(gè)配置中還有這個(gè)Servlet的兩個(gè)參數(shù):debug level和detail,此處這兩個(gè)參數(shù)琀學(xué)氦?
  ??瘭????戼????氦?椯楮?慰慲?瑧?牢 ̄???瑬椻楮?慰慲?瑧?牢>的值都設(shè)為了2,此外還設(shè)置了在啟動(dòng)載入時(shí)創(chuàng)建兩個(gè)實(shí)例。
  
  -->
    <servlet-name>OreillyActionServlet</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
     <param-name>config</param-name>
     <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
     <param-name>debug</param-name>
     <param-value>2</param-value>
    </init-param>
    <init-param>
     <param-name>detail</param-name>
     <param-value>2</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
   </servlet>
  <!--
  
  設(shè)置所有后綴為.action的請(qǐng)求,都轉(zhuǎn)發(fā)到OreillyActionServlet
  
  -->
  <servlet-mapping>
    <servlet-name> OreillyActionServlet </servlet-name>
    <url-pattern>*.action</url-pattern>
   </servlet-mapping>
  <!--
  
  將初始請(qǐng)求頁(yè)面設(shè)置為login.jsp
  
  --> 
  <welcome-file-list><welcome-file>login.jsp</welcome-file></welcome-file-list>
  <!--
  
  設(shè)置Struts的JSP頁(yè)面要用到的標(biāo)簽庫(kù)和她們的路徑
  
  -->
   <taglib>
    <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
   </taglib>
   <taglib>
    <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
   </taglib>
   <taglib>
    <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
   </taglib>
  </web-app>
  
  控制器(Controller)
  Controller是這個(gè)框架中扮演“交通警察”的角色,當(dāng)客戶端與服務(wù)器有交互動(dòng)作時(shí),都由她來控制。Controller將HTTP請(qǐng)求封包并轉(zhuǎn)發(fā)到框架中相應(yīng)的對(duì)象,這些對(duì)象可能是一個(gè)JSP頁(yè)面或一個(gè)Action。
  
  Controller在web.xml中設(shè)置為org.apache.struts.action.ActionServlet的一個(gè)實(shí)例,在本例中,這個(gè)實(shí)例就是OreillyActionServlet。在一個(gè)完整的控制過程中,也就是處理一個(gè)HTTP請(qǐng)求時(shí),在控制過程之初,這個(gè)Servlet會(huì)從一個(gè)配置文件struts-config.xml中獲取請(qǐng)求與控制動(dòng)作向?qū)?yīng)的配置信息,這個(gè)我們會(huì)在后面具體討論,Controller通過這些配置信息來決定HTTP請(qǐng)求該往何處轉(zhuǎn)發(fā),而這些Action在接收到轉(zhuǎn)發(fā)來的請(qǐng)求后,實(shí)現(xiàn)真正的商業(yè)邏輯。我們要注重的非常重要的一點(diǎn)是Action對(duì)象要能夠調(diào)用這個(gè)ActionServlet的若干方法,通過這個(gè)有力的特性,當(dāng)Action對(duì)象在控制過程中將請(qǐng)求再向別的Action對(duì)象轉(zhuǎn)發(fā)時(shí)(最初的請(qǐng)求是由ActionServlet獲取,向Action對(duì)象轉(zhuǎn)發(fā),而Action對(duì)象還可以再轉(zhuǎn)發(fā)到別的對(duì)象),我們可以將一些需要共享的數(shù)據(jù)對(duì)象通過調(diào)用一些方法放入這個(gè)Servlet相關(guān)的一些標(biāo)準(zhǔn)容器中捎帶過去。
  
  模型(Model)
  所謂Model就是在對(duì)用戶請(qǐng)求的整個(gè)控制過程中,真正處理用戶請(qǐng)求并保存處理結(jié)果的對(duì)象,在整個(gè)過程中,我們一般利用JavaBean來把一些信息保存起來以便在各個(gè)對(duì)象之間傳遞。因?yàn)樵诳颥H學(xué)氦?
  ??瘭????戼????氦?椯楮?慰慲?瑧?牢 ̄???瑬椻楮?慰慲?瑧?牢>架中,Model對(duì)象是真正處理商業(yè)邏輯功能的對(duì)象,因此也就是框架中應(yīng)用需求實(shí)現(xiàn)相關(guān)性最大的部分。在Struts的實(shí)現(xiàn)里,Model的具體表現(xiàn)形式就是ActionForm對(duì)象和與其對(duì)應(yīng)的Action對(duì)象了。對(duì)用戶提交表單的數(shù)據(jù)進(jìn)行校驗(yàn),甚至對(duì)數(shù)據(jù)進(jìn)行預(yù)處理都能在ActionForm中完成。通常的應(yīng)用中,一般是一個(gè)Model對(duì)象和一個(gè)請(qǐng)求頁(yè)面對(duì)應(yīng)的關(guān)系,但也可以一個(gè)Model對(duì)象對(duì)應(yīng)多個(gè)頁(yè)面請(qǐng)求。假如struts-config.xml配置文件沒有指定一個(gè)Model對(duì)象對(duì)應(yīng)的Action,那么控制器將直接把(通過Model對(duì)象完成數(shù)據(jù)封裝的)請(qǐng)求轉(zhuǎn)到一個(gè)View對(duì)象。
  
  struts-config.xml
  
  前面多次提到的struts-config.xml配置文件是整個(gè)框架的主心骨。web.xml文件定義了一個(gè)請(qǐng)求到來應(yīng)向何處轉(zhuǎn)發(fā)后,后面的工作就全權(quán)由struts-config.xml治理控制了。可以說struts-config.xml就是整個(gè)Struts框架的“扛把子”,只有這位“老大”清楚所有請(qǐng)求與動(dòng)作的映射關(guān)系,要是他那里沒有搞定或不爽的話,整個(gè)“社團(tuán)”就什么也擺不平了:)如今的應(yīng)用系統(tǒng),XML形式的配置文件越來越多,假如整個(gè)系統(tǒng)只使用一個(gè)這樣的配置文件的話,那么保持整個(gè)系統(tǒng)的模塊化和可維護(hù)性都非常的輕松。使用配置文件來描述請(qǐng)求-動(dòng)作的控制過程和相互關(guān)系,而不是在代碼中將對(duì)象之間的調(diào)用關(guān)系寫死,那么都應(yīng)用系統(tǒng)有變動(dòng)時(shí),我們只用修改配置文件就行了,而不是再重新編譯發(fā)布程序了。
  
  Controller通過struts-config.xml文件的配置信息確定當(dāng)有請(qǐng)求時(shí)應(yīng)

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 午夜视频免费播放 | 污黄视频在线播放 | 国产精品久久在线观看 | 综合网日日天干夜夜久久 | 免费一区区三区四区 | 久草在线资源福利站 | 伊人yinren22综合网色 | 欧美日韩成人一区二区 | 嗯~啊~用力~高h | 欧美成人精品一级 | 成人午夜激情网 | 免费一区二区三区 | 一区二区三区精品国产 | 女人久久久www免费人成看片 | 亚洲操比视频 | 欧美精品一区二区久久 | 免费久久久久久 | 天天看天天摸天天操 | 亚洲网站免费 | 思思久而久而蕉人 | 成人福利视频在 | 视频一区二区三区视频 | 日本特级a一片免费观看 | 亚洲成人第一页 | 欧美另类综合 | 亚洲九九爱 | 亚洲人成在线播放网站 | 特级无码毛片免费视频尤物 | 毛片成人网 | 亚洲网站在线 | 亚洲综合视频一区 | 羞羞视频免费网站男男 | 午夜视频在线免费播放 | 国产一级免费在线视频 | 草人人 | 羞羞网站 | 毛片免费看的 | 欧美一级精品片在线看 | 免费a级网站 | 精品亚洲网站 | 成人一区二区在线观看视频 |