教學(xué)電子課件-使用mvc框架開(kāi)發(fā)租房網(wǎng)站_第1頁(yè)
教學(xué)電子課件-使用mvc框架開(kāi)發(fā)租房網(wǎng)站_第2頁(yè)
教學(xué)電子課件-使用mvc框架開(kāi)發(fā)租房網(wǎng)站_第3頁(yè)
教學(xué)電子課件-使用mvc框架開(kāi)發(fā)租房網(wǎng)站_第4頁(yè)
教學(xué)電子課件-使用mvc框架開(kāi)發(fā)租房網(wǎng)站_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余34頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Struts2應(yīng)用第八章回顧與作業(yè)點(diǎn)評(píng)Struts2執(zhí)行流程是什么?Result結(jié)果類型有哪些,存在什么區(qū)別?Struts2中自定義攔截器有哪些方式?預(yù)習(xí)檢查<s:submit>和<sx:submit>標(biāo)簽有什么異同?使用驗(yàn)證框架進(jìn)行驗(yàn)證有什么好處?國(guó)際化、本地化的含義是什么?本章任務(wù)使用Ajax實(shí)現(xiàn)租房信息的分頁(yè)顯示使用驗(yàn)證框架驗(yàn)證用戶注冊(cè)使用驗(yàn)證框架實(shí)現(xiàn)租房信息發(fā)布的驗(yàn)證使用Struts2實(shí)現(xiàn)用戶注冊(cè)國(guó)際化使用Struts2實(shí)現(xiàn)租房網(wǎng)國(guó)際化本章目標(biāo)會(huì)使用Struts2常用Ajax標(biāo)簽掌握Struts2的驗(yàn)證框架使用Struts2實(shí)現(xiàn)國(guó)際化Struts2對(duì)Ajax的支持Struts2對(duì)Ajax提供了很好的支持Struts2.1提供了基于Dojo的Ajax標(biāo)簽,對(duì)Ajax操作進(jìn)行了進(jìn)步封裝,可以更快捷容易的使用Ajax使用Struts2.1的Ajax標(biāo)簽前必須進(jìn)行如下操作將struts2-dojo-plugin-2.1.x.x.jar復(fù)制到WEB-INF\lib目錄在JSP頁(yè)面中導(dǎo)入Ajax標(biāo)簽

在JSP頁(yè)面中加入head標(biāo)簽,負(fù)責(zé)在頁(yè)面上導(dǎo)入Dojo所需要的CSS庫(kù)和JavaScript庫(kù)

<%@taglibprefix="sx"uri="/struts-dojo-tags"%>

<sx:head/>Struts2.1的Ajax標(biāo)簽方法名說(shuō)明<sx:div>創(chuàng)建一個(gè)div區(qū)域,可以通過(guò)Ajax向其中加載內(nèi)容,以實(shí)現(xiàn)局部刷新 <sx:submit>通過(guò)Ajax來(lái)更新某個(gè)元素的內(nèi)容或提交表單<sx:a>通過(guò)Ajax來(lái)更新某個(gè)元素的內(nèi)容或提交表單<sx:tabbedPanel>創(chuàng)建一個(gè)標(biāo)簽面板,由<s:div>來(lái)提供內(nèi)容。<pleter>根據(jù)用戶輸入提供輸入建議,或者幫助用戶自動(dòng)完成輸入<sx:tree>創(chuàng)建一個(gè)支持Ajax的樹(shù)形組件(Widget)使用Ajax技術(shù)實(shí)現(xiàn)如下需求:頁(yè)面有三個(gè)div:div1、div2、div3div1的內(nèi)容每隔5秒時(shí)間自動(dòng)更新一次,每隔30分鐘提示用戶休息一下(刷新多次)開(kāi)始訪問(wèn)時(shí),在div2中顯示歡迎信息(刷新一次)整個(gè)訪問(wèn)過(guò)程中div3中內(nèi)容保持不變(無(wú)刷新)使用<sx:div>標(biāo)簽來(lái)實(shí)現(xiàn)div標(biāo)簽4-1第一步:創(chuàng)建頁(yè)面divTest.jsp使用<sx:div>標(biāo)簽來(lái)定義三個(gè)divdiv標(biāo)簽4-2...<%@taglibprefix="sx"uri="/struts-dojo-tags"%><html> <head> <sx:head/> </head> <body> <s:urlid="time"value="/time.action"/> <s:urlid="e"value="/e.action"/> <sx:divid="div1"updateFreq="5000"href="%{time}"> 初始的內(nèi)容。 </sx:div><br/> <sx:divid="div2"href="%{e}">初始的內(nèi)容。</sx:div><br/> <sx:divid="div3">初始的內(nèi)容。</sx:div> </body></html>每隔5秒異步訪問(wèn)一次導(dǎo)入Ajax標(biāo)簽添加head標(biāo)簽只異步訪問(wèn)一次無(wú)異步訪問(wèn)第二步:創(chuàng)建頁(yè)面time.jsp響應(yīng)div1的異步請(qǐng)求用其內(nèi)容刷新div1div標(biāo)簽4-3<% longcurrentTime=System.currentTimeMillis();//獲取當(dāng)前時(shí)間

