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

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

Jakarta Struts學習之新手上路

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

  Web應用開發早期曾經是那么的“簡單”,那個時候還只是純Html頁面和瀏覽器特效而已。由于還涉及不到動態數據操作和商業應用,也就省去了很多麻煩。但是這樣的“簡單”只是過眼云煙,如今我們不得不為復雜的基于Web的商業應用開發采用諸多技術。 本文將介紹如何利用Struts進行應用開發的前臺整合的開發過程。Struts是一個為開發基于模型(Model)-視圖(View)-控制器(Controller)(MVC)模式的應用架構的開源框架,是利用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框架的“扛把子”,只有這位“老大”清楚所有請求與動作的映射關系,要是他那里沒有搞定或不爽的話,整個“社團”就什么也擺不平了:)如今的應用系統,XML形式的配置文件越來越多,假如整個系統只使用一個這樣的配置文件的話,那么保持整個系統的模塊化和可維護性都非常的輕松。使用配置文件來描述請求-動作的控制過程和相互關系,而不是在代碼中將對象之間的調用關系寫死,那么都應用系統有變動時,我們只用修改配置文件就行了,而不是再重新編譯發布程序了。
  
  Controller通過struts-config.xml文件的配置信息確定當有請求時應

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产一区二区三区在线观看| 久久久精品免费视频| 亚洲高清一二三区| 国产精品影院在线观看| 亚洲国产精品人久久电影| 亚洲xxx自由成熟| 疯狂蹂躏欧美一区二区精品| 亚洲成年人在线| 亚洲成**性毛茸茸| 国产欧美日韩免费| 91av在线播放视频| 国产亚洲欧美日韩精品| 亚洲黄色www网站| 亚洲欧美视频在线| 欧美一级淫片aaaaaaa视频| 4k岛国日韩精品**专区| 亚洲男人的天堂在线| 国产精品美腿一区在线看| 国产美女被下药99| 国内精品久久久久伊人av| 国产亚洲精品久久久久动| 夜夜躁日日躁狠狠久久88av| 91在线观看免费| 国产午夜精品全部视频播放| 中文字幕在线日韩| 欧美国产日韩xxxxx| 精品久久久久久国产91| 日本成人激情视频| 这里只有精品在线观看| 伊人一区二区三区久久精品| 欧美日韩午夜视频在线观看| 亚洲女人天堂成人av在线| 中文字幕av一区二区| 日韩av中文字幕在线免费观看| 国产激情视频一区| 久久九九全国免费精品观看| 国产精品视频免费在线| 日本高清不卡的在线| 欧美一级淫片aaaaaaa视频| 国产精品成av人在线视午夜片| 蜜臀久久99精品久久久无需会员| 成人国产精品一区二区| 久久亚洲精品视频| 性视频1819p久久| 综合国产在线视频| 中文字幕日韩精品在线观看| 亚洲激情视频在线观看| 国产在线999| 亚洲国产精品成人一区二区| 欧美贵妇videos办公室| 久久精品国产亚洲精品2020| 国产成+人+综合+亚洲欧洲| 久久精品精品电影网| 久久777国产线看观看精品| 国产成人精品a视频一区www| 亚洲精品久久久久久下一站| 国产精品亚洲视频在线观看| 欧美黑人一级爽快片淫片高清| 欧美成人精品三级在线观看| 国产一区玩具在线观看| 欧美理论片在线观看| 美女久久久久久久久久久| 亚洲男人第一av网站| 亚洲女性裸体视频| 国产一区二区欧美日韩| 欧美大片欧美激情性色a∨久久| 亚洲精品日韩久久久| 久久亚洲精品成人| 国产suv精品一区二区| 亚洲一区二区精品| 亚洲精品久久久久久久久久久久| 日韩女优人人人人射在线视频| www日韩欧美| 欧美高清第一页| 在线播放国产一区二区三区| 国产日本欧美一区| 日本精品久久久久久久| 在线精品视频视频中文字幕| 色噜噜狠狠狠综合曰曰曰88av| 国产一区二区三区视频| 亚洲在线第一页| 在线日韩中文字幕| 免费99精品国产自在在线| 久久精品国产亚洲精品| 91sa在线看| 欧美刺激性大交免费视频| 国产脚交av在线一区二区| 色综合久久悠悠| 日韩一区二区精品视频| 亚洲天堂网在线观看| 国产精品成人v| 丝袜美腿精品国产二区| 久久久久久午夜| 亚洲三级 欧美三级| 色综合伊人色综合网站| 国产成一区二区| 国产一区欧美二区三区| 亚洲精品国产精品国产自| 成人女保姆的销魂服务| 久久久久北条麻妃免费看| 7777kkkk成人观看| 国产成人久久久| 亚洲欧美制服另类日韩| 国产aaa精品| 国产精品一区二区久久久| 欧美野外猛男的大粗鳮| 亚洲а∨天堂久久精品9966| 亚洲精品美女在线观看播放| 成人黄色影片在线| 成人精品一区二区三区| 性欧美暴力猛交69hd| 久久精品国产精品| 日韩在线视频观看正片免费网站| 2019国产精品自在线拍国产不卡| 97色在线观看免费视频| 欧美激情xxxx性bbbb| 国产精品久久久av久久久| 国产福利精品视频| 国产欧美 在线欧美| 欧美精品videos另类日本| 深夜成人在线观看| 国产精品久久中文| 久久精品国产成人精品| 91色p视频在线| 欧美精品午夜视频| 国产精品美女主播| 中文在线资源观看视频网站免费不卡| www.欧美三级电影.com| 国产精品视频一区国模私拍| 国产精品h片在线播放| 日韩成人av一区| 欧美日韩激情视频| 欧美国产日韩一区二区三区| 国产精品精品视频一区二区三区| 奇门遁甲1982国语版免费观看高清| 国产成人aa精品一区在线播放| 性色av一区二区三区在线观看| 国产精品久久久久久久7电影| 欧美日韩免费区域视频在线观看| 狠狠躁夜夜躁久久躁别揉| 综合国产在线观看| 精品久久久久人成| 91av视频在线观看| 亚洲天堂av网| 日韩精品视频免费专区在线播放| 国产精品久久久久久久久粉嫩av| 日韩一二三在线视频播| 一区二区三区亚洲| 久热精品视频在线观看一区| 亚洲黄页视频免费观看| 亚洲欧美激情视频| 日韩欧美成人精品| 高清欧美电影在线| 国产aⅴ夜夜欢一区二区三区| 日韩精品在线电影| 久久成人这里只有精品| 日韩的一区二区| 久久天堂av综合合色| 欧美劲爆第一页| 国产成人精品综合久久久| 久久手机精品视频| 日韩在线视频导航| 亚洲免费精彩视频| 成人网在线视频|