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

首頁 > 學院 > 開發設計 > 正文

Jakarta Struts簡介(一)

2019-11-18 12:56:33
字體:
來源:轉載
供稿:網友

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲午夜天堂吃瓜在线 | 黄色片小说 | 成人偷拍片视频在线观看 | 一级黄色在线免费观看 | 亚洲成人精品国产 | 久久久久久久久久久久久久久伊免 | 欧美成人精品一区二区男人小说 | 精品国产一区二区三区四 | 免费看成年人网站 | 国产羞羞视频在线免费观看 | 国产成人自拍小视频 | 狠狠干五月| 中文字幕涩涩久久乱小说 | 精品国产一区二区三区在线观看 | 久久影院国产精品 | 亚洲网站在线观看视频 | 热99热 | 黄色免费入口 | 久久成人在线观看 | 午夜精品成人 | 国产一级αv片免费观看 | 一级做a爱视频 | 香蕉秀| 久久中出 | 免费黄色在线 | va毛片| 成人午夜影院 | 日韩激情一区二区三区 | 欧美日本一区二区 | 国产精品久久久久久久久久尿 | 成年人视频在线免费观看 | 激情视频在线播放 | 关键词| 黄在线看 | 19禁国产精品福利视频 | 国产三级午夜理伦三级 | 综合网天天射 | 久久艹一区 | 国产资源视频在线观看 | 在线观看一二三 | 亚洲午夜国产 |