//獲取開(kāi)始時(shí)間

LongstartTime=(Long)session.getAttribute("startTime"); if(startTime==null){//第一次訪問(wèn)

startTime=currentTime; session.setAttribute("startTime",startTime); } longusedTime=(currentTime-startTime)/1000;//以秒計(jì)算的已用時(shí)間

…%><s:iftest="#request.rest==true">你該稍微休息一下了。</s:if><s:else>

你已經(jīng)訪問(wèn)的時(shí)間:<s:propertyvalue="#request.uTime"/>秒。<br></s:else>計(jì)算并返回已經(jīng)訪問(wèn)的時(shí)間第三步:創(chuàng)建歡迎頁(yè)面e.jsp響應(yīng)div2的異步請(qǐng)求僅返回“歡迎你訪問(wèn)該系統(tǒng)!”第四步:配置struts.xmldiv標(biāo)簽4-4<struts> <packagename="struts2"extends="struts-default"> <actionname="time"> <result>/asyn/time.jsp</result> </action> <actionname="e"> <result>/asyn/e.jsp</result> </action> …… </package></struts>演示示例:<sx:div>標(biāo)簽的使用使用Ajax技術(shù)實(shí)現(xiàn)如下需求:頁(yè)面有兩個(gè)div,還有一個(gè)超鏈接單擊超鏈接后在div1中出現(xiàn)登錄表單如果登錄成功,在div2中顯示登錄成功;登錄失敗在div2中顯示登錄失敗使用<sx:div>標(biāo)簽來(lái)定義div,使用<sx:a>和<sx:submit>定義超鏈接和提交按鈕submit和a標(biāo)簽5-1第一步:創(chuàng)建頁(yè)面aTest.jsp,使用<sx:a>來(lái)定義超鏈接,<sx:div>定義divsubmit和a標(biāo)簽5-2...<%@taglibprefix="sx"uri="/struts-dojo-tags"%><html> <head>

<sx:head/> </head> <body> <s:urlid="login"value="/tologin.action"/>

<sx:ahref="%{login}"targets="div1">用戶登錄</sx:a><br/> <sx:divid="div1"cssStyle="border:1pxsolidred;">

第一個(gè)DIV,顯示登錄菜單。

</sx:div><br/> <sx:divid="div2"cssStyle="border:1pxsolidgreen;">

第二個(gè)DIV,顯示登錄結(jié)果。

</sx:div> </body></html>單擊超鏈接異步訪問(wèn)指定Action第二步:創(chuàng)建登錄頁(yè)面login.jsp通過(guò)<sx:submit>標(biāo)簽來(lái)異步提交表單submit和a標(biāo)簽5-3...<html> <head> <sx:head/> </head> <body> <h2>用戶登錄</h2> <s:formid="form1"action="login"> <s:textfieldname="username"label="用戶名"/> <s:passwordname="password"label="密碼"/>

<sx:submittype="button"value="表單內(nèi)提交"targets="div2"/> </s:form>

