版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
.../題目
1以下不屬于Struts2中result的type屬性<>A.a(chǎn)ction
B.redirect重定向到另外一個(gè)頁(yè)面C.redirectAction重定向到另外一個(gè)動(dòng)作action,可以是同包下的,也可以跨包訪問。D.dispatcher轉(zhuǎn)發(fā)至一個(gè)頁(yè)面,struts重定向到另外一個(gè)頁(yè)面重定向到另外一個(gè)動(dòng)作action,可以是同包下的,也可以跨包訪問。轉(zhuǎn)發(fā)至一個(gè)頁(yè)面,struts2中的默認(rèn)值。
題目
2下列有關(guān)攔截器說法錯(cuò)誤的是?A.struts通過攔截器完成執(zhí)行action請(qǐng)求處理方法前一系列操作。例如:數(shù)據(jù)封裝、文件上傳、數(shù)據(jù)校驗(yàn)等
B.在struts中,直接訪問jsp頁(yè)面,Jsp頁(yè)面是是由servlet容器維護(hù)的,與struts2默認(rèn)攔截器沒有關(guān)系,struts2中如果想攔截jsp頁(yè)面,可以配置Jsp頁(yè)面是是由servlet容器維護(hù)的,與struts2默認(rèn)攔截器沒有關(guān)系,struts2中如果想攔截jsp頁(yè)面,可以配置過濾器,攔截路徑*.jsp。如果不配置攔截器,struts2會(huì)有默認(rèn)執(zhí)行的攔截器。在struts.xml文件中的package標(biāo)簽extends屬性配置struts-default,它里面會(huì)很多默認(rèn)配置的攔截器。比如:servletConfig〔在動(dòng)作類中訪問servlet的API時(shí)使用該攔截器完成、staticParam〔在動(dòng)作類中注入靜態(tài)參數(shù)時(shí)會(huì)調(diào)用、params〔給動(dòng)作類封裝動(dòng)態(tài)參數(shù)、modelDriven〔模型驅(qū)動(dòng)數(shù)據(jù)封裝時(shí)調(diào)用等。
題目
3以下哪些是Action接口提供的返回值SUCCESS:對(duì)應(yīng)字符串"success".成功時(shí)使用NONE:對(duì)應(yīng)字符串"none"。不轉(zhuǎn)向任何視圖時(shí)使用。等同于null。ERROR:對(duì)應(yīng)字符串"error".轉(zhuǎn)向錯(cuò)誤頁(yè)面INPUT:對(duì)應(yīng)字符串"input"?;仫@時(shí)使用SUCCESS:對(duì)應(yīng)字符串"success".成功時(shí)使用NONE:對(duì)應(yīng)字符串"none"。不轉(zhuǎn)向任何視圖時(shí)使用。等同于null。ERROR:對(duì)應(yīng)字符串"error".轉(zhuǎn)向錯(cuò)誤頁(yè)面INPUT:對(duì)應(yīng)字符串"input"?;仫@時(shí)使用LOGIN:對(duì)應(yīng)字符串"login"。轉(zhuǎn)向登陸頁(yè)面。A.success
B.none
C.error
D.input
題目
4如果要實(shí)現(xiàn)struts2的數(shù)據(jù)檢驗(yàn)功能A普通的Action類可以實(shí)現(xiàn)
B繼承自Action應(yīng)繼承ActionSupport類,因?yàn)樗麑?shí)現(xiàn)了Validateable接口,需要重寫validate方法,在validate方法中書寫具體的驗(yàn)證操作。接口的可以實(shí)現(xiàn)
C繼承自ActionSupport類可以實(shí)現(xiàn)
D繼承自ActionValidate類可以實(shí)現(xiàn)應(yīng)繼承ActionSupport類,因?yàn)樗麑?shí)現(xiàn)了Validateable接口,需要重寫validate方法,在validate方法中書寫具體的驗(yàn)證操作。
題目
5struts2默認(rèn)的處理結(jié)果類型dispatcher:動(dòng)作執(zhí)行完畢后,使用轉(zhuǎn)發(fā)技術(shù)轉(zhuǎn)發(fā)到指定的頁(yè)面。也是默認(rèn)的。redirect:動(dòng)作執(zhí)行完畢后,使用重定向到指定的頁(yè)面。dispatcher:動(dòng)作執(zhí)行完畢后,使用轉(zhuǎn)發(fā)技術(shù)轉(zhuǎn)發(fā)到指定的頁(yè)面。也是默認(rèn)的。redirect:動(dòng)作執(zhí)行完畢后,使用重定向到指定的頁(yè)面。chain:動(dòng)作執(zhí)行完畢后,使用轉(zhuǎn)發(fā)技術(shù)轉(zhuǎn)發(fā)到另外的一個(gè)action。redirectAction:動(dòng)作執(zhí)行完畢后,使用重定向到指定的另外的一個(gè)action。stream:動(dòng)作執(zhí)行完畢后,轉(zhuǎn)向一個(gè)輸出流。A.dispatcher
B.redirect
C.chain
D.forward
題目
6在值棧的上下文Context中,存在一些固定的key表示不同的對(duì)象,以下描述正確的是?A.request,表示request作用域的數(shù)據(jù)
B.session,表示session作用域的數(shù)據(jù)
C.application,表示application作用域的數(shù)據(jù)
D.parameters,表示請(qǐng)求參數(shù)的所有數(shù)據(jù)
題目
7以下屬于struts2配置文件中的配置元素是:<>多選>
A.<packageStruts2配置文件中可以有多個(gè)package包,但名稱不能相同。>
B.<action一個(gè)package中可以有多個(gè)action,名稱不能相同。>
C.<form-beans>
D.<action-mappings>Struts2配置文件中可以有多個(gè)package包,但名稱不能相同。一個(gè)package中可以有多個(gè)action,名稱不能相同。
題目
8有關(guān)值棧contextMap棧數(shù)據(jù)操作描述正確的是?A.ActionContext.getContext<>.put<key,value>Key就是類似request域?qū)ο蟮膋ey值直接對(duì)context進(jìn)行操作
B.使用<s:propertyvalue="#key"/>獲得context中指定key的內(nèi)容
C.ActionContext.getContext<>.getSession<>.put<key,value>;將數(shù)據(jù)放置context固定key為session對(duì)應(yīng)的map中
D.ActionContext.getContext<>.getApplication主要是生命周期不一樣,返回值都是map,所以取值一樣,都是通過key取Key就是類似request域?qū)ο蟮膋ey值主要是生命周期不一樣,返回值都是map,所以取值一樣,都是通過key取value。
題目
9有關(guān)<s:iterator/>描述正確的是?A.value屬性的值對(duì)應(yīng)值棧中的相關(guān)的數(shù)據(jù)
B.默認(rèn)情況,將遍歷的每一個(gè)數(shù)據(jù)都臨時(shí)壓入到root的棧頂想想for的例子,遍歷一次少一次的數(shù)據(jù),相當(dāng)于是臨時(shí)存儲(chǔ)數(shù)據(jù)的容器。,遍歷結(jié)束時(shí)再將數(shù)據(jù)移除
C.如果使用var屬性,在值棧的context中存放一個(gè)鍵值對(duì)
D.如果使用status屬性,可以獲得當(dāng)前遍歷的狀態(tài)。例如:遍歷的索引,是否為奇偶等想想for的例子,遍歷一次少一次的數(shù)據(jù),相當(dāng)于是臨時(shí)存儲(chǔ)數(shù)據(jù)的容器。
題目
10token令牌機(jī)制,下面說法正確的是?A.如果要使token可用,必須在jsp表單中提供<s:token/>,struts.xml使用token攔截器
B.在struts2默認(rèn)的攔截器棧中包含token攔截器Struts2默認(rèn)攔截器defaultStack中不包含token的攔截器。C.<s:token>標(biāo)簽的作用在jsp頁(yè)面生成一個(gè)隱藏域數(shù)據(jù)D.token攔截器可以通過includeMethods屬性設(shè)置需要進(jìn)行攔截的方法Struts2默認(rèn)攔截器defaultStack中不包含token的攔截器。
題目
11下列有關(guān)ValueStack內(nèi)部結(jié)構(gòu)描述正確的是?A.ValueStack內(nèi)部有兩個(gè)邏輯部分:root和contextRoot數(shù)據(jù)是個(gè)list集合,context數(shù)據(jù)是個(gè)大的map集合。B.ValueStack的上下文context中存放了request、session、application的引用
C.ValueStack的root部分,可以用于存放對(duì)象。在jsp頁(yè)面中通過struts標(biāo)簽,可以使用對(duì)象的屬性,直接獲得需要的數(shù)據(jù)。
D.ValueStack的context部分,struts將使用key=value的形式存放數(shù)據(jù),在jsp頁(yè)面中通過struts標(biāo)簽,可以使用"#key"方式獲指定的數(shù)據(jù)Root數(shù)據(jù)是個(gè)list集合,context數(shù)據(jù)是個(gè)大的map集合。
題目
12在struts2配置中用〔元素配置常量A.<action>
B.<package>
C.<constant>
D.<include當(dāng)Struts2配置文件比較多,需要模塊化劃分或分開成為多個(gè)配置文件時(shí),則需要使用include標(biāo)簽,在struts.xml中包含其他配置文件。當(dāng)Struts2配置文件比較多,需要模塊化劃分或分開成為多個(gè)配置文件時(shí),則需要使用include標(biāo)簽,在struts.xml中包含其他配置文件。
題目
13下列有關(guān)訪問struts2的action,說法錯(cuò)誤的是?A.action的訪問路徑,需要使用<package>標(biāo)簽的namespace屬性的值和<action>標(biāo)簽的name屬性的值
B.如果訪問路徑是"/primer/helloWorldAction",并在頁(yè)面中成功顯示,<package>標(biāo)簽的namespace屬性值可以是"/primer"
C.在配置<action>時(shí),其中class屬性是用來(lái)請(qǐng)求訪問的Action類。
D.在struts.xml文件中必須配置攔截器在Struts中配置攔截器,如果是自定義攔截器,用到時(shí)在配置,這個(gè)在Struts中配置攔截器,如果是自定義攔截器,用到時(shí)在配置,這個(gè)不是必須的
題目
14在Struts2中,可以在哪些配置文件中配置常量?jī)?yōu)先級(jí)是:web.xml>pertieis>struts.xmlni〔多選優(yōu)先級(jí)是:web.xml>pertieis>struts.xmlniD.server.xmlTomat中的配置文件。Tomat中的配置文件。
題目
15下面有關(guān)struts2配置文件說法正確的是?A.perties文件,struts2提供的默認(rèn)常量配置文件
B.struts-default.xml文件,struts2提供默認(rèn)功能實(shí)現(xiàn)配置文件。此文件中提供大量的攔截器,結(jié)果集類型等
C.struts.xml文件,是struts2預(yù)留給框架使用者,編寫自定義配置信息的
D.struts-default.xml,struts-plugin.xml和struts.xml文件加載是沒有順序的
題目
16在<action>元素中,那個(gè)屬性可以指定Action中要執(zhí)行的方法的名稱<>A.method
B.namename為要訪問的路徑。如果有namespace的話,訪問路徑是:/namespace/nameC.classaction類name為要訪問的路徑。如果有namespace的話,訪問路徑是:/namespace/nameaction類的全路徑。
題目
17以下配置文件,哪些是struts2的?
A.perties
提供常量的文件。D.struts.xmlstruts.xml是默認(rèn)的配置文件,我們是可以進(jìn)行修改的。提供常量的文件。struts.xml是默認(rèn)的配置文件,我們是可以進(jìn)行修改的。
題目
18有關(guān)值棧root對(duì)象棧數(shù)據(jù)操作描述正確的是?A.valueStack.push<obj>將指定的對(duì)象壓入到棧頂
B.在jsp頁(yè)面,可以使用<s:property/>獲得棧頂?shù)臄?shù)據(jù)
C.valueStack.getRoot<>不能獲取對(duì)象棧
D.在jsp頁(yè)面,可以使用<s:propertyvalue="name"/>獲得對(duì)象棧中name屬性的值
題目
19下列哪個(gè)校驗(yàn)器可以校驗(yàn)"兩次密碼輸入不一致"〔A.required必須輸入,判斷是否為null,允許有空格。B.requiredstring必須輸入,不允許有空格。驗(yàn)證的只能是字符串的。C.stringlength控制長(zhǎng)度的必須輸入,判斷是否為null,允許有空格。必須輸入,不允許有空格。驗(yàn)證的只能是字符串的。控制長(zhǎng)度的。
題目
20關(guān)于struts2哪些api是正確的?A.ServletActionContext.getRequest<>可以獲得HttpServletRequest
B.ServletActionContext.getResponse<>可以獲得HttpServletResponse
C.ServletActionContext.getServletContext<>可以獲得ServletContext
D.ServletActionContext.getRequest<>.getSession<>可以獲得HttpSession
題目
21struts2action類的編寫,下列說法正確的是?A.action類可以不繼承任何類,不實(shí)現(xiàn)任何接口
B.action類可以實(shí)現(xiàn)struts提供的接口Action
C.action類可以繼承ActionSupportActionsupport這個(gè)工具類在實(shí)現(xiàn)了Action接口的基礎(chǔ)上還定義了一個(gè)validate<>方法,重寫該方法,它會(huì)在execute<>方法之前執(zhí)行,如校驗(yàn)失敗,會(huì)轉(zhuǎn)入input處,必須在配置該Action時(shí)配置input屬性。另外,Actionsupport還提供了一個(gè)getText<Stringkey>方法還實(shí)現(xiàn)國(guó)際化,該方法從資源文件上獲取國(guó)際化信息D.action類中請(qǐng)求處理方法,必須是共有的,方法名稱自定義,且沒有參數(shù)。有參數(shù)的話,會(huì)報(bào)找不到方法異常。返回值類型必須是String。Actionsupport這個(gè)工具類在實(shí)現(xiàn)了Action接口的基礎(chǔ)上還定義了一個(gè)validate<>方法,重寫該方法,它會(huì)在execute<>方法之前執(zhí)行,如校驗(yàn)失敗,會(huì)轉(zhuǎn)入input處,必須在配置該Action時(shí)配置input屬性。另外,Actionsupport還提供了一個(gè)getText<Stringkey>方法還實(shí)現(xiàn)國(guó)際化,該方法從資源文件上獲取國(guó)際化信息有參數(shù)的話,會(huì)報(bào)找不到方法異常。返回值類型必須是String。
題目
22struts2動(dòng)態(tài)方法調(diào)用的格式為:A.ActionName?methodName.action
B.ActionName!methodName.action使用動(dòng)態(tài)調(diào)用的話還需要打開一個(gè)常量C.ActionName*methodName.action
D.ActionName@mathodName.action使用動(dòng)態(tài)調(diào)用的話還需要打開一個(gè)常量
題目
23下列哪個(gè)結(jié)果類型用來(lái)轉(zhuǎn)發(fā)到Action〔單選A.dispatcher轉(zhuǎn)發(fā)到一個(gè)頁(yè)面,默認(rèn)值。B.chainC.redirectAction重定向到一個(gè)動(dòng)作類。D.stream轉(zhuǎn)發(fā)到一個(gè)頁(yè)面,默認(rèn)值。重定向到一個(gè)動(dòng)作類。
題目
24.在Action接口中提供的5個(gè)邏輯視圖代表表單輸入錯(cuò)誤會(huì)跳轉(zhuǎn)的視圖名稱是<>A.SUCCESS
B.ERROR
C.INPUT
D.LOGIN
題目
25下列有關(guān),表單回顯正確的是?A.只要將數(shù)據(jù)放置到request作用域,struts表單標(biāo)簽可以根據(jù)name屬性進(jìn)行回顯
B.只要將數(shù)據(jù)放置到session作用域,struts表單標(biāo)簽可以根據(jù)name屬性進(jìn)行回顯
C.只要將數(shù)據(jù)放置到application作用域,struts表單標(biāo)簽可以根據(jù)name屬性進(jìn)行回顯
D.只要將數(shù)據(jù)放置到對(duì)象棧root中,struts表單標(biāo)簽可以根據(jù)name屬性進(jìn)行回顯
題目
26struts2在控制器類中一般需要添加相應(yīng)屬性的A.setter方法
B.as方法
C.getter方法
D.is方法
題目
27當(dāng)類型轉(zhuǎn)換失敗時(shí),Struts會(huì)自動(dòng)這個(gè)前提是需要在struts.xml文件這個(gè)前提是需要在struts.xml文件中配置input屬性。A.error
B.success
C.login
D.input
題目
28下列哪個(gè)常量用來(lái)配置Action的擴(kuò)展名〔單選A.應(yīng)用中使用的編碼。配置位置決定作用范圍。B.能進(jìn)入Struts2框架內(nèi)部的url地址后綴名。多個(gè)值用逗號(hào)分隔。C.該屬性設(shè)置瀏覽器是否緩存靜態(tài)內(nèi)容。當(dāng)應(yīng)用處于開發(fā)階段時(shí),我們希望每次請(qǐng)求都獲到服務(wù)器的最新響應(yīng),則可設(shè)置該屬性為false。應(yīng)用中使用的編碼。配置位置決定作用范圍。能進(jìn)入Struts2框架內(nèi)部的url地址后綴名。多個(gè)值用逗號(hào)分隔。該屬性設(shè)置瀏覽器是否緩存靜態(tài)內(nèi)容。當(dāng)應(yīng)用處于開發(fā)階段時(shí),我們希望每次請(qǐng)求都獲到服務(wù)器的最新響應(yīng),則可設(shè)置該屬性為false。該屬性:是否是開發(fā)模式。開發(fā)模式:改了配置文件,不需要重啟,會(huì)輸出更多的錯(cuò)誤信息,開發(fā)階段建議為true。
題目
29請(qǐng)看代碼
form.jsp
<s:formaction="myAction"namespace="/"theme="simple">
用戶名:<s:textfieldname="username"/><br/>
密碼:<s:passwordname="password"/><br/>
<s:submitvalue="提交"/>
</s:form>
struts.xml
<packagename="xxx"namespace="/"extends="struts-default">
<actionname="myAction"class="cn.itcast.web.action.MyAction"/>
</package>
User.java
publicclassUser{
privateStringusername;
privateStringpassword;publicvoidsetUsername<Stringusername>{
this.username=username;
}
publicvoidsetPassword<Stringpassword>{
this.password=password;
}
}
MyAction.java
packagecn.itcast.web.action;publicclassMyActionextendsActionSupportimplementsModelDriven<User>{
privateUseruser=newUser<>;
privateStringusername;
privateStringpassword;
publicvoidsetUsername<Stringusername>{
this.username=username;
}
publicvoidsetPassword<Stringpassword>{
this.password=password;
}
publicUsergetModel<>{
returnthis.user;
}
publicStringexecute<>{
System.out.println<username+","+password>;
returnnull;
}
}
當(dāng)在form.jsp表單中,向用戶名中輸入zhangSan,向密碼中輸入123后提交,控制臺(tái)會(huì)有什么樣的輸出結(jié)果〔單選A.null,null在struts的默認(rèn)攔截器棧中,已經(jīng)使用了modelDriven攔截器,此攔截器將當(dāng)前action提供的javabean對(duì)象壓入到棧頂,在通過其他攔截器從而完成整個(gè)數(shù)據(jù)的封裝。B.zhangSan,123
C.沒有輸出
D.拋出異常在struts的默認(rèn)攔截器棧中,已經(jīng)使用了modelDriven攔截器,此攔截器將當(dāng)前action提供的javabean對(duì)象壓入到棧頂,在通過其他攔截器從而完成整個(gè)數(shù)據(jù)的封裝。
題目
30下列對(duì)stringlength校驗(yàn)器描述正確的是〔A.可以配置minLength和maxLength參數(shù)
B.可以配置min和max參數(shù)
C.沒有參數(shù)
D.可以配置minLength和maxLength,以及min和max參數(shù)
題目
31下列有關(guān)值棧struts2把值棧對(duì)象保存到request域中,值棧保存名稱struts.valueStackRequest.setAttribute<"struts2把值棧對(duì)象保存到request域中,值棧保存名稱struts.valueStackRequest.setAttribute<"struts.valueStack",valueStack>從request里面獲取值棧對(duì)象Request.getAttribute<"struts.valueStack">;A.valueStack是單例的,用于存放struts需要存放的數(shù)據(jù)
B.值棧被保存在HttpServletRequest作用域中值棧是多例的,每次請(qǐng)求都會(huì)初始化來(lái)保存當(dāng)前的數(shù)據(jù)。C.可以通過ActionContext.getValueStack<>獲得值棧
D.可以通過ActionContext.getContext<>.getValueStack<>獲得值棧值棧是多例的,每次請(qǐng)求都會(huì)初始化來(lái)保存當(dāng)前的數(shù)據(jù)。
題目
32下列對(duì)局部xml配置校驗(yàn)說法正確的是〔多選A.配置文件必須放到當(dāng)前Action同包下
B.配置文件名稱必須是"當(dāng)前Action類名-當(dāng)前<action>的name名稱-validation.xml"
C.在Action類中無(wú)需編寫任何與參數(shù)校驗(yàn)相關(guān)的代碼
D.可以使用@InputConfig比input視圖擴(kuò)展性好,可以跳轉(zhuǎn)到多個(gè)@InputConfig<methodName="Tqtest",resultName="resultTest">methodName是要作用于哪個(gè)方法,resultName是返回值,如果方法沒有返回值則默認(rèn)使用該屬性值。比input視圖擴(kuò)展性好,可以跳轉(zhuǎn)到多個(gè)@InputConfig<methodName="Tqtest",resultName="resultTest">methodName是要作用于哪個(gè)方法,resultName是返回值,如果方法沒有返回值則默認(rèn)使用該屬性值。
題目
33以下有關(guān)struts.xml文件描述正確的是?A.struts.xml文件必須放置在src下面
B.struts.xml文件中只能配置一個(gè)package
C.struts.xml文件可以放置在WEB-INF目錄下
D.struts.xml文件名稱可以自定義,只要以struts開頭就可以
題目
34以下結(jié)果類型描述正確的是?A.redirect,將請(qǐng)求重定向到另一個(gè)資源,一般重定向到j(luò)sp頁(yè)面。
B.redirectAction,將請(qǐng)求重定向到另一個(gè)action
C.dispatcher,struts框架默認(rèn)結(jié)果類型,將請(qǐng)求轉(zhuǎn)發(fā)到另一個(gè)資源
D.stream確定result將從action獲得流并發(fā)送到瀏覽器。
題目
35〔了解下列對(duì)全局類型轉(zhuǎn)換器配置描述正確的是〔多選A.配置文件名稱必須為perties
B.配置文件必須放到/WEB-INF/classes目錄下
C.配置信息中屬性名為目標(biāo)類型名稱
D.配置信息中屬性值為目標(biāo)類型的類型轉(zhuǎn)換器類名
題目
36〔了解下列有關(guān)自定義類型轉(zhuǎn)換器說法正確的是?A.編寫自定義轉(zhuǎn)換器實(shí)現(xiàn)類,需要實(shí)現(xiàn)TypeConverter接口或繼承默認(rèn)實(shí)現(xiàn)類DefaultTypeConverter
B.轉(zhuǎn)換器的轉(zhuǎn)換方法,將有可能執(zhí)行兩次。一次是表單提交數(shù)據(jù)字符串?dāng)?shù)組,轉(zhuǎn)換成指定對(duì)象;一次是標(biāo)簽回顯指定對(duì)象,轉(zhuǎn)換成字符串。
C.自定義轉(zhuǎn)換可以被配置成全局轉(zhuǎn)換,使用的固定的名稱:perties,此轉(zhuǎn)換器將覆蓋struts默認(rèn)實(shí)現(xiàn)的轉(zhuǎn)換<如果有>
D.自定義轉(zhuǎn)換可以被配置成局部轉(zhuǎn)換器,此類轉(zhuǎn)換器只對(duì)當(dāng)前action有效。進(jìn)行注冊(cè)時(shí),需要使用一定格式的文件名稱:action類名-perties
題目
37OGNL表達(dá)式Ognl表達(dá)式的寫法和注意Ognl表達(dá)式的寫法和注意事項(xiàng)。A."#key"表示可以獲得值棧context中的指定key的數(shù)據(jù)
B."${ognl}"表示在配置文件中執(zhí)行ognl表達(dá)式
C."%{%百分號(hào)是強(qiáng)制認(rèn)為括號(hào)中的內(nèi)容是一個(gè)表達(dá)式或者字符串。內(nèi)容加上單引號(hào)是字符串。使用在struts2的表單標(biāo)簽中,如果直接寫ognl表達(dá)式,不會(huì)把當(dāng)做ognl,只是作為字符串輸出,使用%{ognl}‘#request.username’}",輸出的內(nèi)容是從request域中讀取username的值
D."%{‘#request.username’}",輸出的內(nèi)容是"#request.username"這個(gè)字符串%百分號(hào)是強(qiáng)制認(rèn)為括號(hào)中的內(nèi)容是一個(gè)表達(dá)式或者字符串。內(nèi)容加上單引號(hào)是字符串。使用在struts2的表單標(biāo)簽中,如果直接寫ognl表達(dá)式,不會(huì)把當(dāng)做ognl,只是作為字符串輸出,使用%{ognl}
題目
38下面有關(guān)modelDriven機(jī)制,分析正確的是?A.必須實(shí)現(xiàn)接口ModelDriven,通過在實(shí)現(xiàn)接口時(shí),提供javabean類型作為泛型參數(shù)。
B.需要實(shí)現(xiàn)接口的方法getModel<>
C.編寫一個(gè)成員變量,可以不實(shí)例化是必須要實(shí)例化,不然會(huì)報(bào)空指針異常。D.在struts的默認(rèn)攔截器棧中,已經(jīng)使用了modelDriven攔截器,此攔截器將當(dāng)前action提供的javabean對(duì)象壓入到棧頂,在通過其他攔截器從而完成整個(gè)數(shù)據(jù)的封裝。是必須要實(shí)例化,不然會(huì)報(bào)空指針異常。
題目
39下面代碼執(zhí)行結(jié)果?
在action中進(jìn)行如下操作:
ActionContext<>.getContext<>.put<"itcast","傳智播客">;
重定向到j(luò)sp注意這里是重定向,action是多例的,每創(chuàng)建一個(gè)action,都有一個(gè)context,重定向的話是跨域的,數(shù)據(jù)不能共享,所以值棧的內(nèi)容是取不出來(lái)。注意這里是重定向,action是多例的,每創(chuàng)建一個(gè)action,都有一個(gè)context,重定向的話是跨域的,數(shù)據(jù)不能共享,所以值棧的內(nèi)容是取不出來(lái)。A.傳智播客###
B.傳智播客#傳智播客##
C.傳智播客#傳智播客#傳智播客#
D.###
題目
40.下列有關(guān)struts2說法正確的是?A.struts2依賴Struts2是與servlet解耦合的,可用可不用,而不是依賴。于Servletapi,所有我們必須使用ServletActionContext工具類提供的方法操作servlet的作用域
B.struts2的action是多實(shí)例的
C.在struts2中的action是需要依賴servlet容器是依賴于Web容器,主要是需要依賴web容器運(yùn)行。而不是依賴servlet容器。的
Struts2是與servlet解耦合的,可用可不用,而不是依賴。是依賴于Web容器,主要是需要依賴web容器運(yùn)行。而不是依賴servlet容器。strutstoken令牌機(jī)制利用Struts同步令牌〔Token機(jī)制來(lái)解決Web應(yīng)用中的重復(fù)提交問題。該方法的基本原理是:服務(wù)器端在處理到達(dá)的request之前,會(huì)將request中的Token值與保存在當(dāng)前用戶session中的令牌值進(jìn)行比較,看是否匹配。在處理完該request后,且在response發(fā)送給客戶端之前,將會(huì)產(chǎn)生一個(gè)新的
Token,該Token除傳給客戶端以外,也會(huì)將用戶session中保存的舊的Token進(jìn)行替換。這樣,如果用戶會(huì)退到剛才的提交頁(yè)面并再次提交的話,客戶端傳過來(lái)的Token值和服務(wù)器端的不一致,從而有效地防止了重復(fù)提交地發(fā)生。struts的Token機(jī)制實(shí)際上就是通過用戶提交表單時(shí),比較request中的請(qǐng)求參數(shù)"org.apache.struts.taglib.html.TOKEN"的值與當(dāng)前會(huì)話中的屬"org.apache.struts.action.TOKEN"的值是否相等,相等則是正常提交,不等則為重復(fù)提交。
下面我們看下一個(gè)完整的操作流程,這樣便于理解:
首先我們要明白,重復(fù)提交是發(fā)生在什么情況下的,什么情況下需要處理重復(fù)提交。我們所要解決的重復(fù)提交一般是考慮用戶新插入一條記錄的情形,對(duì)于修改記錄的重復(fù)提交一般不考慮,因?yàn)樾薷挠涗洷旧碛涗浘痛嬖贗D,重復(fù)提交也只不過是重復(fù)更新數(shù)據(jù)庫(kù)同一記錄而已,對(duì)數(shù)據(jù)的正確性不會(huì)有影響。如果新插入一條記錄不對(duì)重復(fù)提交進(jìn)行處理的話,那么就會(huì)在數(shù)據(jù)庫(kù)中重復(fù)插入同一記錄,這樣會(huì)在數(shù)據(jù)庫(kù)產(chǎn)生冗余的重復(fù)記錄。當(dāng)我們要插入一條記錄時(shí),會(huì)分二步走。第一步我們要打開新增記錄的頁(yè)面。第二步,我們會(huì)在打開的頁(yè)面中填寫相關(guān)信息,然后提交,這個(gè)時(shí)候提交才算完成。
第一步:假如我們打開新增記錄這個(gè)操作由add方法完成,代碼如下:
publicActionForwardadd<ActionMappingmapping,ActionFormform,
HttpServletRequestrequest,HttpServletResponseresponse>{
this.saveToken<request>;//這個(gè)方法就是產(chǎn)生令牌值,struts已有的方法
returnmapping.findForward<"add">;//返回新增頁(yè)面}
通過調(diào)用saveToken<request>,產(chǎn)生一個(gè)token值。<注:每次調(diào)用saveToken方法產(chǎn)生的token值都不同>然后在記錄新增頁(yè)面中的<html:form>內(nèi)部增加一個(gè)隱含表單字段,形式如下:
<div><inputtype="hidden"name="org.apache.struts.taglib.html.TOKEN"</div>第二步:假如我們提交這個(gè)頁(yè)面數(shù)據(jù)由save方法完成,代碼如下:
publicActionForwardsave<ActionMappingmapping,ActionFormform,
HttpServletRequestrequest,HttpServletResponseresponse>{
if<this.isTokenValid<request>>{//正常提交
this.resetToken<request>;//清空當(dāng)前會(huì)話中的token值
returnmapping.findForward<"success">;//返回保存成功頁(yè)面
}else{//重復(fù)提交
this.saveToken<request>;//注:此方法在這里可要也可不要。
returnmapping.findForward<"fail">;//返回重復(fù)提交提示信息頁(yè)面
}}
判斷是不是重復(fù)提交關(guān)鍵是isTokenValid<request>這個(gè)方法,這個(gè)方法由struts提供,如果返回結(jié)果為true則表示正常提交,false則為重復(fù)提交。isTokenValid<request>這個(gè)方法實(shí)際上主要做了三件事,
1.判斷當(dāng)前會(huì)話是否過期,如果過期,直接返回false
HttpSessionsession=request.getSession<false>;
if<session==null>{
returnfalse;
}
2.然后再判斷當(dāng)前會(huì)話中是否存在令牌屬性"org.apache.struts.action.TOKEN",如果不存在,返回false
Stringsaved=<String>session.getAttribute<"org.apache.struts.action.TOKEN">;
if<saved==null>{
returnfalse;為什么令牌屬性"org.apache.struts.action.TOKEN"會(huì)不存在呢,那是因?yàn)楫?dāng)用戶正常提交后,會(huì)調(diào)用this.resetToken<request>;//清空當(dāng)前會(huì)話中的token值。也就是說resetToken<request>方法中調(diào)用了session.removeAttribute<"org.apache.struts.action.TOKEN">;當(dāng)用戶重復(fù)提交時(shí),我說了"this.saveToken<request>;//此方法在這里可要也可不要。",下面我們分析下,如果不調(diào)用這個(gè)方法,會(huì)話中就不會(huì)再重新保存token值,那么再刷新的時(shí)候,session中的token
值總是為null,isTokenValid<request>直接返回false,如果調(diào)用this.saveToken<request>的話,session中會(huì)重新添加token屬性值。這個(gè)時(shí)候isTokenValid<request>會(huì)進(jìn)行下面第三步的判斷。
3.從當(dāng)前會(huì)話中取得token的值與當(dāng)前request中得到的token值比較,相同返回true,不同返回false
Stringtoken=request.getParameter<"org.apache.struts.taglib.html.TOKEN">;
if<token==null>{
returnfalse;
returnsaved.equals<token>;如果是重復(fù)刷新,那么每次request中的令牌值都是一樣的,但每次刷新當(dāng)前會(huì)話中的令牌值都被重新替換了,所以會(huì)返回false注:使用struts的表單提交Token機(jī)制時(shí),提交的表單一定要寫成<html:form></html:form>這種形式,如果寫成<form></form>這種形式的話,盡管調(diào)用saveToken<request>方法也不會(huì)在當(dāng)前的<form></form>里面生成隱含表單,最終的結(jié)果都是"重復(fù)提交".動(dòng)態(tài)方法調(diào)用
在Struts2中動(dòng)態(tài)方法調(diào)用有三種方式,動(dòng)態(tài)方法調(diào)用就是為了解決一個(gè)Action對(duì)應(yīng)多個(gè)請(qǐng)求的處理,以免Action太多第一種方式:指定method屬性
這種方式我們前面已經(jīng)用到過,類似下面的配置就可以實(shí)現(xiàn)
<actionname="chainAction"class="chapter2.action.Chapter2Action"
method="chainAction">
<resultname="chainAction"type="chain">redirect</result>
</action>
<actionname="plainText"class="chapter2.action.Chapter2Action"
method="plainText">
<resultname="plainText"type="plainText">/WEB-INF/JspPage/chapter2/plaintext.jsp</result>
</action>第二種方式:感嘆號(hào)方式<需要開啟>,官網(wǎng)不推薦使用這種方式,建議大家不要使用.
用這種方式需要先開啟一個(gè)開關(guān)
<constantname="struts.enable.DynamicMethodInvocation"value="true"/>
將此常量設(shè)置為true,這種方式才能使用,使用見示例
Action
packagechapter3.action;publicclassChapter3Action{
publicStringresult1<>{
return"result1";
}
publicStringresult2<>{
return"result2";
}
}Jsp中訪問方式
<bod
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- IPQC培訓(xùn)資料教學(xué)課件
- 2026年中小銀行數(shù)據(jù)管理策略與實(shí)踐報(bào)告-
- 跨境電商2025年倉(cāng)儲(chǔ)管理服務(wù)協(xié)議
- 車場(chǎng)管理考試試題及答案
- 鋼廠環(huán)保考試題目及答案
- 2025-2026五年級(jí)音樂期末檢測(cè)試卷
- 2025-2026二年級(jí)音樂期末魯教版卷
- 2025-2026九年級(jí)道德與法治上學(xué)期測(cè)試卷
- 衛(wèi)生局基本建設(shè)管理制度
- 羽毛球衛(wèi)生管理制度
- 道路隔離護(hù)欄施工方案
- (2025年)軍隊(duì)文職考試面試真題及答案
- 新版-八年級(jí)上冊(cè)數(shù)學(xué)期末復(fù)習(xí)計(jì)算題15天沖刺練習(xí)(含答案)
- 2025智慧城市低空應(yīng)用人工智能安全白皮書
- 云南師大附中2026屆高三月考試卷(七)地理
- 通信管道施工質(zhì)量控制方案
- 仁愛科普版(2024)八年級(jí)上冊(cè)英語(yǔ)Unit1~Unit6單元話題作文練習(xí)題(含答案+范文)
- 安徽寧馬投資有限責(zé)任公司2025年招聘派遣制工作人員考試筆試模擬試題及答案解析
- 2024-2025學(xué)年云南省昆明市五華區(qū)高一上學(xué)期期末質(zhì)量監(jiān)測(cè)歷史試題(解析版)
- 建筑坍塌應(yīng)急救援規(guī)程
- 胰腺常見囊性腫瘤的CT診斷
評(píng)論
0/150
提交評(píng)論