




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Struts2應(yīng)用第八章回顧與作業(yè)點(diǎn)評Struts2執(zhí)行流程是什么?Result結(jié)果類型有哪些,存在什么區(qū)別?Struts2中自定義攔截器有哪些方式?預(yù)習(xí)檢查<s:submit>和<sx:submit>標(biāo)簽有什么異同?使用驗(yàn)證框架進(jìn)行驗(yàn)證有什么好處?國際化、本地化的含義是什么?本章任務(wù)使用Ajax實(shí)現(xiàn)租房信息的分頁顯示使用驗(yàn)證框架驗(yàn)證用戶注冊使用驗(yàn)證框架實(shí)現(xiàn)租房信息發(fā)布的驗(yàn)證使用Struts2實(shí)現(xiàn)用戶注冊國際化使用Struts2實(shí)現(xiàn)租房網(wǎng)國際化本章目標(biāo)會(huì)使用Struts2常用Ajax標(biāo)簽掌握Struts2的驗(yàn)證框架使用Struts2實(shí)現(xiàn)國際化Struts2對Ajax的支持Struts2對Ajax提供了很好的支持Struts2.1提供了基于Dojo的Ajax標(biāo)簽,對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頁面中導(dǎo)入Ajax標(biāo)簽
在JSP頁面中加入head標(biāo)簽,負(fù)責(zé)在頁面上導(dǎo)入Dojo所需要的CSS庫和JavaScript庫
<%@taglibprefix="sx"uri="/struts-dojo-tags"%>
<sx:head/>Struts2.1的Ajax標(biāo)簽方法名說明<sx:div>創(chuàng)建一個(gè)div區(qū)域,可以通過Ajax向其中加載內(nèi)容,以實(shí)現(xiàn)局部刷新 <sx:submit>通過Ajax來更新某個(gè)元素的內(nèi)容或提交表單<sx:a>通過Ajax來更新某個(gè)元素的內(nèi)容或提交表單<sx:tabbedPanel>創(chuàng)建一個(gè)標(biāo)簽面板,由<s:div>來提供內(nèi)容。<pleter>根據(jù)用戶輸入提供輸入建議,或者幫助用戶自動(dòng)完成輸入<sx:tree>創(chuàng)建一個(gè)支持Ajax的樹形組件(Widget)使用Ajax技術(shù)實(shí)現(xiàn)如下需求:頁面有三個(gè)div:div1、div2、div3div1的內(nèi)容每隔5秒時(shí)間自動(dòng)更新一次,每隔30分鐘提示用戶休息一下(刷新多次)開始訪問時(shí),在div2中顯示歡迎信息(刷新一次)整個(gè)訪問過程中div3中內(nèi)容保持不變(無刷新)使用<sx:div>標(biāo)簽來實(shí)現(xiàn)div標(biāo)簽4-1第一步:創(chuàng)建頁面divTest.jsp使用<sx:div>標(biāo)簽來定義三個(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秒異步訪問一次導(dǎo)入Ajax標(biāo)簽添加head標(biāo)簽只異步訪問一次無異步訪問第二步:創(chuàng)建頁面time.jsp響應(yīng)div1的異步請求用其內(nèi)容刷新div1div標(biāo)簽4-3<% longcurrentTime=System.currentTimeMillis();//獲取當(dāng)前時(shí)間
//獲取開始時(shí)間
LongstartTime=(Long)session.getAttribute("startTime"); if(startTime==null){//第一次訪問
startTime=currentTime; session.setAttribute("startTime",startTime); } longusedTime=(currentTime-startTime)/1000;//以秒計(jì)算的已用時(shí)間
…%><s:iftest="#request.rest==true">你該稍微休息一下了。</s:if><s:else>
你已經(jīng)訪問的時(shí)間:<s:propertyvalue="#request.uTime"/>秒。<br></s:else>計(jì)算并返回已經(jīng)訪問的時(shí)間第三步:創(chuàng)建歡迎頁面e.jsp響應(yīng)div2的異步請求僅返回“歡迎你訪問該系統(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)如下需求:頁面有兩個(gè)div,還有一個(gè)超鏈接單擊超鏈接后在div1中出現(xiàn)登錄表單如果登錄成功,在div2中顯示登錄成功;登錄失敗在div2中顯示登錄失敗使用<sx:div>標(biāo)簽來定義div,使用<sx:a>和<sx:submit>定義超鏈接和提交按鈕submit和a標(biāo)簽5-1第一步:創(chuàng)建頁面aTest.jsp,使用<sx:a>來定義超鏈接,<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>單擊超鏈接異步訪問指定Action第二步:創(chuàng)建登錄頁面login.jsp通過<sx:submit>標(biāo)簽來異步提交表單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é)處理登錄請求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頁面僅僅返回“登錄成功!”和“登錄失?。 碧崾拘畔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分頁顯示租房信息訓(xùn)練要點(diǎn):Struts對Ajax的支持<s:div>、<s:submit>、<s:a>標(biāo)簽的使用需求說明:進(jìn)入系統(tǒng)后以分頁的形式顯示租房的信息,單擊具體頁號超鏈接顯示指定頁的租房信息實(shí)現(xiàn)思路:1、通過<s:div>顯示首頁租房信息2、通過<s:a>標(biāo)簽建立多個(gè)頁號超鏈接難點(diǎn)分析:Struts2的Ajax標(biāo)簽的使用講解需求說明完成時(shí)間:20分鐘指導(dǎo)——使用Ajax分頁顯示租房信息訓(xùn)練要點(diǎn):Struts對Ajax的支持<s:div>、<s:submit>、<s:a>標(biāo)簽的使用需求說明:進(jìn)入系統(tǒng)后以分頁的形式顯示租房的信息,單擊具體頁號超鏈接顯示指定頁的租房信息實(shí)現(xiàn)思路:1、分頁租房信息的遍歷顯示在result頁面中實(shí)現(xiàn),在div中返回結(jié)果2、進(jìn)行系統(tǒng)后首先顯示第一頁租房信息3、單擊頁號超鏈接異步顯示指定頁租房信息到div難點(diǎn)分析:Struts2的Ajax標(biāo)簽的使用講解需求說明完成時(shí)間:20分鐘共性問題集中講解常見調(diào)試問題及解決辦法代碼規(guī)范問題共性問題集中講解對租房屋用戶注冊功能進(jìn)行驗(yàn)證用戶名:不能為空,長度在6和10之間密碼:不能為空,密碼長度>=6確認(rèn)密碼:必須和密碼相同電話:不能為空,符合電話號碼格式用戶姓名:不能為空,長度在2和4之間使用驗(yàn)證框架進(jìn)行驗(yàn)證用戶無需編碼,在外部配置文件中指定某個(gè)字段的驗(yàn)證類型,并提供出錯(cuò)信息即可使用驗(yàn)證框架可以減輕開發(fā)者負(fù)擔(dān),提高開發(fā)效率驗(yàn)證框架6-1第一步:創(chuàng)建RegisterAction實(shí)現(xiàn)對用戶注冊的處理第二步:在struts.xml中配置action通過“input”指定驗(yàn)證錯(cuò)誤時(shí)需返回的頁面驗(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)建注冊頁面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="立即注冊"></s:submit></s:form><?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEvalidatorsPUBLIC "-//OpenSymphonyGroup//XWorkValidator1.0.2//EN" ""><validators></validators>第五步:使用驗(yàn)證框架編寫驗(yàn)證規(guī)則用戶名:不能為空,長度在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>用戶名長度須在${minLength}和 ${maxLength}之間</message> </field-validator> </field> </validators>第五步:使用驗(yàn)證框架編寫驗(yàn)證規(guī)則密碼:不能為空,密碼長度>=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)證框架編寫驗(yàn)證規(guī)則電話號碼:不能為空,符合電話號碼格式驗(yàn)證框架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>演示示例:使用驗(yàn)證框架進(jìn)行驗(yàn)證指導(dǎo)——實(shí)現(xiàn)對租房信息發(fā)布的驗(yàn)證訓(xùn)練要點(diǎn):Struts2驗(yàn)證框架需求說明:使用驗(yàn)證框架對租房信息發(fā)布的相關(guān)字段進(jìn)行驗(yàn)證標(biāo)題:非空,長度在6和20之間面積:整數(shù),小于200價(jià)格:浮點(diǎn)數(shù)聯(lián)系方式:電話或手機(jī)詳細(xì)信息:非空,小于300字實(shí)現(xiàn)思路:參考本章解決方案講解需求說明完成時(shí)間:20分鐘共性問題集中講解常見調(diào)試問題及解決辦法代碼規(guī)范問題共性問題集中講解國際化(Internationalization:I18N)使程序在不做任何修改的情況下,可以在不同國家或地區(qū)和不同語言環(huán)境下,按照當(dāng)?shù)氐恼Z言和格式習(xí)慣顯示字符本地化(Localization:L10N)一個(gè)國際化的程序,當(dāng)它運(yùn)行在本地機(jī)器時(shí),能夠根據(jù)本地機(jī)器的語言和地區(qū)設(shè)置顯示相應(yīng)字符國際化和本地化國際化和本地化Java程序的國際化思路將程序中的提示信息、錯(cuò)誤信息等放在資源文件中,為不同國家/語言編寫對應(yīng)資源文件資源文件由很多key-value對組成,key保持不變,value隨國家/語言不同而不同這些資源文件使用共同的基名,通過在基名后面添加語言代碼、國家和地區(qū)代碼來進(jìn)行區(qū)分資源文件名說明ApplicationResources_perties所有英文語言的資源ApplicationResources_perties所有的中文語言的資源ApplicationResources_zh_CN.properties針對中國大陸的、中文語言的資源ApplicationResources_zh_HK.properties針對中國香港的、中文語言的資源ApplicationRperties默認(rèn)資源文件,如果請求的資源文件不存在,將調(diào)用它的資源進(jìn)行顯示實(shí)現(xiàn)對租房網(wǎng)用戶注冊功能的國際化對英文用戶顯示英文界面和驗(yàn)證錯(cuò)誤信息對中國香港用戶顯示繁體中文界面和驗(yàn)證錯(cuò)誤信息對其他用戶顯示簡體中文界面和驗(yàn)證錯(cuò)誤信息實(shí)現(xiàn)國際化步驟在struts.xml中指定資源文件的基名及存儲(chǔ)路徑按照需求創(chuàng)建對應(yīng)的三個(gè)資源文件,存放相應(yīng)資源實(shí)現(xiàn)JSP頁面信息的國際化顯示實(shí)現(xiàn)驗(yàn)證錯(cuò)誤信息的國際化顯示使用Struts2實(shí)現(xiàn)國際化4-1第一步:指定資源文件的基名及存儲(chǔ)路徑第二步:創(chuàng)建對應(yīng)的三個(gè)資源文件位置在src目錄下,或者直接在WEB-INF/classes目錄名稱message_pertiesmessage_zh_HK.perties使用Struts2實(shí)現(xiàn)國際化4-2<struts> <constantname="struts.custom.i18n.resources"value="message"/> <constantname="struts.i18n.encoding"value="UTF-8"/> …… </struts>第三步:實(shí)現(xiàn)JSP頁面信息的國際化顯示使用Struts2實(shí)現(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頁面信息的國際化顯示資源文件第四步:實(shí)現(xiàn)驗(yàn)證錯(cuò)誤信息的國際化顯示使用Struts2實(shí)現(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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年福建事業(yè)單位考試人才素質(zhì)測評試題及答案
- 農(nóng)藝師的多職責(zé)與行業(yè)發(fā)展趨勢試題及答案
- 分析輔導(dǎo)員在文化交流中的角色與責(zé)任試題及答案
- 福建事業(yè)單位考試的公共表達(dá)與傳播能力分析試題及答案
- 輔導(dǎo)員考試的試題及答案的解析技巧
- 農(nóng)藝師考試中對專業(yè)知識應(yīng)用能力的提升策略與具體實(shí)踐試題及答案
- 2024年農(nóng)藝師考試職業(yè)價(jià)值觀試題及答案
- 小眾智商測試題及答案
- 2024年福建事業(yè)單位考試學(xué)習(xí)過程中的心理建設(shè)試題及答案
- 2024年統(tǒng)計(jì)師考試的知識框架 試題及答案
- DL∕T 246-2015 化學(xué)監(jiān)督導(dǎo)則
- 《宜興市國土空間總體規(guī)劃(2021-2035年)》
- 全新只分紅不占股協(xié)議
- DZ∕T 0283-2015 地面沉降調(diào)查與監(jiān)測規(guī)范(正式版)
- 江西省南昌市部分學(xué)校2023-2024學(xué)年七年級下學(xué)期期中數(shù)學(xué)試題(含答案)
- 地鐵安檢專業(yè)知識培訓(xùn)課件
- 2024-2029年中國無人機(jī)自動(dòng)機(jī)場行業(yè)市場現(xiàn)狀分析及競爭格局與投資發(fā)展研究報(bào)告
- 國有企業(yè)中層管理人員選拔任用管理辦法(價(jià)值極高參考版)
- 自來水公司招聘考試題庫
- 第12屆全運(yùn)會(huì)男子跆拳道-80kg+80kg運(yùn)動(dòng)員技戰(zhàn)術(shù)分析
- 動(dòng)物疫病緊急流行病學(xué)調(diào)查技術(shù)規(guī)范
評論
0/150
提交評論