欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Struts用戶(hù)手冊翻譯(1)
作者:未知 來(lái)源:月光軟件站 加入時(shí)間:2005-5-13 月光軟件站
1.1 回到過(guò)去?。⊿truts的簡(jiǎn)史)
當Java Servlet出現后,許多程序員很快意識到它是一個(gè)非常好的東西。它比標準的CGI更快更強大,而且簡(jiǎn)潔并能無(wú)限擴展。但是使用無(wú)盡的println()語(yǔ)句把HTML送到瀏覽器上真是又累有容易出問(wèn)題,于是JSP出現了,JSP使得能在“外面”寫(xiě)Servlet。于是,程序員們能將Java代碼和HTML簡(jiǎn)單的混合起來(lái),而且具有Servlet的所有優(yōu)點(diǎn)!The sky was the limit!
很快,Java網(wǎng)頁(yè)應用成為了以JSP為中心的開(kāi)發(fā)。這本身并不是一件壞事情,但是這對解決流程控制問(wèn)題和其他一些網(wǎng)頁(yè)應用特有的問(wèn)題卻幫助甚微。
于是,很清楚的,我們需要另一種模型了。
許多聰明的程序員意識到可以把JSP和Servlet結合到一起來(lái)發(fā)布網(wǎng)頁(yè)應用。Servlet可以用來(lái)處理控制和流程的問(wèn)題,JSP可以集中處理令人心煩的HTML。于是,把JSP和Servlet結合起來(lái)成為了大家都知道的Model 2(可能是因為單獨使用JSP時(shí)稱(chēng)為Model 1)。
當然,這里并沒(méi)有什么新的東西,并且JSP的Model 2很快就被指出是遵循從古老的Smarttalk MVC framework中抽象出來(lái)的傳統的模型-視圖-控制的設計方式。Java網(wǎng)頁(yè)開(kāi)發(fā)者現在趨向于認為Model 2和MVC的概念是互通的。在本手冊中,我們使用MVC的范例去描述Struts的體系架構,這被命名為Model 2/MVC設計是最合適的了。
Struts項目最早是由Craig R. McClanahan于2000年五月發(fā)布的。它為Java社會(huì )提供了一個(gè)標準的MVC框架。在2001年七月,Struts 1.0發(fā)布,同時(shí)IOHO。Java Model 2的開(kāi)發(fā)從來(lái)不會(huì )十分相似的。
1.2 MVC設計方式
在MVC設計方式中,應用程序的流程是被中心控制器調度的??刂破鲗⒄埱螅℉TTP的請求)轉到相應的處理去。處理是與模型結合的,每個(gè)處理都象一個(gè)請求和模型之間的適配器。模型代表了,或者說(shuō)封裝了應用程序的邏輯或者狀態(tài)??刂破骺刂屏鞒踢M(jìn)行到相應的視圖??刂埔话阃ㄟ^(guò)查詢(xún)一系列的對應(一般是從數據庫或者配置文件中)來(lái)決定流程的。這在視圖與模型之間提供了一種松散的聯(lián)系,使得應用程序能非常容易的開(kāi)發(fā)和維護。
1.2.1 模型:系統狀態(tài)和系統邏輯的JavaBeans
基于MVC的模型通??杀粍澐譃閮蓚€(gè)子系統--系統的內部狀態(tài)和能改變此狀態(tài)的行為。類(lèi)比于語(yǔ)法,我們可以想象狀態(tài)信息是名詞,行為是動(dòng)詞。
許多應用程序使用一系列的JavaBean來(lái)代表系統的狀態(tài),這些bean的屬性代表系統狀態(tài)的詳細信息。根據系統的復雜度,這些bean可以是自我包容的(即它們知道如何保持自己的狀態(tài)),或者知道怎樣從別的組件,例如數據庫,搜索引擎,實(shí)體EJB,LDAP服務(wù)或者其他什么那里得到系統的狀態(tài)。
大型應用通常將一系列可能的操作作為bean的方法,并調用他們來(lái)維護狀態(tài)信息。例如一個(gè)購物車(chē)的bean,為每個(gè)當前的用戶(hù)存儲了會(huì )話(huà)信息,這些會(huì )話(huà)信息中包含了用戶(hù)選中購買(mǎi)的東西的信息。這個(gè)bean應該有個(gè)checkOut()的方法,這個(gè)方法驗證用戶(hù)的信用卡,將用戶(hù)的訂單送到倉庫以便包裝和運輸。還有一些系統將可能的操作分開(kāi)表示,例如作為一個(gè)會(huì )話(huà)EJB。
另一方面,在小規模的應用中,操作將會(huì )被內嵌到Action類(lèi)中,這些Action類(lèi)是Struts控制層的一部分。當邏輯非常簡(jiǎn)單或者不需要邏輯在別的環(huán)境中重用時(shí),是非常適合這樣做的。
Struts框架體系對模型訪(fǎng)問(wèn)的支持是足夠靈活的,但是我們強烈建議你將邏輯(怎樣做)和Action類(lèi)扮演的角色(做什么)分開(kāi)來(lái)。
1.2.2 視圖:JSP和表現組件
基于Struts應用的視圖通常使用JSP技術(shù)。JSP頁(yè)可以由被稱(chēng)為“模板”的靜態(tài)HTML(或XML)加上動(dòng)態(tài)內容組成。這些動(dòng)態(tài)內容是基于對特殊的標記的翻譯。JSP環(huán)境包含一系列的標準標記,例如<jsp:useBean>。除此之外,有J2EE提供了標準的方法去定義程序員自己的標記,這些自定義的標記被組織成為自定義標記庫。Struts包含了一系列的自定義標記庫可以用來(lái)建立多語(yǔ)言的用戶(hù)界面,并且和ActionForm bean完美結合。ActionForm得到并校驗系統需要的任何信息。
1.2.3 控制器:ActionServlet和ActionMapping
控制器接收用戶(hù)的請求(通常來(lái)自瀏覽器),然后決定使用什么邏輯來(lái)處理,然后使用一個(gè)適合的視圖來(lái)作出反應。在Struts中,控制器的主要部件是一個(gè)屬于A(yíng)ctionServlet類(lèi)的Servlet。這個(gè)Servlet通過(guò)定義一系列的ActionMapping來(lái)設置。一個(gè)ActionMapping定義了一個(gè)請求URI的路徑并提供了一個(gè)Action類(lèi)的完整名稱(chēng)。所有的Action都是org.apachestruts.action.Action的子類(lèi)。Action封裝了邏輯類(lèi)的調用,結果的解釋?zhuān)⒆罱K將程序控制交到一個(gè)合適的視圖組件去,以對請求作出反應。
Struts在標準的ActionMapping類(lèi)的基礎上,也支持使用更多的屬性去對框架進(jìn)行操作。這使得你可以保存具體應用中的特殊信息并仍然使用Struts的其他功能。另外,Struts可以讓你對邏輯定義“邏輯名稱(chēng)”,例如,一個(gè)Action的方法可以在不知道具體JSP位置的情況下,要求一個(gè)“主菜單”的內容。這些特征可以有效的幫助你將控制邏輯(做什么)和視圖邏輯(怎樣表示)分離開(kāi)來(lái)。
1.3 Struts的流程控制
Struts框架提供了幾個(gè)組件去實(shí)現MVC中的控制部分,他們包括:控制Servlet,開(kāi)發(fā)者定義的請求處理,另外一些支持對象。
Struts的自定義標記庫對MVC中的視圖部分提供了直接的支持。他們其中的一些可以訪(fǎng)問(wèn)控制部分的對象,其他一些在開(kāi)發(fā)的時(shí)候是非常好用的。其他標記,包括JSTL,也可以在Struts中使用。其他的表現技術(shù),例如Velocity模板和XSLT也可以在Struts中使用。
MVC中的模型通常與具體的項目有關(guān)。Struts訪(fǎng)問(wèn)應用的具體事務(wù)很方便,但是將具體的編程交給了其他的技術(shù),例如JDBC,EJB,Object Relational Bridge,或者Simpler等等。
讓我們來(lái)看看所有這些是怎樣結合在一起的。
當初始化的時(shí)候,控制器讀取配置文件(struts-config.xml)并使用它去啟動(dòng)控制對象,這些對象形成了Struts的配置。Struts配置(和另外一些東西)定義了應用中使用的ActionMapping[org.apache.struts.action.ActionMappings]。
Struts的控制器Servlet查詢(xún)ActionMapping,將HTTP請求轉到其他組件去。請求可能被轉到JSP或者開(kāi)發(fā)者編寫(xiě)的Action[org.apache.struts.action.Action]的子類(lèi)去。這些Mapping使控制器能將HTTP請求轉到應用相關(guān)的Action去。
一個(gè)ActionMapping通常由以下一些屬性:
一個(gè)請求路徑(或者“URI”) 執行這個(gè)請求的對象類(lèi)型(Action的子類(lèi)) 其他需要的屬性
Action的對象可以處理請求并向用戶(hù)(通常是瀏覽器)作出反應,或者將控制轉到其他地方去。例如,如果用戶(hù)登錄成功,login的action將會(huì )把請求轉到主菜單的頁(yè)面上去。
Action對象可以訪(fǎng)問(wèn)應用的控制器Servlet和它的方法。當將控制轉移時(shí),Action對象可以間接的將一個(gè)或多個(gè)共享的對象同時(shí)轉移,包括JavaBean,這只要將他們放在一個(gè)Servlet共享的標準context中即可。
例如,Action對象可以建立一個(gè)購物車(chē)的bean,并增加商品到這個(gè)購物車(chē)中,然后將這個(gè)bean放到會(huì )話(huà)中,最后將控制轉移到顯示購物車(chē)里面的內容的JSP頁(yè)面。因為每個(gè)用戶(hù)都有自己的會(huì )話(huà),所以他們都有自己的購物車(chē)。
在一個(gè)Struts應用中,絕大部分的邏輯可以使用JavaBean來(lái)編寫(xiě)。一個(gè)Action可以在不知道JavaBean怎樣工作的情況下,調用JavaBean的屬性。這就封裝了邏輯,使得Action可以把精力集中在錯誤處理和流程控制上去。
JavaBean也可以用來(lái)管理輸入的表單。網(wǎng)頁(yè)應用的一個(gè)關(guān)鍵問(wèn)題就是得到并校驗用戶(hù)的錄入信息。使用Struts,你可以通過(guò)繼承ActionForm定義自己的輸入Bean類(lèi)。ActionForm類(lèi)使得存儲和校驗應用中的輸入表單變得很容易。ActionForm的bean可以被自動(dòng)的按照同一種標準和共享的上下文來(lái)存儲,這樣它就可以被其他對象,例如Action對象或者其他JSP訪(fǎng)問(wèn)。
Form bean可以被JSP用來(lái)收集用戶(hù)錄入的數據,一個(gè)Action對象來(lái)校驗這些數據,然后再用JSP重現這個(gè)form的內容。在校驗錯誤時(shí),Struts使用一種共享的機制來(lái)拋出和顯示錯誤信息。
Struts配置的另外一個(gè)元素是ActionFormBean。這是一個(gè)描述對象的集合,被用來(lái)在運行時(shí)建立ActionForm的實(shí)例。當一個(gè)mapping需要一個(gè)ActionForm時(shí),servlet使用名字尋找這些描述對象并使用它去建立一個(gè)指定類(lèi)型的ActionForm的實(shí)例。
這是使用ActionForm的請求的一個(gè)事件順序:
控制器servlet得到或者建立ActionForm bean的實(shí)例 控制器servlet將這個(gè)bean送到Action對象 如果請求是提交數據,則Action對象校驗數據。必要時(shí),數據可以和一些信息被送回到錄入表單并顯示在頁(yè)面上。否則,數據將會(huì )被傳送到邏輯中去。 如果請求是建立一個(gè)輸入頁(yè)面,Action對象則將輸入頁(yè)面需要的數據填入bean中。
Struts框架包括了可以自動(dòng)填充JavaBean域的自定義標記。JSP需要知道的只是域的名字和將表單提交到哪里去。其他Struts標記能將Action或者ActionForm的信息自動(dòng)的顯示出來(lái),這只需要與頁(yè)面標記簡(jiǎn)單的結合。這些信息是多語(yǔ)言的并能根據用戶(hù)所在的地區自動(dòng)的選擇合適的語(yǔ)言。
Struts框架和它的自定義標記庫是在Java平臺下結合起來(lái)支持多語(yǔ)言功能的。所有的域名稱(chēng)和信息可以從一個(gè)消息資源中得到。需要對其他語(yǔ)言進(jìn)行支持,只需要簡(jiǎn)單的增加一個(gè)資源綁定即可。
除了多語(yǔ)言化,另外一個(gè)消息資源的好處就是保持了表單名字的一致性。并且可以在一個(gè)地方就能修改所有標簽和信息文字。
對于最簡(jiǎn)單的應用,Action對象通常就包括了請求所需要的邏輯。然而,在很多情況下,Action對象應該調用另外一個(gè)對象(通常是JavaBean)去執行邏輯。這使得Action只集中處理錯誤和控制流程,而不用管具體的邏輯流程。為了能在另外的平臺上重用,邏輯JavaBean不應該調用任何網(wǎng)頁(yè)應用的對象。Action對象應該從HTTP請求中將需要的信息翻譯出來(lái)并通過(guò)標準的Java變量傳送到邏輯bean中去。
例如,對于一個(gè)數據庫應用:
邏輯bean連接并查詢(xún)數據庫 邏輯bean把結果返回到Action對象 Action對象把結果存在請求的form bean中 JSP在HTML中顯示這些數據
無(wú)論是Action或者JSP都不需要知道這些數據是從哪里來(lái)的,它們只需要知道怎樣包裝和顯示他們。
 
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
mayong--淺析struts 體系結構與工作原理
第一個(gè)Struts 應用:helloapp
Struts在Tomcat中的安裝配置及工作流程
java面試-ssh-1
Struts初步認識
MVC構架(4)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久