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

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

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

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

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 南岸区| 泗洪县| 政和县| 汾西县| 邯郸市| 丰镇市| 平远县| 杭锦后旗| 阜平县| 呼和浩特市| 宣恩县| 紫金县| 天台县| 平顺县| 南投县| 韩城市| 广水市| 德令哈市| 黎平县| 华安县| 澄城县| 邢台县| 南充市| 五大连池市| 铜山县| 老河口市| 麟游县| 锡林郭勒盟| 定西市| 抚顺市| 泰安市| 永康市| 高青县| 清流县| 青田县| 嵩明县| 育儿| 巫溪县| 江阴市| 东阿县| 汉源县|