段建國(guó)-課件tp02回顧與作業(yè)點(diǎn)評(píng)_第1頁(yè)
段建國(guó)-課件tp02回顧與作業(yè)點(diǎn)評(píng)_第2頁(yè)
段建國(guó)-課件tp02回顧與作業(yè)點(diǎn)評(píng)_第3頁(yè)
段建國(guó)-課件tp02回顧與作業(yè)點(diǎn)評(píng)_第4頁(yè)
段建國(guó)-課件tp02回顧與作業(yè)點(diǎn)評(píng)_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Struts2初體驗(yàn)第二章回顧與作業(yè)點(diǎn)評(píng)ModelI模式開(kāi)發(fā)存在哪些弊端?什么是MVC設(shè)計(jì)模式?自定義MVC框架的步驟提問(wèn)2Struts2及其優(yōu)勢(shì)Struts2是一個(gè)MVC框架,以WebWork框架的設(shè)計(jì)思想為核心,吸收了Struts1的部分優(yōu)點(diǎn)Struts2擁有更加廣闊的前景,自身功能強(qiáng)大,還對(duì)其他框架下開(kāi)發(fā)的程序提供很好的兼容性3Struts2的資源獲取Struts官方地址:本書(shū)選取Struts進(jìn)行講解Struts2目錄結(jié)構(gòu)apps目錄:Struts2示例應(yīng)用程序docs目錄:Struts2指南、向?qū)?、API文檔lib目錄:Struts2的發(fā)行包及其依賴包src目錄:Struts2項(xiàng)目源代碼4Struts2初體驗(yàn)7-1使用Struts2實(shí)現(xiàn):輸入用戶姓名,然后輸出歡迎信息問(wèn)題5Struts2初體驗(yàn)7-2使用Struts2開(kāi)發(fā)程序的基本步驟加載Struts2類(lèi)庫(kù)配置web.xml文件開(kāi)發(fā)視圖層頁(yè)面開(kāi)發(fā)控制層Action配置struts.xml文件部署、運(yùn)行項(xiàng)目分析6Struts2初體驗(yàn)7-3Struts2類(lèi)庫(kù)文件名說(shuō)明struts2-core-xxx.jarStruts2框架的核心類(lèi)庫(kù)xwork-core-xxx.jarXWork類(lèi)庫(kù),Struts2的構(gòu)建基礎(chǔ)ognl-xxx.jarStruts2使用的一種表達(dá)式語(yǔ)言類(lèi)庫(kù)freemarker-xxx.jarStruts2的標(biāo)簽?zāi)0迨褂妙?lèi)庫(kù)javassist-xxx.GA.jar對(duì)字節(jié)碼進(jìn)行處理commons-fileupload-xxx.jar文件上傳時(shí)需要使用commons-io-xxx.jarJavaIO擴(kuò)展commons-lang-xxx.jar包含了一些數(shù)據(jù)類(lèi)型的工具類(lèi)7Struts2初體驗(yàn)7-4配置web.xml<filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter. StrutsPrepareAndExecuteFilter </filter-class></filter>

<filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern></filter-mapping>將全部請(qǐng)求定位到指定的Struts2過(guò)濾器中8Struts2初體驗(yàn)7-5編寫(xiě)helloWorld.jsp… <div> <h1> <!--顯示StrutsAction中message的屬性內(nèi)容--> <s:propertyvalue="message"/> </h1> </div> <div> <formaction="helloWorld.action"method="post"> 請(qǐng)輸入您的姓名: <inputname="name"type="text"/> <inputtype="submit"value="提交"/> </form> </div>…輸出顯示語(yǔ)句9Struts2初體驗(yàn)7-6編寫(xiě)HelloWorldActionpublicclassHelloWorldActionimplementsAction{ //用戶輸入的姓名 privateStringname=""; //向用戶顯示的信息 privateStringmessage=""; publicStringexecute(){ //根據(jù)用戶輸入的姓名,進(jìn)行"Hello,XXXX!"的封裝 this.setMessage("Hello,"+this.getName()+"!"); //處理完畢,返回導(dǎo)航結(jié)果的邏輯名 return"success"; } … //省略setter、getter方法}10Struts2初體驗(yàn)7-7配置Struts2配置文件(struts.xml)部署、運(yùn)行項(xiàng)目<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN""/dtds/struts-2.0.dtd"><struts> <packagename="default"namespace="/"extends="struts-default"> <actionname="helloWorld" class="cn.jbit.strutsdemo.HelloWorldAction"> <resultname="success">helloWorld.jsp</result> </action> </package></struts>與Action返回字符串對(duì)應(yīng)與form表單的action屬性值對(duì)應(yīng)演示示例1-4:第一個(gè)Struts2程序11Struts2開(kāi)發(fā)小結(jié)開(kāi)發(fā)Struts2應(yīng)用的基本環(huán)節(jié)確認(rèn)環(huán)境是否添加了Struts2框架支持文件是否配置了Filter功能實(shí)現(xiàn)編寫(xiě)Action類(lèi)配置struts.xml文件編寫(xiě)視圖12Struts2再體驗(yàn)3-1如何使用Struts2實(shí)現(xiàn)用戶登錄驗(yàn)證實(shí)現(xiàn)步驟和Struts2初體驗(yàn)相同問(wèn)題分析13Struts2再體驗(yàn)3-2開(kāi)發(fā)控制層Action-LoginActionpublicclassLoginActionimplementsAction{ privateStringusername=""; privateStringpassword=""; publicStringexecute(){ if("jbit".equals(username)&&"bdqn".equals(password)){ return"success"; }else{ return"error"; } }} 14Struts2再體驗(yàn)3-3配置Struts2配置文件(struts.xml)<packagename="default"namespace="/"extends="struts-default"> <actionname="login"class="cn.jbit.strutsdemo.LoginAction"> <!--結(jié)果為“success”時(shí),跳轉(zhuǎn)至success.jsp頁(yè)面--> <resultname="success">success.jsp</result> <!--結(jié)果為"error"時(shí),跳轉(zhuǎn)至fail.jsp頁(yè)面--> <resultname="error">fail.jsp</result> </action></package>演示示例5-6:使用Struts2實(shí)現(xiàn)用戶登錄15學(xué)員操作——添加用戶登錄需求說(shuō)明:為租房網(wǎng)添加Struts2框架支持使用Struts2框架實(shí)現(xiàn)用戶登錄在LoginAction中獲得用戶名及密碼并對(duì)其合法性進(jìn)行驗(yàn)證配置struts.xml文件,用戶登錄成功和失敗跳轉(zhuǎn)的頁(yè)面練習(xí)完成時(shí)間:25分鐘提示16共性問(wèn)題集中講解常見(jiàn)問(wèn)題及解決辦法代碼規(guī)范問(wèn)題調(diào)試技巧共性問(wèn)題集中講解17Struts2訪問(wèn)ServletAPI4-1如果登錄成功后,如何使用session保存用戶信息?Struts2訪問(wèn)ServletAPI的方式與ServletAPI解耦的訪問(wèn)方式與ServletAPI耦合的訪問(wèn)方式問(wèn)題分析18Struts2訪問(wèn)ServletAPI4-2與ServletAPI解耦的訪問(wèn)方式對(duì)ServletAPI進(jìn)行封裝提供了三個(gè)Map對(duì)象訪問(wèn)request、session、application作用域通過(guò)ActionContext類(lèi)獲取這三個(gè)Map對(duì)象Objectget("request")MapgetSession()MapgetApplication()publicclassLoginActionimplementsAction{ privatestaticfinalStringCURRENT_USER="CURRENT_USER"; …//省略u(píng)sername、password屬性及其setter和getter方法 publicStringexecute(){ if("jbit".equals(username)&&"bdqn".equals(password)){ Map<String,Object>session=null; session=ActionContext.getContext().getSession(); if(session.containsKey(CURRENT_USER)){ session.remove(CURRENT_USER); } session.put(CURRENT_USER,username); return"success"; }else{ return"error"; } }}以key/value形式保存數(shù)據(jù)從ActionContext中獲取session19Struts2訪問(wèn)ServletAPI4-3頁(yè)面顯示<body> <h1>讀取Session中保存的用戶名</h1> <div>歡迎您,${sessionScope.CURRENT_USER}!</div></body>演示示例7-11:使用Session保存用戶名從session中讀取數(shù)據(jù)20Struts2訪問(wèn)ServletAPI4-4與ServletAPI耦合的訪問(wèn)方式通過(guò)ServletActionContext類(lèi)獲取ServletAPI對(duì)象ServletContextgetServletContext()HttpServletResponsegetResponse()HttpServletRequestgetRequest()通過(guò)request.getSession()獲取session對(duì)象通過(guò)xxx.setAttribute()和xxx.getAttribute()功能,在不同的頁(yè)面或Action中傳遞數(shù)據(jù)publicclassLoginActionimplementsAction{ privatestaticfinalStringCURRENT_USER="CURRENT_USER"; …//省略u(píng)sername、password屬性及其setter和getter方法 publicStringexecute(){ if("jbit".equals(username)&&"bdqn".equals(password)){ HttpSessionsession=null; session=ServletActionContext.getRequest().getSession(); if(session.getAttribute(CURRENT_USER)!=null){ session.removeAttribute(CURRENT_USER); } session.setAttribute(CURRENT_USER,username); return"success"; }else{ return“error"; } }}以setAttribute()的方式保存數(shù)據(jù)獲取session21學(xué)員操作——session保存數(shù)據(jù)需求說(shuō)明:用戶登錄成功后,使用session保存用戶信息在登錄成功后讀取用戶名顯示在LoginAction中獲得用戶名及密碼并對(duì)其合法性進(jìn)行驗(yàn)證登錄成功后以解耦的方式獲取session練習(xí)完成時(shí)間:25分鐘提示22共性問(wèn)題集中講解常見(jiàn)問(wèn)題及解決辦法代碼規(guī)范問(wèn)題調(diào)試技巧共性問(wèn)題集中講解23Struts2的數(shù)據(jù)校驗(yàn)2-1對(duì)用戶登錄添加表單驗(yàn)證功能Struts2的提供了數(shù)據(jù)驗(yàn)證機(jī)制繼承ActionSupport類(lèi)來(lái)完成Action開(kāi)發(fā)ActionSupport類(lèi)不僅對(duì)Action接口進(jìn)行簡(jiǎn)單實(shí)現(xiàn),同時(shí)增加了驗(yàn)證、本地化等支持問(wèn)題分析24Struts2的數(shù)據(jù)校驗(yàn)2-2修改LoginActionpublicclassLoginActionextendsActionSupport{//......省略代碼publicvoidvalidate(){ if(this.getUsername().length()==0){ addFieldError("name","用戶名不能為空");}if(this.getPassword().length()==0){ addFieldError("pwd","密碼不能為空");}} //......省略代碼}繼承ActionSupport驗(yàn)證出錯(cuò),指定錯(cuò)誤提示信息25Struts2標(biāo)簽如何將Action的錯(cuò)誤信息在頁(yè)面輸出?使用Struts2提供的標(biāo)簽來(lái)完成問(wèn)題分析<%@taglibprefix="s"uri="/struts-tags"%>需要在頁(yè)面中引入Struts2的標(biāo)簽庫(kù)26Struts2表單標(biāo)簽2-1常用表單標(biāo)簽標(biāo)簽說(shuō)明<s:form>…</s:form>表單標(biāo)簽<s:textfield>…</s:textfield>文本輸入框<s:password>…</s:password>密碼輸入框<s:textarea>…</s:textarea>文本域輸入框<s:radio>…</s:radio>單選按鈕<s:checkbox>…</s:checkbox>多選框<s:submit/>提交標(biāo)簽<s:reset/>重置標(biāo)簽<s:hidden/>隱藏域標(biāo)簽27Struts2表單標(biāo)簽2-2修改JSP頁(yè)面<%@taglibprefix="s"uri="/struts-tags"%>…<div> <s:fielderror/></div><s:formaction="/login.action"> <div> 用戶名:<s:textfieldname="username"/> </div> <div> 密碼:<s:passwordname="password"/> </div> <div><s:submitvalue="登錄"/></div></s:form> 顯示服務(wù)器返回的錯(cuò)誤信息演示示例12-13:數(shù)據(jù)校驗(yàn)與Struts2標(biāo)簽28Struts2通用標(biāo)簽2-1使用Struts2標(biāo)簽是否可以在頁(yè)面中實(shí)現(xiàn)邏輯控制?使用Struts2的通用標(biāo)簽條件判斷標(biāo)簽迭代標(biāo)簽問(wèn)題分析29Struts2通用標(biāo)簽2-2常用通用標(biāo)簽名稱標(biāo)簽說(shuō)明條件標(biāo)簽<s:if>……</s:if>根據(jù)表達(dá)式的值,判斷將要執(zhí)行的內(nèi)容<s:elseif>……</s:elseif><s:else>……</s:else>迭代<s:iterator>……</s:iterator>用于遍歷集合30條件標(biāo)簽條件判斷標(biāo)簽語(yǔ)法<s:iftest="表達(dá)式"> 需要執(zhí)行的代碼</s:if><s:elseiftest="表達(dá)式"> 需要執(zhí)行的代碼</s:elseif><s:else> 需要執(zhí)行的代碼</s:else>表達(dá)式條件為true時(shí),執(zhí)行相應(yīng)的代碼31

溫馨提示

  • 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)論