<sx:submittype="button"value="表單外提交" targets="div2"formId="form1"/><br> <sx:atargets="div2"formId="form1">我也可以提交表單</sx:a> </body></html>第三步:創(chuàng)建loginAction負(fù)責(zé)處理登錄請(qǐng)求submit和a標(biāo)簽5-4publicclassLoginActionextendsActionSupport{ privateStringusername; privateStringpassword; ……//省略getter和setter方法

publicStringexecute(){ if("jbit".equals(username)&&"bdqn".equals(password)) returnSUCCESS; else returnERROR; }}第四步:配置struts.xml第五步:創(chuàng)建success.jsp和error.jsp頁(yè)面僅僅返回“登錄成功!”和“登錄失?。 碧崾拘畔ubmit和a標(biāo)簽5-5<struts> <packagename="struts2"extends="struts-default"> …… <actionname="tologin"> <result>/asyn/login.jsp</result> </action> <actionname="login"class="cn.jbit.action.LoginAction"> <result>/asyn/success.jsp</result> <resultname="error">/asyn/error.jsp</result> </action> </package></struts>單擊“用戶登錄”超鏈接顯示登錄菜單單擊表單提交按鈕顯示登錄結(jié)果演示示例:<sx:a>和<sx:submit>的使用指導(dǎo)——使用Ajax分頁(yè)顯示租房信息訓(xùn)練要點(diǎn):Struts對(duì)Ajax的支持<s:div>、<s:submit>、<s:a>標(biāo)簽的使用需求說(shuō)明:進(jìn)入系統(tǒng)后以分頁(yè)的形式顯示租房的信息,單擊具體頁(yè)號(hào)超鏈接顯示指定頁(yè)的租房信息實(shí)現(xiàn)思路:1、通過(guò)<s:div>顯示首頁(yè)租房信息2、通過(guò)<s:a>標(biāo)簽建立多個(gè)頁(yè)號(hào)超鏈接難點(diǎn)分析:Struts2的Ajax標(biāo)簽的使用講解需求說(shuō)明完成時(shí)間:20分鐘指導(dǎo)——使用Ajax分頁(yè)顯示租房信息訓(xùn)練要點(diǎn):Struts對(duì)Ajax的支持<s:div>、<s:submit>、<s:a>標(biāo)簽的使用需求說(shuō)明:進(jìn)入系統(tǒng)后以分頁(yè)的形式顯示租房的信息,單擊具體頁(yè)號(hào)超鏈接顯示指定頁(yè)的租房信息實(shí)現(xiàn)思路:1、分頁(yè)租房信息的遍歷顯示在result頁(yè)面中實(shí)現(xiàn),在div中返回結(jié)果2、進(jìn)行系統(tǒng)后首先顯示第一頁(yè)租房信息3、單擊頁(yè)號(hào)超鏈接異步顯示指定頁(yè)租房信息到div難點(diǎn)分析:Struts2的Ajax標(biāo)簽的使用講解需求說(shuō)明完成時(shí)間:20分鐘共性問(wèn)題集中講解常見(jiàn)調(diào)試問(wèn)題及解決辦法代碼規(guī)范問(wèn)題共性問(wèn)題集中講解對(duì)租房屋用戶注冊(cè)功能進(jìn)行驗(yàn)證用戶名:不能為空,長(zhǎng)度在6和10之間密碼:不能為空,密碼長(zhǎng)度>=6確認(rèn)密碼:必須和密碼相同電話:不能為空,符合電話號(hào)碼格式用戶姓名:不能為空,長(zhǎng)度在2和4之間使用驗(yàn)證框架進(jìn)行驗(yàn)證用戶無(wú)需編碼,在外部配置文件中指定某個(gè)字段的驗(yàn)證類型,并提供出錯(cuò)信息即可使用驗(yàn)證框架可以減輕開(kāi)發(fā)者負(fù)擔(dān),提高開(kāi)發(fā)效率驗(yàn)證框架6-1第一步:創(chuàng)建RegisterAction實(shí)現(xiàn)對(duì)用戶注冊(cè)的處理第二步:在struts.xml中配置action通過(guò)“input”指定驗(yàn)證錯(cuò)誤時(shí)需返回的頁(yè)面驗(yàn)證框架6-2publicclassRegisterActionextendsActionSupport{

privateUseruser;//用戶信息

privateStringrepassword; //確認(rèn)密碼

… publicStringexecute(){ returnSUCCESS; }}<actionname="register" class="cn.jbit.houserent.action.RegisterAction"> <resultname="success">/index.jsp</result>

