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

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

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)?,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治理控制了。可以說struts-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
欧美性色视频在线| 亚洲嫩模很污视频| 欧美性xxxxx| 亚洲第一在线视频| 久热爱精品视频线路一| 欧美性受xxxx黑人猛交| 亚洲人成毛片在线播放| 国内精品视频在线| 国产精品第七十二页| 久久亚洲精品一区二区| 欧美日韩中文字幕| 91九色国产社区在线观看| 国产精品日日做人人爱| 亚洲国产日韩精品在线| 国产成人黄色av| 亚洲精品乱码久久久久久金桔影视| 国产精品丝袜白浆摸在线| 欧美成人午夜剧场免费观看| 国产美女精品视频免费观看| 美女扒开尿口让男人操亚洲视频网站| 亚洲精品av在线播放| 国产美女高潮久久白浆| 亚洲国产精品一区二区三区| 中文字幕不卡在线视频极品| 久久免费精品日本久久中文字幕| 精品久久久999| 久久久电影免费观看完整版| 成人中文字幕在线观看| www.欧美精品| 亚洲第一区第一页| 日本一欧美一欧美一亚洲视频| 国产精品扒开腿爽爽爽视频| www.日韩免费| 亚洲最新在线视频| 日韩视频免费大全中文字幕| 91久热免费在线视频| 欧美性生活大片免费观看网址| 在线视频一区二区| 伊人青青综合网站| xxx欧美精品| 欧美亚州一区二区三区| 久久久女女女女999久久| 国产精品一二三在线| 欧美日韩国产综合新一区| 精品女同一区二区三区在线播放| 久久人人爽人人爽爽久久| 国产美女久久精品香蕉69| 亚洲欧美在线一区二区| 亚洲视频一区二区三区| 亚洲毛片在线观看.| 亚洲的天堂在线中文字幕| 日韩一区二区福利| 日本精品va在线观看| 国产日韩欧美黄色| 激情亚洲一区二区三区四区| www.日韩不卡电影av| 日韩精品免费观看| 亚洲欧洲午夜一线一品| 日本19禁啪啪免费观看www| 一本色道久久88亚洲综合88| 日本精品在线视频| 亚洲天堂av女优| 欧美日韩国产综合视频在线观看中文| 这里只有精品在线播放| 中文字幕亚洲情99在线| 日韩欧美a级成人黄色| 欧美极品少妇xxxxⅹ裸体艺术| 欧美亚洲视频一区二区| 68精品国产免费久久久久久婷婷| 久久久久久69| 欧美乱人伦中文字幕在线| 在线成人激情视频| 欧美性理论片在线观看片免费| 成人国产精品久久久久久亚洲| 91亚洲永久免费精品| 狠狠做深爱婷婷久久综合一区| 中文字幕亚洲综合久久| 97免费视频在线播放| 国产成人97精品免费看片| 国产成人在线一区| 在线看欧美日韩| 国产精品无码专区在线观看| 亚洲免费av网址| 永久免费精品影视网站| 久久影视三级福利片| 欧美精品久久一区二区| 久久久综合免费视频| 日本欧美精品在线| 成人国产精品色哟哟| 欧美日韩成人在线观看| 永久免费精品影视网站| 中文字幕一精品亚洲无线一区| 精品视频9999| 国产精品视频男人的天堂| 日韩成人在线电影网| 热门国产精品亚洲第一区在线| 亚洲免费电影一区| 欧美日韩国产综合新一区| 亚洲欧美自拍一区| 国产日韩欧美在线视频观看| 亚洲成人黄色在线| 久久精品99久久香蕉国产色戒| 欧美有码在线观看视频| 欧美日韩国产区| 国产99久久久欧美黑人| 97人洗澡人人免费公开视频碰碰碰| 成人黄色免费片| 久久99亚洲热视| 日韩美女中文字幕| 在线观看精品国产视频| 午夜精品一区二区三区视频免费看| 欧美在线视频免费| 欧美在线性爱视频| 国产不卡精品视男人的天堂| 91精品综合视频| 一本色道久久88综合亚洲精品ⅰ| 亚洲成人999| 91情侣偷在线精品国产| 日韩av电影手机在线| 国产成人精品久久亚洲高清不卡| 欧美夫妻性生活视频| 奇米成人av国产一区二区三区| 亚洲国产成人一区| 亚洲美女动态图120秒| 欧美大片va欧美在线播放| 成人久久久久爱| 亚洲黄一区二区| 精品久久中文字幕| 欧美日韩免费网站| 曰本色欧美视频在线| 亚洲人免费视频| 中文字幕av一区中文字幕天堂| 日韩欧美aⅴ综合网站发布| 亚洲欧美日韩区| www.欧美三级电影.com| 国产精品夜色7777狼人| 精品久久在线播放| 欧美日本高清一区| 不卡伊人av在线播放| 国产欧美精品xxxx另类| 国产午夜精品免费一区二区三区| 另类色图亚洲色图| 日韩色av导航| 欧美多人乱p欧美4p久久| 91国内揄拍国内精品对白| www.亚洲男人天堂| 久热精品视频在线观看| 中文字幕欧美日韩在线| 国产综合香蕉五月婷在线| 国产成人精品一区二区在线| 91在线色戒在线| 欧美亚洲激情在线| 欧美成人精品一区二区| 国产这里只有精品| 日韩一二三在线视频播| 中文字幕亚洲欧美日韩高清| 日韩免费av片在线观看| 久久免费精品日本久久中文字幕| 欧美性极品xxxx做受| 欧美日韩国产123| 最近2019中文免费高清视频观看www99| 青青青国产精品一区二区| 91av视频导航| 久热精品视频在线免费观看|