亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

JakartaStruts簡介(一)

2019-11-18 11:14:19
字體:
來源:轉載
供稿:網友

  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)?,F在,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治理控制了??梢哉fstruts-config.xml就是整個Struts框架的“扛把子”(譯注3),只有這位“老大”清楚所有請求與動作的映射關系,要是他哪里沒有搞定或不爽的話,整個“社團”就什么也擺不平了:)如今的應用系統,XML形式的配置文件越來越多,假如整個系統只使用一個這樣的配置文件的話,那么保持整個系統的模塊化和可維護性都非常的輕松。使用配置文件來描述請求-動作的控制過程和相互關系,而不是在代碼中將對象之間的調用關系寫死,那么都應用系統有變動時,我們只用修改配置文件就行了,而不是再重新編譯發布程序了。
   Controller通過struts-config.xml文件的配置信息確定當有請求時應該調用那個對象來處理,從效率的角度出發,這些信息都是在系統啟動時讀入并存在內存中的。下面我們將講解一個極短小的struts-config.xml文件,文件中定義了一個與登錄請求對應的登錄動作,請求到達后將被轉發到com.oreilly.ui.authentication.actions.LoginAction這個Action對象,該對象處理

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品日韩三级| 怡红院精品视频| 欧美国产日韩二区| 日韩欧美在线中文字幕| 亚洲精品免费一区二区三区| 日韩一区二区福利| 中文字幕亚洲一区二区三区| 精品久久久久久中文字幕大豆网| 欧美贵妇videos办公室| 91成人国产在线观看| 成人精品aaaa网站| 欧美精品www在线观看| 亚洲精品www| 国产91亚洲精品| 国产精品一香蕉国产线看观看| 久久99精品久久久久久噜噜| 中文字幕欧美国内| 久久久91精品国产| 亚洲xxxxx性| 亚洲午夜久久久久久久| 亚洲深夜福利在线| 97国产精品视频人人做人人爱| 91美女片黄在线观| 国产中文字幕亚洲| 91亚洲精华国产精华| 亚洲娇小xxxx欧美娇小| 日韩欧美在线视频| 国内自拍欧美激情| 国产啪精品视频网站| 国产精品电影一区| 日韩欧美在线播放| 日韩av色综合| 久久成年人免费电影| 日本免费久久高清视频| 亚洲高清久久久久久| 亚洲视频日韩精品| 久久99精品久久久久久噜噜| 成人激情春色网| 久久久久久久久久久成人| 日本精品免费一区二区三区| 岛国av一区二区| 成人观看高清在线观看免费| 亚洲少妇中文在线| 国产成人福利夜色影视| 精品亚洲va在线va天堂资源站| 久久精品国产69国产精品亚洲| 亚洲人成电影网站色www| 亚洲欧美中文日韩在线| 菠萝蜜影院一区二区免费| 亚洲网站在线观看| 欧美黑人xxxx| 国产综合在线视频| 久久精品影视伊人网| 国产精品久久77777| 亚洲天堂免费视频| 精品人伦一区二区三区蜜桃网站| 欧美国产日韩xxxxx| 国产网站欧美日韩免费精品在线观看| 美女撒尿一区二区三区| 亚洲精品美女在线观看| 国产精品视频自在线| 久久这里有精品视频| 欧美成人激情图片网| 国产婷婷色综合av蜜臀av| 国产九九精品视频| 亚洲天堂精品在线| 国产精品精品视频一区二区三区| 久久91超碰青草是什么| 精品无人区乱码1区2区3区在线| 精品久久在线播放| 国产97在线视频| 国产欧美日韩专区发布| 日韩黄在线观看| 久久福利视频网| 久久久精品网站| 全球成人中文在线| 欧洲中文字幕国产精品| 成人中文字幕+乱码+中文字幕| 国产亚洲一区精品| 免费97视频在线精品国自产拍| 日韩久久免费视频| 日韩精品一区二区视频| 在线精品视频视频中文字幕| 成人黄色大片在线免费观看| 日韩视频免费看| 青青草原成人在线视频| 亚洲精品一区久久久久久| 国产精品天天狠天天看| 亚洲人午夜精品免费| 欧美精品一区二区免费| 亚洲成人亚洲激情| 国产视频自拍一区| 69av视频在线播放| 久久精品99久久香蕉国产色戒| 搡老女人一区二区三区视频tv| 久久av在线看| 久久国产精品首页| 欧美视频专区一二在线观看| 岛国av一区二区三区| 欧美激情网友自拍| 91青草视频久久| 97av在线视频免费播放| 日韩欧美精品在线观看| 亚洲黄色在线看| 欧美成人自拍视频| 国内精品久久久久影院优| 亚洲国产欧美在线成人app| 精品五月天久久| 欧美一级在线亚洲天堂| 欧美最猛性xxxxx亚洲精品| 色综合久久天天综线观看| 欧美激情亚洲国产| 亚洲国产成人精品电影| 久久成人国产精品| 91精品国产91久久久久久最新| 国产精品久久久久久久久影视| 亚洲欧美日韩精品| 欧美性xxxxx极品| 欧美精品在线第一页| 在线精品高清中文字幕| 成人免费直播live| 欧美高清电影在线看| 久久免费国产精品1| 国产精品美女视频网站| 色综合伊人色综合网站| 久久视频国产精品免费视频在线| 国产精品www网站| 国产aⅴ夜夜欢一区二区三区| 欧美日韩在线另类| 国内外成人免费激情在线视频| 国产精品福利在线| 欧美肥老太性生活视频| 欧美日韩国产中文字幕| 亚洲国产精品va在线观看黑人| 国产99久久精品一区二区 夜夜躁日日躁| 国产精品美女久久久久久免费| 日韩中文在线中文网三级| 国产午夜精品视频免费不卡69堂| 亚洲欧美三级伦理| 欧美性极品xxxx娇小| 精品国产依人香蕉在线精品| 狠狠躁夜夜躁人人爽超碰91| 国产精品久久久久久久久久久久久久| 欧美日韩国产成人| 欧美国产日本高清在线| 中文一区二区视频| 中文字幕精品www乱入免费视频| 久久av中文字幕| 亚洲国产成人精品一区二区| 日韩av一区二区在线观看| 欧美精品性视频| 中文.日本.精品| 日韩高清电影好看的电视剧电影| 91精品在线观| 国产欧美一区二区三区四区| 最新国产精品亚洲| 久久伊人色综合| 日韩av中文字幕在线| 欧美老女人性生活| 97福利一区二区| 国产精品扒开腿做爽爽爽男男| 日韩欧美在线视频免费观看| 国产精品a久久久久久| 一区二区中文字幕|