<resultname="input">/page/register.jsp</result></action>第三步:創(chuàng)建注冊(cè)頁(yè)面register.jsp第四步:創(chuàng)建驗(yàn)證文件驗(yàn)證框架6-3<s:formaction="register"> <s:textfieldname=""label="用戶名"/> <s:passwordname="user.password"label="密碼"/> <s:passwordname="repassword"label="確認(rèn)密碼"/> <s:textfieldname="user.telephone"label="電話"/> <s:textfieldname="user.username"label="用戶姓名"/> <s:submitvalue="立即注冊(cè)"></s:submit></s:form><?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEvalidatorsPUBLIC "-//OpenSymphonyGroup//XWorkValidator1.0.2//EN" ""><validators></validators>第五步:使用驗(yàn)證框架編寫(xiě)驗(yàn)證規(guī)則用戶名:不能為空,長(zhǎng)度在6和10之間驗(yàn)證框架6-4<validators> <fieldname=""> <field-validatortype="requiredstring"> <paramname="trim">true</param> <message>用戶名不能為空</message> </field-validator>

<field-validatortype="stringlength"> <paramname="maxLength">10</param> <paramname="minLength">6</param> <message>用戶名長(zhǎng)度須在${minLength}和 ${maxLength}之間</message> </field-validator> </field> </validators>第五步:使用驗(yàn)證框架編寫(xiě)驗(yàn)證規(guī)則密碼:不能為空,密碼長(zhǎng)度>=6密碼和確認(rèn)密碼必須一致驗(yàn)證框架6-5<validators> <fieldname="user.password"> … </field> <fieldname="repassword"> … <field-validatortype="fieldexpression"> <paramname="expression">

user.password==repassword </param> <message>密碼和確認(rèn)密碼必須相同</message> </field-validator> </field> </validators>第五步:使用驗(yàn)證框架編寫(xiě)驗(yàn)證規(guī)則電話號(hào)碼:不能為空,符合電話號(hào)碼格式驗(yàn)證框架6-6<validators> <fieldname="user.telephone"> <field-validatortype="requiredstring"> <message>電話號(hào)碼不能為空</message> </field-validator> <field-validatortype="regex"> <paramname="expression">

^(\d{3,4}-){0,1}(\d{7,8})$ </param> <message>電話號(hào)碼格式不正確</message> </field-validator> </field></validators>演示示例:使用驗(yàn)證框架進(jìn)行驗(yàn)證指導(dǎo)——實(shí)現(xiàn)對(duì)租房信息發(fā)布的驗(yàn)證訓(xùn)練要點(diǎn):Struts2驗(yàn)證框架需求說(shuō)明:使用驗(yàn)證框架對(duì)租房信息發(fā)布的相關(guān)字段進(jìn)行驗(yàn)證標(biāo)題:非空,長(zhǎng)度在6和20之間面積:整數(shù),小于200價(jià)格:浮點(diǎn)數(shù)聯(lián)系方式:電話或手機(jī)詳細(xì)信息:非空,小于300字實(shí)現(xiàn)思路:參考本章解決方案講解需求說(shuō)明完成時(shí)間:20分鐘共性問(wèn)題集中講解常見(jiàn)調(diào)試問(wèn)題及解決辦法代碼規(guī)范問(wèn)題共性問(wèn)題集中講解國(guó)際化(Internationalization:I18N)使程序在不做任何修改的情況下,可以在不同國(guó)家或地區(qū)和不同語(yǔ)言環(huán)境下,按照當(dāng)?shù)氐恼Z(yǔ)言和格式習(xí)慣顯示字符本地化(Localization:L10N)一個(gè)國(guó)際化的程序,當(dāng)它運(yùn)行在本地機(jī)器時(shí),能夠根據(jù)本地機(jī)器的語(yǔ)言和地區(qū)設(shè)置顯示相應(yīng)字符國(guó)際化和本地化國(guó)際化和本地化Java程序的國(guó)際化思路將程序中的提示信息、錯(cuò)誤信息等放在資源文件中,為不同國(guó)家/語(yǔ)言編寫(xiě)對(duì)應(yīng)資源文件資源文件由很多key-value對(duì)組成,key保持不變,value隨國(guó)家/語(yǔ)言不同而不同這些資源文件使用共同的基名,通過(guò)在基名后面添加語(yǔ)言代碼、國(guó)家和地區(qū)代碼來(lái)進(jìn)行區(qū)分資源文件名說(shuō)明ApplicationResources_perties所有英文語(yǔ)言的資源ApplicationResources_perties所有的中文語(yǔ)言的資源ApplicationResources_zh_CN.properties針對(duì)中國(guó)大陸的、中文語(yǔ)言的資源ApplicationResources_zh_HK.properties針對(duì)中國(guó)香港的、中文語(yǔ)言的資源ApplicationRperties默認(rèn)資源文件,如果請(qǐng)求的資源文件不存在,將調(diào)用它的資源進(jìn)行顯示實(shí)現(xiàn)對(duì)租房網(wǎng)用戶注冊(cè)功能的國(guó)際化對(duì)英文用戶顯示英文界面和驗(yàn)證錯(cuò)誤信息對(duì)中國(guó)香港用戶顯示繁體中文界面和驗(yàn)證錯(cuò)誤信息對(duì)其他用戶顯示簡(jiǎn)體中文界面和驗(yàn)證錯(cuò)誤信息實(shí)現(xiàn)國(guó)際化步驟在struts.xml中指定資源文件的基名及存儲(chǔ)路徑按照需求創(chuàng)建對(duì)應(yīng)的三個(gè)資源文件,存放相應(yīng)資源實(shí)現(xiàn)JSP頁(yè)面信息的國(guó)際化顯示實(shí)現(xiàn)驗(yàn)證錯(cuò)誤信息的國(guó)際化顯示使用Struts2實(shí)現(xiàn)國(guó)際化4-1第一步:指定資源文件的基名及存儲(chǔ)路徑第二步:創(chuàng)建對(duì)應(yīng)的三個(gè)資源文件位置在src目錄下,或者直接在WEB-INF/classes目錄名稱message_pertiesmessage_zh_HK.perties使用Struts2實(shí)現(xiàn)國(guó)際化4-2<struts> <constantname="struts.custom.i18n.resources"value="message"/> <constantname="struts.i18n.encoding"value="UTF-8"/> …… </struts>第三步:實(shí)現(xiàn)JSP頁(yè)面信息的國(guó)際化顯示使用Struts2實(shí)現(xiàn)國(guó)際化4-3<html> <head> <title>

