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

下載本文檔

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

文檔簡介

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

在JSP頁面中加入head標簽,負責在頁面上導入Dojo所需要的CSS庫和JavaScript庫

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

<sx:head/>Struts2.1的Ajax標簽方法名說明<sx:div>創(chuàng)建一個div區(qū)域,可以通過Ajax向其中加載內(nèi)容,以實現(xiàn)局部刷新 <sx:submit>通過Ajax來更新某個元素的內(nèi)容或提交表單<sx:a>通過Ajax來更新某個元素的內(nèi)容或提交表單<sx:tabbedPanel>創(chuàng)建一個標簽面板,由<s:div>來提供內(nèi)容。<pleter>根據(jù)用戶輸入提供輸入建議,或者幫助用戶自動完成輸入<sx:tree>創(chuàng)建一個支持Ajax的樹形組件(Widget)使用Ajax技術(shù)實現(xiàn)如下需求:頁面有三個div:div1、div2、div3div1的內(nèi)容每隔5秒時間自動更新一次,每隔30分鐘提示用戶休息一下(刷新多次)開始訪問時,在div2中顯示歡迎信息(刷新一次)整個訪問過程中div3中內(nèi)容保持不變(無刷新)使用<sx:div>標簽來實現(xiàn)div標簽4-1第一步:創(chuàng)建頁面divTest.jsp使用<sx:div>標簽來定義三個divdiv標簽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秒異步訪問一次導入Ajax標簽添加head標簽只異步訪問一次無異步訪問第二步:創(chuàng)建頁面time.jsp響應div1的異步請求用其內(nèi)容刷新div1div標簽4-3<% longcurrentTime=System.currentTimeMillis();//獲取當前時間

//獲取開始時間

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

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

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

你已經(jīng)訪問的時間:<s:propertyvalue="#request.uTime"/>秒。<br></s:else>計算并返回已經(jīng)訪問的時間第三步:創(chuàng)建歡迎頁面e.jsp響應div2的異步請求僅返回“歡迎你訪問該系統(tǒng)!”第四步:配置struts.xmldiv標簽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>標簽的使用使用Ajax技術(shù)實現(xiàn)如下需求:頁面有兩個div,還有一個超鏈接單擊超鏈接后在div1中出現(xiàn)登錄表單如果登錄成功,在div2中顯示登錄成功;登錄失敗在div2中顯示登錄失敗使用<sx:div>標簽來定義div,使用<sx:a>和<sx:submit>定義超鏈接和提交按鈕submit和a標簽5-1第一步:創(chuàng)建頁面aTest.jsp,使用<sx:a>來定義超鏈接,<sx:div>定義divsubmit和a標簽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;">

第一個DIV,顯示登錄菜單。

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

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

</sx:div> </body></html>單擊超鏈接異步訪問指定Action第二步:創(chuàng)建登錄頁面login.jsp通過<sx:submit>標簽來異步提交表單submit和a標簽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負責處理登錄請求submit和a標簽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頁面僅僅返回“登錄成功!”和“登錄失敗!”提示信息submit和a標簽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>的使用指導——使用Ajax分頁顯示租房信息訓練要點:Struts對Ajax的支持<s:div>、<s:submit>、<s:a>標簽的使用需求說明:進入系統(tǒng)后以分頁的形式顯示租房的信息,單擊具體頁號超鏈接顯示指定頁的租房信息實現(xiàn)思路:1、通過<s:div>顯示首頁租房信息2、通過<s:a>標簽建立多個頁號超鏈接難點分析:Struts2的Ajax標簽的使用講解需求說明完成時間:20分鐘指導——使用Ajax分頁顯示租房信息訓練要點:Struts對Ajax的支持<s:div>、<s:submit>、<s:a>標簽的使用需求說明:進入系統(tǒng)后以分頁的形式顯示租房的信息,單擊具體頁號超鏈接顯示指定頁的租房信息實現(xiàn)思路:1、分頁租房信息的遍歷顯示在result頁面中實現(xiàn),在div中返回結(jié)果2、進行系統(tǒng)后首先顯示第一頁租房信息3、單擊頁號超鏈接異步顯示指定頁租房信息到div難點分析:Struts2的Ajax標簽的使用講解需求說明完成時間:20分鐘共性問題集中講解常見調(diào)試問題及解決辦法代碼規(guī)范問題共性問題集中講解對租房屋用戶注冊功能進行驗證用戶名:不能為空,長度在6和10之間密碼:不能為空,密碼長度>=6確認密碼:必須和密碼相同電話:不能為空,符合電話號碼格式用戶姓名:不能為空,長度在2和4之間使用驗證框架進行驗證用戶無需編碼,在外部配置文件中指定某個字段的驗證類型,并提供出錯信息即可使用驗證框架可以減輕開發(fā)者負擔,提高開發(fā)效率驗證框架6-1第一步:創(chuàng)建RegisterAction實現(xiàn)對用戶注冊的處理第二步:在struts.xml中配置action通過“input”指定驗證錯誤時需返回的頁面驗證框架6-2publicclassRegisterActionextendsActionSupport{

privateUseruser;//用戶信息

privateStringrepassword; //確認密碼

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

<resultname="input">/page/register.jsp</result></action>第三步:創(chuàng)建注冊頁面register.jsp第四步:創(chuàng)建驗證文件驗證框架6-3<s:formaction="register"> <s:textfieldname=""label="用戶名"/> <s:passwordname="user.password"label="密碼"/> <s:passwordname="repassword"label="確認密碼"/> <s:textfieldname="user.telephone"label="電話"/> <s:textfieldname="user.username"label="用戶姓名"/> <s:submitvalue="立即注冊"></s:submit></s:form><?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEvalidatorsPUBLIC "-//OpenSymphonyGroup//XWorkValidator1.0.2//EN" ""><validators></validators>第五步:使用驗證框架編寫驗證規(guī)則用戶名:不能為空,長度在6和10之間驗證框架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>用戶名長度須在${minLength}和 ${maxLength}之間</message> </field-validator> </field> </validators>第五步:使用驗證框架編寫驗證規(guī)則密碼:不能為空,密碼長度>=6密碼和確認密碼必須一致驗證框架6-5<validators> <fieldname="user.password"> … </field> <fieldname="repassword"> … <field-validatortype="fieldexpression"> <paramname="expression">

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

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論