免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
通過struts應(yīng)用mvc設(shè)計(jì)模型
模型--視圖--控制器(Model-View-Controller,MVC)體系突出了Servlets和JSP的優(yōu)點(diǎn),同時(shí)也令它們的缺點(diǎn)最小化。在實(shí)現(xiàn)中,用戶請(qǐng)求被發(fā)送到一個(gè)控制器servlet,該servlet決定請(qǐng)求的性質(zhì),并且根據(jù)請(qǐng)求的類型傳送給適合的處理器。每個(gè)處理器都和一個(gè)特別的模型相關(guān),里面封裝有商業(yè)邏輯來執(zhí)行一些特別的函數(shù)集合。處理完畢后,結(jié)果會(huì)發(fā)送回處理器,處理器選擇適合的視圖顯示它。

  Struts最早于2002年5月作為Jakarta項(xiàng)目的組成部分問世,Jakata項(xiàng)目由Apache Foundation.運(yùn)做。項(xiàng)目的創(chuàng)立者希望該項(xiàng)目的研究改進(jìn)和提高Java Server Pages (JSPs)、servlet、標(biāo)簽庫以及面向?qū)ο蟮募夹g(shù)水準(zhǔn)。Struts為使用MVC體系來編寫應(yīng)用提供了一個(gè)架構(gòu)。Struts使用“ActionMapping”,它允許servlet將用戶的請(qǐng)求轉(zhuǎn)變?yōu)閼?yīng)用行為。ActionMapping通常指定一個(gè)請(qǐng)求的路徑、在請(qǐng)求上進(jìn)行動(dòng)作的對(duì)象類型,以及指定其它需要的屬性。

  Action對(duì)象作為ActionMapping的一個(gè)部分使用,負(fù)責(zé)處理請(qǐng)求,并且發(fā)送響應(yīng)回適合的視圖(通常是一個(gè)Web瀏覽器),或者傳送請(qǐng)求至適合的模型。

  在模型和視圖間的橋是一個(gè)form bean,它可以通過繼承org.apache.struts.action.ActionForm得到。form bean用來保存處理前的用戶數(shù)據(jù),或者顯示返回給用戶的模型數(shù)據(jù)。Struts包含有自定義的標(biāo)簽,它可以由創(chuàng)建的form bean中自動(dòng)組合字段。

  在實(shí)踐中用戶請(qǐng)求JSP頁面,控制器servlet接收請(qǐng)求并決定由哪個(gè)應(yīng)用處理它。Action對(duì)象傳送該請(qǐng)求到包含有接收商業(yè)邏輯的JavaBean中。商業(yè)邏輯bean將連接數(shù)據(jù)庫并進(jìn)行查詢,接收結(jié)果,然后返回結(jié)果給Action對(duì)象。Action對(duì)象將結(jié)果作為請(qǐng)求的一部分存放到一個(gè)form bean中。一旦收集完請(qǐng)求的全部數(shù)據(jù),就可以格式化結(jié)果并且顯示。最后是JavaServer Page以HTML表格的形式將結(jié)果顯示出來。

  模型,控制器和視圖

  Struts中的控制器的基本組件是ActionServlet類中定義的servlet,它是由ActionMappings定義的。ActionMapping類表示的是Action對(duì)象的名字和位置。當(dāng)一個(gè)請(qǐng)求進(jìn)入控制器時(shí),它將請(qǐng)求的路徑映射到Action的位置,并且將請(qǐng)求傳送給Action。Struts的ActionMapping類還可能包含有其它的信息,這些信息可能只是與你的應(yīng)用相關(guān),例如本地變量,環(huán)境變量或者其它URIs。

  Struts的關(guān)鍵是控制器周圍的活動(dòng)。Struts控制器servlet映射事件到類(一個(gè)事件通常是一個(gè)HTTP POST, GET,或者類似的請(qǐng)求)。ActionServlet是MVC設(shè)計(jì)模型的司令部,也是Structs架構(gòu)的核心。ActionServlet創(chuàng)建和使用Action,一個(gè)ActionForm和ActionForward。struts-config.xml是用來設(shè)置Action的。在創(chuàng)建Web應(yīng)用期間,采用擴(kuò)展Action和ActionForm來解決如何響應(yīng)用戶請(qǐng)求的問題。struts-config.xml則是告訴ActionServlet如何使用擴(kuò)展類。也可擴(kuò)展ActionServlet以令Structs應(yīng)用帶有一些自定義的特性。

  這個(gè)方法有幾個(gè)優(yōu)點(diǎn)。首先,應(yīng)用的整個(gè)邏輯流都是在一個(gè)分等級(jí)的文本文件中。這樣就可以比較容易地查看、理解應(yīng)用,特別是大的應(yīng)用。第二,編寫網(wǎng)頁的人在修改網(wǎng)頁時(shí)就無需遍歷Java代碼來理解應(yīng)用的流程,而Java開發(fā)者在改變流程的時(shí)候也無需重新編譯代碼。

  ActionForm為Web應(yīng)用維護(hù)session狀態(tài)。ActionForm是一個(gè)抽象類,它可以被每個(gè)輸入表格模型擴(kuò)展。它代表數(shù)據(jù)的一般概念,可以被HTML表格設(shè)置或者更新。例如,你的應(yīng)用也許擁有一個(gè)被HTML表格設(shè)置的UserActionForm。Struts的架構(gòu)將檢查UserActionForm是否存在,如果不存在,就會(huì)創(chuàng)建一個(gè)該類的實(shí)例。Structs將會(huì)使用HttpServletRequest的相應(yīng)字段來設(shè)置UserActionForm的狀態(tài)。在傳送UserActionForm給商業(yè)封裝層的UserAction前,Struct架構(gòu)先更新UserActionForm的狀態(tài)。

  Structs模型包含有系統(tǒng)的狀態(tài)和它可以接受的操作??梢允褂酶鞣N各樣的結(jié)構(gòu)來表示模型(例如其它servlets或者JSP),不過在大多數(shù)的時(shí)候你都會(huì)使用JavaBeans。JavaBean的屬性,或者在Enterprise JavaBeans (EJBs)中由外部數(shù)據(jù)源得到的數(shù)據(jù)--表示的是狀態(tài),而方法則是表示可以在上面進(jìn)行的操作。操作并不需要被JavaBean方法定義;在簡單的情況下,操作可以放置到Action對(duì)象中,雖然這樣會(huì)令處理和分級(jí)之間的區(qū)別變得模糊。

  Struts MVC應(yīng)用的視圖通常由JSP構(gòu)造,它可以使用HTML或者XML靜態(tài)格式化頁面,還提供了一個(gè)方法可動(dòng)態(tài)插入自定義的內(nèi)容來響應(yīng)用戶的請(qǐng)求。Structs的一個(gè)關(guān)鍵是它的自定義標(biāo)簽庫,它提供了一個(gè)方法,可以很容易地使用JSP來創(chuàng)建用戶界面。

  Structs架構(gòu)包含有自定義的標(biāo)簽庫,可以通過各種不同的方式使用。雖然就使用該架構(gòu)來說,這些庫并不是必須的,不過它們包含的標(biāo)簽在你的應(yīng)用的許多地方都很有用。Structs的一些標(biāo)簽庫包括有:

  . structs-html標(biāo)簽庫。該庫可以用作創(chuàng)建動(dòng)態(tài)HTML用戶界面或者表格。

  . structs-bean標(biāo)簽庫。對(duì)于將JavaBean代碼放到JSP頁面,該庫提供了一個(gè)加強(qiáng)方式,通過 標(biāo)簽實(shí)現(xiàn)。

  . struts-logic標(biāo)簽庫。該庫可以管理有條件地產(chǎn)生輸出文本,遍歷對(duì)象collections以重復(fù)地產(chǎn)生輸出文本,還有應(yīng)用流控制。

  . struts-template標(biāo)簽庫。該庫包含的標(biāo)簽可用作為頁面創(chuàng)建動(dòng)態(tài)的JSP模板,這些頁面都擁有一個(gè)公共的外觀或者公同的格式。

  使用這些標(biāo)簽庫和其它的任何庫都是一樣的。因?yàn)閹煲呀?jīng)寫好了,你所要做的就是告訴servlet引擎要使用它。在Tomcat中,你可以通過web.xml文件中的<taglib>標(biāo)簽來指定標(biāo)簽庫的URI,以及Web服務(wù)器系統(tǒng)上標(biāo)簽庫描述文件的位置。

  The Small Print

  Jakarta工程可讓你下載Structs的二進(jìn)制版本,或者直接由源代碼中編譯它。二進(jìn)制版工作得很好,不過如果你擁有一個(gè)不常見的軟件平臺(tái),或者想學(xué)習(xí)一下如何編譯它,也不是很困難。無論你的選擇如何,Structs都需要以下幾個(gè)軟件:

  . Java Development Kit (JDK). 你需要為你的操作系統(tǒng)下載和安裝一個(gè)Java 2 JDK實(shí)現(xiàn)。

 ?。甋ervlet容器。你還需要下載和安裝一個(gè)兼容Servlet API規(guī)范(2.2版以上)、JSP規(guī)范(1.1版以上)的servlet容器。一個(gè)好的選擇是下載Apache的Tomcat,它可以支持網(wǎng)頁服務(wù),并且可以運(yùn)行servlet和JSP。

  .XML解析器。Struts需要一個(gè)兼容Java API for XML Parsing (JAXP)規(guī)范(1.1版或以上)的XML解析器。

 ?。甋ervlet API類。為了編譯Structs或者使用Structs的應(yīng)用,你將需要一個(gè)包含有servlet和JSP API類的servlet.jar文件。大部分的servlet容器都包含有這個(gè)JAR文件。

 ?。甁DBC 2.0 optional package類。Structs支持javax.sql.DataSource的一個(gè)可選實(shí)現(xiàn),因此它需要這些API類來編譯。你可以在這個(gè)網(wǎng)址下載這些包類:http://java.sun.com/products/jdbc/download.html

  要使用Structs來建立一個(gè)應(yīng)用,需要遵從以下步驟。首先,將Structs中的lib/commons-*.jar和 lib/struts.jar文件拷貝到應(yīng)用中的WEB-INF/lib目錄。然后將Structs中的全部標(biāo)簽庫描述文件(lib/struts-*.tld)拷貝到你的Web應(yīng)用中的WEB-INF目錄。

  拷貝完這些文件后,你就可以修改Web應(yīng)用中的web.xml文件,令它包含有一個(gè)<servlet>元素來定義控制器servlet,還有一個(gè)<servlet-mapping>元素以指明哪個(gè)請(qǐng)求的URI被映射到這個(gè)servlet。如果你使用默認(rèn)的目錄來進(jìn)行一個(gè)標(biāo)準(zhǔn)的安裝,你可以使用Struts例子應(yīng)用中的web.xml文件來作為一個(gè)參考,看它是如何設(shè)置的,然后你就可以修改Web應(yīng)用中的web.xml文件來指定適當(dāng)?shù)臉?biāo)簽庫聲明。再次申明,你可以由Structs的例子應(yīng)用中學(xué)習(xí)如何設(shè)置。

  修改完web.xml文件后,在WEB-INF目錄創(chuàng)建一個(gè)稱為struts-config.xml的文件,在其中定義操作映射和其它與你的應(yīng)用相關(guān)的特性。最后,在每個(gè)將使用Struts自定義標(biāo)簽的JSP頁面的頂部,加入Struts自定義標(biāo)簽的聲明。

  Struts這個(gè)名字來源于在建筑和舊式飛機(jī)中使用的支持金屬架。它的目的是為了幫助你減少在運(yùn)用MVC設(shè)計(jì)模型來開發(fā)Web應(yīng)用的時(shí)間。你仍然需要學(xué)習(xí)和應(yīng)用該架構(gòu),不過它將可以完成其中一些繁重的工作。如果想混合使用servlets和JSP的優(yōu)點(diǎn)來建立可擴(kuò)展的應(yīng)用,Struct可以幫助你完成其中的一些工作。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
開源框架:Structs2.0入門學(xué)習(xí)(1)
struts2.x深入探索
用struts framework開發(fā)應(yīng)用程序
InfoQ: Java和.NET兩個(gè)世界的極點(diǎn):賺錢和娛樂
Struts在Tomcat中的安裝配置及工作流程
springMVC入門
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服