<s:textname="register.page"/> </title> </head> <body> <h2>

<s:textname="register.title"/> </h2> <s:formaction="register"> <s:textfieldname=""key="name"/> <s:passwordname="user.password"key="password"/> <s:passwordname="repassword"label="%{getText('repassword')}"/> <s:textfieldname="user.telephone"label="%{getText('telephone')}"/> <s:textfieldname="user.username"label="%{getText('username')}"/> <s:submitvalue="%{getText('submit')}"/> </s:form> </body></html>注冊(cè)頁(yè)面#message_pertiesregister.page=HouserRent-UserRegisterregister.title=NewUserRegistername=Name…submit=RegisterNow#message_zh_HK.propertiesregister.page=青鳥(niǎo)租房-用戶註冊(cè)register.title=新用戶註冊(cè)name=用戶名…submit=立即註冊(cè)#pertiesregister.page=青鳥(niǎo)租房-用戶注冊(cè)register.title=新用戶注冊(cè)name=用戶名…submit=立即注冊(cè)演示示例:JSP頁(yè)面信息的國(guó)際化顯示資源文件第四步:實(shí)現(xiàn)驗(yàn)證錯(cuò)誤信息的國(guó)際化顯示使用Struts2實(shí)現(xiàn)國(guó)際化4-4#message_pertiesname.null=Namecannotbenullname.length=Nameshouldbebetween${minLength}and${maxLength}password.null=Passwordcannotbenullpassword.length=Mininumpasswordlengthis${minLength}…#message_zh_HK.propertiesname.null=用戶名不能為空name.length=用戶名長(zhǎng)度必須在

${minLength}和${maxLength}之間password.null=密碼長(zhǎng)度不能為空password.length=密碼長(zhǎng)度必須大於等於${minLength}…#pertiesname.null=用戶名不能為空name.length=用戶名長(zhǎng)度必須在${minLength}和${maxLength}之間password.null=密碼不能為空password.length=密碼長(zhǎng)度必須大于等于${minLength}…資源文件<validators> <fieldname=""> <field-validatortype="requiredstring"> <paramname="trim">true</param> <messagekey="name.null"/> </field-validator>

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論