




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第8章 struts 1.3框架 本章主要內(nèi)容 jsp的model1和model2開(kāi)發(fā)模式 mvc設(shè)計(jì)模式的基本思想 struts1.3框架的安裝與部署 struts表單技術(shù) 單一操作控制邏輯與多重操作控制邏輯 8.1 jsp開(kāi)發(fā)模式 8.1.1 model 1開(kāi)發(fā)模式開(kāi)發(fā)模式 model1開(kāi)發(fā)模式簡(jiǎn)單,開(kāi)發(fā)速度快,容易實(shí)現(xiàn),比較適合于小型網(wǎng)站的構(gòu)建。但由于jsp頁(yè)面中包含有大量的java代碼,頁(yè)面可讀性差,代碼可重用性和可維護(hù)性相對(duì)差。 8.1.2 mvc設(shè)計(jì)模式與model 2開(kāi)發(fā)模式 1、mvc設(shè)計(jì)模式的基本思想設(shè)計(jì)模式的基本思想model2開(kāi)發(fā)模式也叫mvc模式 圖8-1 jsp的mv
2、c開(kāi)發(fā)模式 圖8-2中的mvc三層的作用如下:(1)控制器層:控制器用servlet程序?qū)崿F(xiàn)。當(dāng)用戶請(qǐng)求到達(dá)mvc模塊時(shí),控制器接收請(qǐng)求,并組織工作流程,決定調(diào)用哪些模型組件來(lái)處理請(qǐng)求,完成既定的功能??刂破魍瓿扇蝿?wù)后,調(diào)用合適的視圖來(lái)顯示模型返回的數(shù)據(jù)。(2)模型:模型表示企業(yè)數(shù)據(jù)和業(yè)務(wù)規(guī)則。在mvc的三個(gè)部件中,模型擁有最多的處理任務(wù)。模型組件一般由javabean充當(dāng),根據(jù)系統(tǒng)需要可以擴(kuò)展為ejb組件。模型與數(shù)據(jù)格式無(wú)關(guān),并可序列化,這使得模型能為多個(gè)視圖提供數(shù)據(jù)并能夠在層間傳遞。模型、控制器和視圖重用,能夠減少代碼的重復(fù)性。(3)視圖:視圖是用戶看到并與之交互的界面,它可以由html、
3、jsp、jstl、el表達(dá)式、xml等構(gòu)成。 【例8-1】對(duì)pubs數(shù)據(jù)庫(kù)的titles表按書名進(jìn)行單關(guān)鍵字模糊查詢,結(jié)果顯示書名、類型和單價(jià)。用mvc設(shè)計(jì)模式實(shí)現(xiàn)。操作步驟如下:(1)設(shè)計(jì)一個(gè)輸入查詢關(guān)鍵字的表單頁(yè)面。在設(shè)計(jì)視圖中,添加表單:插入表單。添加一個(gè)名字為“key”的文本域。插入一個(gè)提交按鈕。表單提交給名為“/controller”的控制器處理。 (2)寫一個(gè)javabean封裝查詢到的記錄,只要求對(duì)書名title、類型type和單價(jià)price進(jìn)行封裝。 (3) 編譯bookvo程序 (4)寫一個(gè)javabean,根據(jù)傳入的單關(guān)鍵字對(duì)數(shù)據(jù)庫(kù)進(jìn)行模糊查詢,把查詢結(jié)果中的書名title
4、、類型type和單價(jià)price封裝在bookvo對(duì)象中,最后存儲(chǔ)在list集合中。 (5) 編譯bookquery程序(6)寫一個(gè)servlet程序,實(shí)現(xiàn)控制器,讀取表單中的關(guān)鍵字,調(diào)用javabean實(shí)現(xiàn)數(shù)據(jù)庫(kù)查詢,將結(jié)果傳遞給jsp頁(yè)面顯示。 (7) 編譯controller程序。 (8)在web.xml中部署servlet程序。 (9)編寫一個(gè)jsp頁(yè)面顯示查詢結(jié)果。 (10)編寫一個(gè)jsp頁(yè)面,顯示查詢出錯(cuò)信息。 在開(kāi)發(fā)的過(guò)程中,只要定義好相應(yīng)的接口規(guī)則,開(kāi)發(fā)人員即可專注于自己模塊的開(kāi)發(fā),提高了系統(tǒng)的開(kāi)發(fā)效率。2、mvc設(shè)計(jì)的優(yōu)點(diǎn)web層與其它層分離,提高了軟件的健壯性、可擴(kuò)展性和可維
5、護(hù)性。業(yè)務(wù)邏輯層與其它層的分離,最大程度地提高了代碼的重用性。8.2 struts 1.3框架 8.2.1 struts 1.3.8的安裝和配置 1、安裝安裝api支持包支持包在中下載struts1.3.8的軟件包,解壓后找到常用的api包,將它們復(fù)制到c:tomcatwebappsrootweb-inflib文件夾下2、在在web應(yīng)用中部署應(yīng)用中部署struts 8.2.2 struts-config.xml部署文件 struts-config.xml是strtus重要的部署文件。用戶在完成struts程序的編譯和jsp頁(yè)面設(shè)計(jì)后,需要在此部署文
6、件中編寫部署信息,將程序和jsp頁(yè)面部署到struts框架中,供struts框架集中管理和調(diào)用。打開(kāi)安裝時(shí)復(fù)制到c:tomcatwebappsrootweb-infstruts-config.xml部署文件 8.3 struts的表單技術(shù) 8.3.1 struts的表單標(biāo)記 struts表單標(biāo)記的特點(diǎn)是:能夠配合struts框架的表單校驗(yàn)功能使用,當(dāng)表單校驗(yàn)失敗時(shí),struts框架會(huì)跳轉(zhuǎn)至表單頁(yè)面顯示出錯(cuò)信息,表單提交前的數(shù)據(jù)仍然保持在表單中,方便用戶修改表單數(shù)據(jù)。struts能夠把表單中的信息自動(dòng)填寫入表單類實(shí)例中。要在jsp頁(yè)面中引用struts表單標(biāo)記 所用的標(biāo)記庫(kù)聲明為: 1、標(biāo)記標(biāo)記
7、 它類似于html的標(biāo)記,用于定義一個(gè)表單。中常用的屬性主要有: (1)action屬性 (2)method屬性 (3)name屬性 (4)scope屬性 2、標(biāo)記標(biāo)記 定義一個(gè)單行文本域。property屬性定義文本域的名字 例如: 3、標(biāo)記標(biāo)記 定義一個(gè)取消按鈕,按鈕上的提示文字寫在標(biāo)記體內(nèi)。例如:取消 4、標(biāo)記標(biāo)記定義一個(gè)復(fù)位按鈕,按鈕的提示文字寫在標(biāo)記體內(nèi)。例如:重置 5、標(biāo)記標(biāo)記 定義一個(gè)提交按鈕,提交按鈕的提示文字寫在標(biāo)記體內(nèi)。例如: 提交 6、標(biāo)記標(biāo)記 定義一個(gè)復(fù)選框。property屬性定義復(fù)選框的名字,value屬性定義復(fù)選框的值。例如要定義兩個(gè)“愛(ài)好”復(fù)選框,代碼如下: 7
8、、標(biāo)記標(biāo)記 定義一個(gè)單選按鈕。property屬性定義單選按鈕的名字,value屬性定義單選按鈕的值。例如要定義兩個(gè)“性別”單選按鈕,代碼如下: 8、和和標(biāo)記標(biāo)記 標(biāo)記用于定義下拉列表,標(biāo)記用于定義下拉列表,property屬性定義屬性定義下拉列表的名字。下拉列表的名字。標(biāo)記給下拉列表定義一個(gè)選項(xiàng),其中標(biāo)記給下拉列表定義一個(gè)選項(xiàng),其中value屬性是選項(xiàng)的值,標(biāo)記體是選項(xiàng)的提示文字。例如,屬性是選項(xiàng)的值,標(biāo)記體是選項(xiàng)的提示文字。例如,要定義一個(gè)有三個(gè)選項(xiàng)的要定義一個(gè)有三個(gè)選項(xiàng)的“角色角色”下拉列表,代碼為:下拉列表,代碼為: 管理員管理員 普通用戶普通用戶 部門經(jīng)理部門經(jīng)理 9、標(biāo)記標(biāo)記 表單
9、校驗(yàn)出錯(cuò)后,出錯(cuò)信息用一個(gè)actionmessage對(duì)象封裝,用指定的名字存儲(chǔ)在actionerrors對(duì)象中,標(biāo)記能夠從actionerrors對(duì)象中檢索出指定名字的一條actionmessage消息并顯示在標(biāo)記處。 例如: 8.3.2 actionform表單類和表單校驗(yàn)表單類和表單校驗(yàn) org.apache.struts.action.actionform類是一個(gè)表單類,它被stuts框架實(shí)例化后用來(lái)存儲(chǔ)表單元素值。用戶要為某個(gè)表單編寫表單類時(shí),可繼承actionform類得到一個(gè)表單類,在表單類中定義一個(gè)變量來(lái)存儲(chǔ)一個(gè)表單元素的值,并為變量定義相應(yīng)的set/getxxx()方法,這步工
10、作類似于為表單寫一個(gè)vo類。在表單類中如果要對(duì)表單元素值進(jìn)行檢驗(yàn),只需要對(duì)actionform父類中的validate()方法進(jìn)行重置,在validate()中對(duì)各表單元素用java代碼段進(jìn)行檢驗(yàn)。 validate()校驗(yàn)方法的聲明為: public actionerrors validate(actionmapping mapping, javax.servlet.http.httpservletrequest request) 8.3.3 dynaactionform表單類和validator校驗(yàn)框架 dynaactionform表單類的部署表單類的部署 使用dynaactionform
11、表單類時(shí),一般不需要手工編寫表單類,只需要在struts-cofig.xml中作出配置 一個(gè)樣例如下示: 2、dynaactionform表單的校驗(yàn)表單的校驗(yàn) (1)一種方法是自定義一個(gè)dynaactionform表單類,繼承dynaactionform,在自定義的dynaactionform表單類中對(duì)validate()方法進(jìn)行重置,在validate()中實(shí)現(xiàn)對(duì)表單元素的校驗(yàn)。 (2)另一種方法是利用validator校驗(yàn)框架對(duì)dynaactionform表單進(jìn)行校驗(yàn),校驗(yàn)框架是apache項(xiàng)目中獨(dú)立于struts的另一個(gè)框架。 3、validator-rules.xml中的標(biāo)準(zhǔn)校驗(yàn)規(guī)則中
12、的標(biāo)準(zhǔn)校驗(yàn)規(guī)則 例如對(duì)日期、時(shí)間、數(shù)字等的校驗(yàn)規(guī)則,其中常用的校驗(yàn)規(guī)則如下: (1)required規(guī)則:表單元素的取值不允許為空。 (2)minlength規(guī)則:表單元素中字符個(gè)數(shù)不少于n個(gè)。使用此規(guī)則時(shí)要定義一個(gè)名為minlength的變量,并定義變量的具體取值。 4、validation.xml validation.xml的根元素是。在元素中可以定義一些全局的符號(hào)常量。符號(hào)變量的定義用元素實(shí)現(xiàn)。 8.3.4 基于map-backed的actionform表單類 actionform和dynaactionform的共同點(diǎn)是:所處理的表單元素的名字是已知的,表單元素的總個(gè)數(shù)是確定的。 基于
13、map-backed的actionform表單類比較適于處理動(dòng)態(tài)表單問(wèn)題,它實(shí)際上是一個(gè)actionform,但在actionform內(nèi)部用一個(gè)hashmap集合對(duì)象存儲(chǔ)動(dòng)態(tài)表單元素,表單元素的名字當(dāng)作它在hashmap中的鍵(key),表單元素值當(dāng)作它在hashmap中的鍵值(value)。 8.4 struts的控制器層 控制器層由若干個(gè)組件共同構(gòu)成,這些組件間是松耦合的關(guān)系,其中最關(guān)鍵的是org.apache.struts.action包中的actionservlet類、requestprocessor類、action/dispatchaction類以及actionmapping類等。
14、8.4.1 action類與單一操作控制邏輯 action中最核心的方法是execute()方法,它的聲明如下: public actionforward execute(actionmapping mapping, actionform form,javax.servlet.http.httpservletrequest request, javax.servlet.http.httpservletresponse response) throws java.lang.exception【例8-2】用struts寫一個(gè)登錄應(yīng)用,在一個(gè)login.jsp頁(yè)面中輸入用戶名和口令,提交表單后,如果
15、用戶名和口令不為空,則轉(zhuǎn)至suc.jsp顯示用戶和口令,否則返回login.jsp提示用戶名和口令有錯(cuò)。操作步驟如下: (1)建立表單頁(yè)。在代碼視圖中,找到標(biāo)記,輸入如下示的代碼: (2)為表單編寫表單類。名為“l(fā)oginform”類,輸入如下的代碼: (3)編譯loginform程序。(4)為表單類編寫部署信息。 (5)為表單類編寫消息資源文件。 (6)在struts-cofig.xml中把perties定義為默認(rèn)的資源文件。 (7)編寫控制邏輯類。名為“l(fā)oginaction”的類,輸入如下的代碼: (8) 編譯loginaction程序。 (9)部署loginaction程序。輸入以下的部署信息: (10)編寫結(jié)果顯示頁(yè)。 (11)預(yù)覽。啟動(dòng)tomcat,打開(kāi)一個(gè)ie窗口,輸入訪問(wèn)url: :8080/login.jsp 完成以下測(cè)試: 用戶名和口令均留空,單擊【提交】按鈕,網(wǎng)頁(yè)上顯示出錯(cuò)提示信息。 用戶名或口令之一留空,單擊【提交】按鈕,網(wǎng)頁(yè)上顯示出錯(cuò)提示信息。 填寫用戶名或口令,單擊【提交】按鈕,網(wǎng)頁(yè)上顯示出所輸入的用戶名和口令。 8.4.2 多重操作控制邏輯 action類只有一個(gè)execute()方法,只適合于實(shí)現(xiàn)一種
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 書面流轉(zhuǎn)合同樣本
- 中鐵物資購(gòu)銷合同樣本
- 親子游泳員工合同樣本
- gf2013施工合同樣本
- 專利許可合同-合同樣本
- 個(gè)人建冷庫(kù)合同樣本
- 全英文傭金合同樣本
- 倉(cāng)庫(kù)建設(shè)招標(biāo)合同樣本
- 公司車棚租賃合同樣本
- 共享鋰電租賃合同標(biāo)準(zhǔn)文本
- 19S406建筑排水管道安裝-塑料管道
- KA-T 20.1-2024 非煤礦山建設(shè)項(xiàng)目安全設(shè)施設(shè)計(jì)編寫提綱 第1部分:金屬非金屬地下礦山建設(shè)項(xiàng)目安全設(shè)施設(shè)計(jì)編寫提綱
- 綠色生活實(shí)踐
- (2024年)硫化氫安全培訓(xùn)課件
- 《聚焦超聲治療》課件
- 2023-2024學(xué)年高一下學(xué)期第一次月考(湘教版2019)地理試題(解析版)
- 婦科炎癥介紹演示培訓(xùn)課件
- 如康家園管理制度
- 蓄水池工程施工工藝與技術(shù)措施
- 2022年4月自考00149國(guó)際貿(mào)易理論與實(shí)務(wù)試題及答案含評(píng)分標(biāo)準(zhǔn)
- 大數(shù)據(jù)驅(qū)動(dòng)的藥物研發(fā)
評(píng)論
0/150
提交評(píng)論