版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
17.17.27.37.47.57.67.7Struts工作原理用戶登錄界面和MVC模塊劃分用戶登錄Model層實(shí)現(xiàn)用戶登錄View層的實(shí)現(xiàn)用戶登錄Controller層的實(shí)現(xiàn)Struts相關(guān)的配置文件用Struts實(shí)現(xiàn)主頁(yè)顯示第7章–用Struts實(shí)現(xiàn)寵物商城的登錄功能2學(xué)習(xí)目標(biāo)通過(guò)本章的學(xué)習(xí),你可以:了解Struts1工作原理掌握如何使用Struts1框架完成任務(wù)737.1
Struts工作原理MVC設(shè)計(jì)模式Struts簡(jiǎn)介Struts的運(yùn)行流程Struts開(kāi)發(fā)環(huán)境配置47.1.1 MVC設(shè)計(jì)模式Struts是當(dāng)前應(yīng)用最廣泛的Javaweb應(yīng)用開(kāi)發(fā)框架,已經(jīng)成為MVC框架的事實(shí)標(biāo)準(zhǔn)MVC是一種設(shè)計(jì)模式,它把系統(tǒng)分為3個(gè)模塊:模型(Model):如業(yè)務(wù)模型、數(shù)據(jù)模型等,通常體現(xiàn)為JavaBean的形式視圖(View):提供可交互的用戶界面,向用戶顯示數(shù)據(jù)模型。對(duì)應(yīng)的組件是JSP或HTML文件控制器(Controller):響應(yīng)用戶的請(qǐng)求,根據(jù)用戶的請(qǐng)求來(lái)操作模型,并把響應(yīng)結(jié)果經(jīng)由視圖展現(xiàn)給用戶,如
Struts的Action采用MVC模式,由于各部分相對(duì)獨(dú)立,便于分工開(kāi)發(fā)、維護(hù),并提高了重用性57.1.2 Struts簡(jiǎn)介處理一個(gè)請(qǐng)求,Struts有對(duì)應(yīng)的三個(gè)部分Model:ActionForm和JavaBean,ActionForm用于封裝用戶請(qǐng)求參數(shù)(可以通過(guò)調(diào)用其方法得到請(qǐng)求參數(shù)值)
,而JavaBean則封裝了底層的業(yè)務(wù)邏輯,包括數(shù)據(jù)庫(kù)訪問(wèn)等View:JSP,Struts提供了標(biāo)簽庫(kù),象JSTL一樣減少JSP頁(yè)面中的Java代碼(你可選擇JSTL也可選擇Struts標(biāo)簽)67.1.2 Struts簡(jiǎn)介(續(xù))Controller:包括系統(tǒng)核心控制器ActionServlet和業(yè)務(wù)邏輯控制器ActionActionServlet由Struts框架提供,繼承HttpServlet類,負(fù)責(zé)攔截所有HTTP請(qǐng)求,然后根據(jù)用戶請(qǐng)求決定是否需要調(diào)用Action,如果需要調(diào)用業(yè)務(wù)邏輯控制器,則將請(qǐng)求轉(zhuǎn)發(fā)給Action處理,否則直接轉(zhuǎn)向請(qǐng)求的JSP頁(yè)面。ActionServlet由Struts開(kāi)發(fā)包提供,不需要程序員開(kāi)發(fā),但是需要在web.xml中進(jìn)行配置Action負(fù)責(zé)處理用戶請(qǐng)求,通常Action需要調(diào)用Model來(lái)完成處理。Action需要程序員開(kāi)發(fā)Struts核心配置文件:通過(guò)核心配置文件Struts-config.xml
將MVC組成一個(gè)整體77.1.3 Struts的運(yùn)行流程Web應(yīng)用都是請(qǐng)求一響應(yīng)的程序結(jié)構(gòu)。程序是由客戶端Client發(fā)出HTTP請(qǐng)求開(kāi)始的,客戶端請(qǐng)求被ActionServlet攔截。請(qǐng)求有兩種情況:要求邏輯控制器處理的請(qǐng)求簡(jiǎn)單轉(zhuǎn)發(fā)的請(qǐng)求87.1.3 Struts的運(yùn)行流程(續(xù))要求邏輯控制器處理的請(qǐng)求:對(duì)于此類請(qǐng)求,ActionServlet需要調(diào)用對(duì)應(yīng)的Action。ActionServlet將請(qǐng)求轉(zhuǎn)發(fā)到Action,如果請(qǐng)求還配置了對(duì)應(yīng)的FormBean(在Struts-config.xml中配置),則ActionServlet還負(fù)責(zé)用請(qǐng)求參數(shù)填充ActionForm
。Action將從
ActionForm中獲得請(qǐng)求參數(shù)。Action獲得請(qǐng)求參數(shù)后,調(diào)用Model對(duì)象由JavaBean處理用戶請(qǐng)求。Action處理完用戶請(qǐng)求之后,將處理結(jié)果包裝成ActionForward,回送給ActionServlet97.1.3 Struts的運(yùn)行流程(續(xù))最常見(jiàn)的情況是,經(jīng)過(guò)Action的處理,JSP頁(yè)面在顯示之前,已經(jīng)將顯示需要的信息保存到一個(gè)Javabean中,通常是scope為session或request的Java
bean,可以使用EL表達(dá)式、JSTL或者Struts的標(biāo)簽庫(kù)顯示107.1.3 Struts的運(yùn)行流程(續(xù))簡(jiǎn)單轉(zhuǎn)發(fā)的請(qǐng)求:對(duì)于此類請(qǐng)求,HTTP請(qǐng)求無(wú)須Action處理,直接轉(zhuǎn)向相關(guān)頁(yè)面117.1.4
Struts開(kāi)發(fā)環(huán)境配置Eclipse需要自己下載安裝和配置,見(jiàn)教材MyEclipse中已經(jīng)集成Struts,只需要配置,見(jiàn)教材127.2
用戶登錄界面和MVC模塊劃分用戶登錄的界面及流程用Struts實(shí)現(xiàn)用戶登錄的要點(diǎn)用戶登錄的實(shí)現(xiàn)思路137.2.1
用戶登錄的界面及流程通過(guò)界面了解需求–
用戶登錄界面147.2.1
用戶登錄的界面及流程(續(xù))–
登錄成功界面157.2.1
用戶登錄的界面及流程(續(xù))–
登錄失敗界面167.2.2
用Struts實(shí)現(xiàn)用戶登錄的要點(diǎn)用戶登錄采用Struts框架實(shí)現(xiàn),Struts框架使用不復(fù)雜,只需要一個(gè)適應(yīng)過(guò)程,重點(diǎn)掌握:Struts的控制層新技術(shù):Struts的Action類。處理用戶的請(qǐng)求,在轉(zhuǎn)向視圖層組件(如JSP頁(yè)面)前自動(dòng)執(zhí)行,可分擔(dān)JSP的業(yè)務(wù)處理和流程控制,使JSP只單純地負(fù)責(zé)顯示。登錄這里主要是是定義一個(gè)Action,對(duì)用戶進(jìn)行身份驗(yàn)證并根據(jù)結(jié)果轉(zhuǎn)向登錄成功和登錄失敗頁(yè)面;定義一個(gè)Action對(duì)退出進(jìn)行處理并轉(zhuǎn)向主頁(yè)面。Struts的視圖層新技術(shù):主要是Struts的標(biāo)簽庫(kù),同JSTL類似,功能類似,所以用戶可以根據(jù)自己的喜好和習(xí)慣選擇Struts標(biāo)簽或JSTL。177.2.2
用Struts實(shí)現(xiàn)用戶登錄的要點(diǎn)(續(xù))Struts的模型層新技術(shù):Struts的ActionForm類,就是一個(gè)特殊的JavaBean。前面介紹過(guò)ActionForm可以封裝表單或請(qǐng)求參數(shù)的數(shù)據(jù),為后續(xù)處理提供數(shù)據(jù)。登錄這里就是定義一個(gè)
ActionForm,對(duì)應(yīng)登錄界面的表單域定義相關(guān)同名屬性和對(duì)應(yīng)
getter/setter。struts-config.xml:Struts的核心配置文件,在這里配置定義的
Action和ActionForm,將獨(dú)立的MVC三層連成一體。web.xml:在其中配置ActionServlet、Struts的核心配置文件和
Struts的標(biāo)簽庫(kù)(高版本的Struts將標(biāo)簽庫(kù)實(shí)現(xiàn)文件和描述文件都集中到j(luò)ar包中,可以不用在web.xml中配置),使得MVC各模塊能在web服務(wù)器中生效。187.2.3
用戶登錄的實(shí)現(xiàn)思路使用Struts實(shí)現(xiàn)web應(yīng)用程序最關(guān)鍵的是要設(shè)計(jì)好模型層(Model)、視圖層(View)組件和控制層(Controller)組件之間的關(guān)系,然后按照這樣的設(shè)計(jì)實(shí)現(xiàn)相關(guān)組件并配置好struts-config.xml文件197.2.3
用戶登錄的實(shí)現(xiàn)思路(續(xù))Model層:主要是對(duì)保存在數(shù)據(jù)庫(kù)中的用戶信息進(jìn)行處理在數(shù)據(jù)庫(kù)中創(chuàng)建表account
,保存用戶信息創(chuàng)建對(duì)應(yīng)POJO類Account創(chuàng)建表account與類Account的hibernate映射文件Account.hbm.xml創(chuàng)建訪問(wèn)數(shù)據(jù)庫(kù)的DAO類AccountDAO創(chuàng)建封裝用戶錄入數(shù)據(jù)的AccountForm207.2.3
用戶登錄的實(shí)現(xiàn)思路(續(xù))View層:主要是顯示的幾個(gè)頁(yè)面登錄錄入頁(yè)面登錄成功頁(yè)面登錄失敗頁(yè)面217.2.3
用戶登錄的實(shí)現(xiàn)思路(續(xù))Controller層:創(chuàng)建登錄處理的Action并在struts-config.xml中進(jìn)行配置創(chuàng)建退出處理的Action并在struts-config.xml中進(jìn)行配置227.2.3
用戶登錄的實(shí)現(xiàn)思路(續(xù))配置:需要配置web.xml和Struts-config.xml在web.xml中配置:控制器ActionServletStruts標(biāo)簽庫(kù)(高版本的struts可免)在Struts核心配置文件struts-cfg.xml中配置:封裝用戶錄入數(shù)據(jù)的AccountForm登錄處理的Action和退出處理的Action全局轉(zhuǎn)向頁(yè)面237.3
用戶登錄Model層實(shí)現(xiàn)在數(shù)據(jù)庫(kù)中創(chuàng)建表account創(chuàng)建表account對(duì)應(yīng)POJO類Account創(chuàng)建表account和Account類的Hibernate影射文件創(chuàng)建表account對(duì)應(yīng)數(shù)據(jù)庫(kù)訪問(wèn)DAO類修改業(yè)務(wù)接口PetStoreFacade和實(shí)現(xiàn)類PetStoreImpl創(chuàng)建封裝登錄界面表單數(shù)據(jù)的AccountForm247.3.1在數(shù)據(jù)庫(kù)中創(chuàng)建表account參照數(shù)據(jù)模型創(chuàng)建表account257.3.2
創(chuàng)建表account對(duì)應(yīng)POJO類Account創(chuàng)建好表account,可以在Eclipse中使用Hibernate
codegeneration來(lái)自動(dòng)創(chuàng)建也可手動(dòng)創(chuàng)建建議Account類的屬性名與account表的對(duì)應(yīng)字段名相同,可簡(jiǎn)化影射文件Account.hbm.xml的代碼定義屬性后,在Eclipse中可自動(dòng)生成各屬性對(duì)應(yīng)setter/getter在Account類中定義2個(gè)構(gòu)造方法,一個(gè)無(wú)參,一個(gè)包含對(duì)所有屬性進(jìn)行初始化的參數(shù)增加一個(gè)main方法測(cè)試267.3.3
創(chuàng)建表account和Account類的Hibernate影射文件創(chuàng)建好表account,可以在Eclipse中使用Hibernate
codegeneration來(lái)自動(dòng)創(chuàng)建也可手動(dòng)創(chuàng)建,–
由于表account和Account類的字段名和屬性名相同,所以它們的Hibernate影射文件Account.hbm.xml的代碼非常簡(jiǎn)單,見(jiàn)教材277.3.4
創(chuàng)建表account對(duì)應(yīng)數(shù)據(jù)庫(kù)訪問(wèn)DAO類主要提供以下功能:根據(jù)username屬性的值獲得Account對(duì)象,即定義方法getAccount(String
username)根據(jù)username和password屬性的值獲得Account對(duì)象列表,即定義方法getAccount(String
username,String
password)將Account對(duì)象保存到數(shù)據(jù)庫(kù)中,即定義方法
insertAccount(Accountaccount)
,用戶注冊(cè)模塊需要該方法修改Account對(duì)象對(duì)應(yīng)的數(shù)據(jù)庫(kù)記錄值,即定義方法
updateAccount(Account
account),用戶信息維護(hù)模塊需要該方法增加main方法測(cè)試287.3.5
修改業(yè)務(wù)接口PetStoreFacade和實(shí)現(xiàn)類PetStoreImpl業(yè)務(wù)接口PetStoreFacade是各模塊進(jìn)行業(yè)務(wù)邏輯處理的唯一接口,在其中增加訪問(wèn)account表的方法,即
AccountDAO實(shí)現(xiàn)的方法,使得相關(guān)Action類訪問(wèn)
account表只是通過(guò)PetStoreFacade接口,修改后的
PetStoreFacade關(guān)鍵代碼如下……public
interface
PetStoreFacade
{
Account
getAccount(String
username);List
getAccount(String
username,
String
password);void
insertAccount(Account
account);void
updateAccount(Account
account);//省略其他部分……}297.3.5
修改業(yè)務(wù)接口PetStoreFacade和實(shí)現(xiàn)類PetStoreImpl(續(xù))相應(yīng)修改PetStoreFacade實(shí)現(xiàn)類PetStoreImpl增加一個(gè)名為accountDao
的屬性以訪問(wèn)account表構(gòu)造方法中增加accountDao的初始化代碼增加getAccount(String),getAccount(String,String)、insertAccount(Account)和updateAccount(Account)方法的實(shí)現(xiàn)增加main方法測(cè)試30必須繼承org.apache.struts.action.ActionForm對(duì)應(yīng)表單域定義屬性ActionForm的屬性與表單域的名字相同為屬性提供getter/setter–
可以沒(méi)有與表單域同名的屬性,但是必須有對(duì)應(yīng)的getter/setter7.3.6
創(chuàng)建封裝用戶登錄界面表單數(shù)據(jù)的AccountForm317.4用戶登錄View層的實(shí)現(xiàn)用戶登錄頁(yè)面用戶登錄成功頁(yè)面用戶登錄失敗頁(yè)面327.4.1
用戶登錄頁(yè)面文件名SignonForm.jsp建議在WebContent下創(chuàng)建文件夾account,將跟用戶有關(guān)的jsp文件都保存在該文件夾下;在account文件夾下創(chuàng)建
SignonForm.jsp
具體代碼見(jiàn)教材,主要是定義一個(gè)表單(form),并用表格對(duì)齊各表單域<form
action="../shop/Signon.shtml"method="POST">中的action指定表單提交后將調(diào)用的頁(yè)面。<a
href="../shop/newAccountForm.shtml"">注冊(cè)</a>中的href指定單擊鏈接將打開(kāi)的頁(yè)面。<td><input
type=“text”
name=“username”
value=“test”
/></td>的name指定文本框域的名稱,對(duì)應(yīng)AccountForm的屬性<td><input
type=“password”
name=“password”
value=“test”/></td>name指定密碼框域的名稱,對(duì)應(yīng)AccountForm的屬性在Eclipse中測(cè)試頁(yè)面效果337.4.2
用戶登錄成功界面用戶登錄成功后還是顯示主界面,只是用戶登錄成功前后的快捷菜單是不同的,還有成功后將顯示歡迎信息快捷菜單在公共頂部頁(yè)面IncludeTop.jsp中實(shí)現(xiàn),歡迎信息在主界面Main.jsp中實(shí)現(xiàn)所以不需要?jiǎng)?chuàng)建新的文件,只需要修改IncludeTop.jsp和Main.jsp的代碼即可347.4.2
用戶登錄成功界面(續(xù))快捷菜單在IncludeTop.jsp中實(shí)現(xiàn),可以通過(guò)JSTL的<c:if>標(biāo)簽或Struts的logic標(biāo)簽:進(jìn)行判斷顯示不同的快捷菜單。如果選擇使用JSTL的<c:if>標(biāo)簽,只要將原來(lái)的語(yǔ)句:<A
href=“”>登錄</A>替換為<c:if
test="${empty
account}"
><a
href="../account/SignonForm.jsp">登錄</a></c:if><c:if
test="${!empty
account}"
><a
href="../shop/Signoff.shtml"/>登出</a><img
border="0"
src="../images/separator.gif"
/><a
href="../account/EditAccountForm.jsp">我的帳戶</a></c:if>357.4.2
用戶登錄成功界面(續(xù))account是保存在會(huì)話(session)中的一個(gè)變量,它是
Account的一個(gè)對(duì)象;如果登錄成功,相關(guān)Action(見(jiàn)7.5.1)會(huì)將當(dāng)前用戶的信息保存到會(huì)話的account中,否則會(huì)清空會(huì)話中account的值。<c:if
test=“${empty
account}”>意思是如果account為空。<c:if
test=“${!empty
account}”>意思是如果account不為空。由于Action還未建立,accoun變量現(xiàn)在還不存在,則無(wú)法判斷,所以以上修改目前無(wú)法測(cè)試。367.4.2
用戶登錄成功界面(續(xù))用戶登錄成功后的歡迎信息是在Main.jsp中實(shí)現(xiàn)的。我們通過(guò)JSTL的<c:if>標(biāo)簽進(jìn)行判斷是否輸出歡迎信息。然后使用EL表達(dá)式輸出用戶姓名。即在<divid=“Main”>和<div
id=“Sidebar”>之間增加如下代碼:<c:if
test="${!empty
account}">歡迎您,${account.firstname}
${account.lastname}!</c:if>同樣,由于account變量現(xiàn)在還不存在,則無(wú)法判斷,所以以上修改目前無(wú)法測(cè)試。377.4.3
用戶登錄失敗界面登錄失敗界面由Error.jsp來(lái)實(shí)現(xiàn)。建議在項(xiàng)目的mon文件下創(chuàng)建文件Error.jsp,common文件夾存放共享的文件關(guān)鍵代碼:<c:out
value="${message}"default="沒(méi)有更詳細(xì)的出錯(cuò)信息."/>如果message的值為空則輸出default的值“沒(méi)有更詳細(xì)的出錯(cuò)信息.”。這里的message是一個(gè)保存在JSP內(nèi)部對(duì)象request中的屬性(attribute),輸出的是出錯(cuò)提示信息。所有模塊的出錯(cuò)提示可以共享該頁(yè)面,只要將出錯(cuò)信息賦值給request中的屬性message即可。所以將Error.jsp定義成一個(gè)全局的出錯(cuò)轉(zhuǎn)向的頁(yè)面(見(jiàn)7.6.2)387.5
用戶登錄Controller層的實(shí)現(xiàn)處理用戶登錄的SignonAction的實(shí)現(xiàn)處理用戶退出的SignoffAction的實(shí)現(xiàn)397.5.1
處理用戶登錄的SignonAction的實(shí)現(xiàn)必須繼承org.apache.struts.action.Action重載其方法execute
完成功能獲得對(duì)應(yīng)的ActionForm對(duì)象,代碼AccountActionForm
accountActionForm=(AccountActionForm)form;從ActionForm對(duì)象獲得用戶在登錄界面(SignonForm.jsp)錄入的用戶名username和密碼password
,代碼:String
username=accountActionForm.getUsername();String
password=accountActionForm.getPassword();通過(guò)PetStoreFacade接口的getAccount(String
username,Stringpassword)方法訪問(wèn)數(shù)據(jù)庫(kù)查詢是否有該用戶,代碼:PetStoreFacade
petstore=new
PetStoreImpl();List
list=petstore.getAccount(username,password);407.5.1
處理用戶登錄的SignonAction的實(shí)現(xiàn)(續(xù))不存在,則將登錄失敗的信息保存到請(qǐng)求的message屬性(或變量)中并轉(zhuǎn)向failure對(duì)應(yīng)的JSP頁(yè)面,代碼if
(list.size()==
0)
{request.setAttribute("message","用戶名或密碼有誤!登錄失敗.");
return
mapping.findForward("failure");}存在,則獲得該用戶的信息保存到session的account變量中,轉(zhuǎn)向success對(duì)應(yīng)的JSP頁(yè)面(默認(rèn)target)else
{Account
account=petstore.getAccount(username);request.getSession().setAttribute("account",
account);}return
target;41注意:在SignonAction中需要注意2個(gè)變量:message和accountmessage的值通過(guò)request.setAttribute()方法(request是execute的參數(shù),代表當(dāng)前請(qǐng)求)保存在request中,所以可以作為request范圍的變量用EL表達(dá)式來(lái)存取其值,見(jiàn)error.jspaccount的值通過(guò)request.getSession().setAttribute()方法
(request.getSession()可獲得當(dāng)前會(huì)話對(duì)象)保存在session中,所以可以作為session范圍的變量用EL表達(dá)式來(lái)存取其值,見(jiàn)
IncludeTop.jsp427.5.2
處理用戶退出的SignoffAction的實(shí)現(xiàn)繼承org.apache.struts.action.Action重載execute方法完成功能–
將保存在會(huì)話中的accountForm
的值清空并且使會(huì)話失效,代碼:request.getSession().removeAttribute("account");request.getSession().invalidate();437.6 Struts相關(guān)的配置文件在web.xml中配置創(chuàng)建Struts核心配置文件struts-config.xml
并配置447.6.1
在web.xml中配置Servle配置塊:象配置普通Servlet一樣配置
ActionServlet(主要是<servlet>與</servlet>標(biāo)簽和對(duì)應(yīng)的<servlet-mapping>與</servlet-mapping>標(biāo)簽)并在
ActionServlet配置中指定Struts核心配置文件struts-cfg.xml的位置,代碼:<servlet><!--ActionServlet的名--><servlet-name>action</servlet-name><!--配置Servlet的實(shí)現(xiàn)類--><servlet-class>org.apache.struts.action.ActionServlet</servlet-class><init-param><!--指定struts核心配置文件的位置--><param-name>config</param-name><param-value>/WEB-INF/struts-config.xml</param-value></init-param><!--配置自啟動(dòng)的級(jí)別--><load-on-startup>2</load-on-startup></servlet>457.6.1
在web.xml中配置(續(xù))<!--配置ActionServlet的URL映射--><servlet-mapping><servlet-name>action</servlet-name><url-pattern>*.shtml</url-pattern></servlet-mapping>467.6.1
在web.xml中配置(續(xù))擴(kuò)展標(biāo)簽庫(kù)配置塊:配置Struts標(biāo)簽庫(kù),主要是<taglib>與</taglib>標(biāo)簽<!--配置Struts標(biāo)簽庫(kù)--><taglib><taglib-uri>struts-bean</taglib-uri><taglib-location>/WEB-INF/struts-bean.tld</taglib-location></taglib><taglib><taglib-uri>struts-html</taglib-uri><taglib-location>/WEB-INF/struts-html.tld</taglib-location></taglib><taglib><taglib-uri>struts-logic</taglib-uri><taglib-location>/WEB-INF/struts-logic.tld</taglib-location></taglib>477.6.2
創(chuàng)建Struts核心配置文件struts-config.xmlStruts核心配置文件struts-config.xml主要有3部分:form-beans部分:配置ActionFormglobal-forwards部分:配置全局的頁(yè)面轉(zhuǎn)發(fā)action-mappings部分:配置action487.6.2
創(chuàng)建Struts核心配置文件struts-config.xml(續(xù))配置AccountActionForm在form-beans部分進(jìn)行配置每個(gè)ActionForm對(duì)應(yīng)一個(gè)form-bean元素name屬性指定定義了ActionForm的id,用于標(biāo)識(shí)該
ActionFormtype屬性定義了ActionForm的實(shí)現(xiàn)類代碼:<form-beans><form-bean
name="accountForm"type="com.sziit.petstore.struts.AccountActionForm"/></form-beans>497.6.2
創(chuàng)建Struts核心配置文件struts-config.xml(續(xù))配置SignonAction和SignoffAction在action-mappings部分進(jìn)行配置每個(gè)action對(duì)應(yīng)一個(gè)需要經(jīng)過(guò)struts處理的請(qǐng)求path屬性是Action的別名,省略后綴(這里是shtml),對(duì)應(yīng)表單<form>表單中的action屬性值(見(jiàn)7.4.1SignonForm.jsp中表單的
action屬性值),該屬性用于被用戶請(qǐng)求name指定關(guān)聯(lián)的ActionForm的name,這個(gè)ActionForm必須是已經(jīng)在<form-beans>中定義過(guò)的。Struts就是根據(jù)這一項(xiàng)指定Action該用哪個(gè)ActionFormtype屬性指定這個(gè)Action的類名(包含包名)子節(jié)點(diǎn)<forward>定義了該Action可能轉(zhuǎn)發(fā)到的頁(yè)面
“/catalog/Main.jsp”,name指定轉(zhuǎn)向頁(yè)面的邏輯名“success”,path指定轉(zhuǎn)向的頁(yè)面,Action代碼中只能使用邏輯名,即
return
mapping.findForward(target);其中target的值只能是
“succsss”或“failure”是邏輯名,不能是具體的頁(yè)面
“Main.jsp”或“Error.jsp”507.6.2
創(chuàng)建Struts核心配置文件struts-config.xml(續(xù))scope屬性指定這個(gè)Action對(duì)應(yīng)的ActionForm的作用域,只能取
session和request,默認(rèn)為sessioninput屬性指定包含輸入表單的頁(yè)面。當(dāng)表單驗(yàn)證(validate方法)失敗時(shí),將把請(qǐng)求轉(zhuǎn)發(fā)到該頁(yè)面。validate屬性:指明是否自動(dòng)調(diào)用ActionForm中的validate方法對(duì)表單進(jìn)行驗(yàn)證,默認(rèn)是false517.6.2
創(chuàng)建Struts核心配置文件struts-config.xml(續(xù))<action
path="/shop/Signon"input="/account/SignonForm.jsp"name="accountForm"scope="session"type="com.sziit.petstore.struts.SignonAction"
validate="true"><forward
name="success"
path="/catalog/Main.jsp"/></action><action
path="/shop/Signoff"name="accountForm"scope="session"type="com.sziit.petstore.struts.SignoffAction"
><forward
name
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年高端內(nèi)墻面涂料施工與智能家居系統(tǒng)集成合同3篇
- 2024版電信協(xié)議管理規(guī)則與條款解析版B版
- 二零二五年度坑塘承包合作開(kāi)發(fā)合同樣本3篇
- 2024年水鉆工程物流運(yùn)輸合同
- 2024版深圳二手房買賣合同(土地使用權(quán))
- 2024年跨區(qū)域水資源調(diào)配合同范本:詳細(xì)條款
- 地質(zhì)災(zāi)害培訓(xùn)
- 二零二五年度體育賽事組織與轉(zhuǎn)播權(quán)協(xié)議3篇
- 夏季養(yǎng)生健康知識(shí)
- 2024新鮮蔬菜直達(dá)配送運(yùn)輸服務(wù)協(xié)議版
- 安全生產(chǎn)專(兼)職管理人員職責(zé)
- 公檢法聯(lián)席會(huì)議制度
- 成都大學(xué)《Python數(shù)據(jù)分析》2022-2023學(xué)年期末試卷
- 保險(xiǎn)理賠崗位招聘面試題與參考回答(某大型央企)2024年
- 上海市市轄區(qū)(2024年-2025年小學(xué)五年級(jí)語(yǔ)文)部編版期末考試(上學(xué)期)試卷及答案
- 第10課《我們不亂扔》(教學(xué)設(shè)計(jì))-部編版道德與法治二年級(jí)上冊(cè)
- 期末試卷(試題)-2024-2025學(xué)年五年級(jí)上冊(cè)數(shù)學(xué)人教版
- 護(hù)理安全警示教育-新-
- 社會(huì)工作行政復(fù)習(xí)要點(diǎn)
- 2025屆浙江省樂(lè)清市知臨中學(xué)高一數(shù)學(xué)第一學(xué)期期末檢測(cè)試題含解析
- SOR-04-014-00 藥品受托生產(chǎn)企業(yè)審計(jì)評(píng)估報(bào)告模板
評(píng)論
0/150
提交評(píng)論