第一篇:Struts2試題
Struts2 試題
1.struts2的執(zhí)行流程?
客戶端提交一個(gè)HttpServletRequest請(qǐng)求(action或JSP頁面)
請(qǐng)求被提交到一系列Filter過濾器,如ActionCleanUp和FiterDispatcher等
FilterDispatcher是Struts2控制器的核心,它通常是過濾器鏈中的最后一個(gè)過濾器 詢問ActionMapper是否需要調(diào)用某個(gè)action來處理
如果ActonMapper據(jù)誒的那個(gè)需要調(diào)用某個(gè)A傳統(tǒng),F(xiàn)ilterDispatcher則把請(qǐng)求教到ActionProxy,由其進(jìn)行處理
ActionProxy通過Configuration Manager詢問框架配置文件,找到需要調(diào)用的Action類 ActionProxy創(chuàng)建一個(gè)ActionInvocation實(shí)例,而ActionInvocation通過代理模式調(diào)用action Action執(zhí)行完畢后,返回一個(gè)result字符串,此時(shí)再按相反的順序通過Interceptor攔截器 最后ActionInvocation負(fù)責(zé)根據(jù)struts配置文件中配置的result元素,找到與返回值對(duì)應(yīng)的result
2.struts2的web里需要配置什么?
1.
3.struts.xml文件哪個(gè)常量可以實(shí)現(xiàn)不用重新啟動(dòng)服務(wù)就可以得到反饋? ?
4.struts中的package的作用是什么?namespace可以為空嗎?如果namespace為空會(huì)意味著什么呢?
標(biāo)識(shí)
可以、Timmer
如果沒寫,說明該包為默認(rèn)空間 只要敲index沒有精確對(duì)應(yīng)的package都交給namespackage 如果還沒有就崩潰
5.Action 的實(shí)現(xiàn)通集成常用那種方法? 一種是直接實(shí)現(xiàn)自己的Action 另一種是實(shí)現(xiàn)Action的接口 繼承ActionSupport
6.路徑設(shè)置用什么路徑,絕對(duì)還是相對(duì)? 都可以
7.通配符有幾種?要遵循什么原則? {1}
方法名
8.Action的屬性?
path屬性:指定請(qǐng)求訪問Action的路徑
type屬性:指定Action的完整類名
name屬性:指定需要傳遞給Action的ActionForm Bean scope屬性:指定ActionForm Bean的存放范圍
validate屬性:指定是否執(zhí)行表單驗(yàn)證
input屬性:指定當(dāng)表單驗(yàn)證失敗時(shí)的轉(zhuǎn)發(fā)路徑。
9.用于讀取資源文件,實(shí)現(xiàn)國際化的Struts2的標(biāo)簽(
10.一下關(guān)于struts的描述中,不正確的是(D)struts 是一個(gè)基于JAVA EE的MVC struts2的框架配置文件是struts-configxml struts2的控制組建核心包括核心控制和業(yè)務(wù)控制器
在struts中解決中文亂碼可以通過修改struts。I18n。encoding的值為GBK來實(shí)現(xiàn) 11.不屬于Struts2的動(dòng)作類的常量返回值的是(C)
A.success
B.input
C.never
D.login 12.一下不屬于Struts2動(dòng)作執(zhí)行的結(jié)果類型是(A)a.a(chǎn)ction b.redirect c.redirectAction d.dispatcher 13.在struts.xml中。假如在一個(gè)package中沒有配置namespace,那么在其中配置一個(gè)Action名字叫做login,它的result是這樣配置的
14.正規(guī)開發(fā)中,在使用struts2時(shí)定義Action使用哪種方式。B A.直接定義Action類。B.從ActionSupport繼承。C.從Action繼承。D.實(shí)現(xiàn)Action接口。
15.不同的線程在調(diào)用Action時(shí)創(chuàng)建幾個(gè)Action實(shí)例。C A.1個(gè) B.2個(gè)
C.每個(gè)線程創(chuàng)建1個(gè)。D.可以自定義配置。
16.struts2的體系結(jié)構(gòu)主要包括那幾個(gè)部分(A)A.模型層
B.struts控制器組件 C。struts配置文件 D。struts標(biāo)簽庫
17.struts提供了Action接口定義了5個(gè)標(biāo)準(zhǔn)字符串常量,不包括的有(C)A SUCCESS
B NONE C REG D LOGIN 18.struts中數(shù)據(jù)驗(yàn)證失敗時(shí),通過(B)標(biāo)簽顯示錯(cuò)誤信息。A
默認(rèn)結(jié)果類型是dispatcher chain:Action鏈?zhǔn)教幚淼慕Y(jié)果類型,也就是將結(jié)果轉(zhuǎn)發(fā)到這個(gè)action中。dispatcher:用于整合JSP的結(jié)果類型
redirect:實(shí)際上dispatcher和redirect的區(qū)別就是在于轉(zhuǎn)發(fā)和重定向的區(qū)別。redirect-action:重定向action
20.簡述struts2文件上傳的方法。
Commons FileUpload通過將HTTP的數(shù)據(jù)保存到臨時(shí)文件夾,然后Struts使用fileUpload攔截器將文件綁定到Action的實(shí)例中。從而我們就能夠以本地文件方式的操作瀏覽器上傳的文件。
21.在struts2標(biāo)簽內(nèi)部 能否使用el表達(dá)式?
不可
22.struts2中result-type的chain和redirectAction的區(qū)別
chain,它是一個(gè)璉式的,是從一個(gè)Action轉(zhuǎn)發(fā)另外一個(gè)Aciton redirectAction,是從新請(qǐng)求一個(gè)Action
23.
24.action的name里邊寫的名字是什么地方用的? From 表單action引用
25.action的class里面寫的是什么? Action相應(yīng)類的詳細(xì)路徑
26.action的extends里面調(diào)用的是什么?
從另外一個(gè)包繼承、相當(dāng)于擁有即承包的所有配置
27.如果不寫action的后面mothod,默認(rèn)的調(diào)用的方法是什么,如果寫的話,寫的時(shí)候有什么需要注意的?
不寫會(huì)默認(rèn)調(diào)用最上面的方法
28.輸出值的strtus標(biāo)簽是什么?
s:property
28.循環(huán)的struts標(biāo)簽是什么?
s:iterator
29.判斷的strtuts標(biāo)簽是什么?
s:if
30.顯示文本的strtuts標(biāo)簽是什么?
31.要調(diào)用struts標(biāo)簽需要導(dǎo)入什么? <%@taglib uri=“/struts-tags” prefix=“s”%>
32.如果需要調(diào)用sc:datetimepicker需要導(dǎo)入什么,sc代表的是什么意思?
33.
獲取前臺(tái)文本的值
34.請(qǐng)簡述前臺(tái)提交后是如何到達(dá)后臺(tái)action的。
通過from表單action找到struts配置文件相應(yīng)action的類 再去找相應(yīng)action類里的方法
第二篇:Struts2介紹
Struts2集成指南
關(guān)于Struts2 Struts是Apache軟件基金會(huì)(ASF)贊助的一個(gè)開源項(xiàng)目。它最初是Jakarta項(xiàng)目中的一個(gè)子項(xiàng)目,并在2004年3月成為ASF的頂級(jí)項(xiàng)目。它通過采用Java Servlet/JSP技術(shù),實(shí)現(xiàn)了基于Java EE Web應(yīng)用的Model-View-Controller〔MVC〕設(shè)計(jì)模式的應(yīng)用框架〔Web Framework〕,是MVC經(jīng)典設(shè)計(jì)模式中的一個(gè)經(jīng)典產(chǎn)品。
Struts,a history 在Java EE的Web應(yīng)用發(fā)展的初期,除了使用Servlet技術(shù)以外,普遍是在JavaServer Pages(JSP)的源代碼中,采用HTML與Java代碼混合的方式進(jìn)行開發(fā)。因?yàn)檫@兩種方式不可避免的要把表現(xiàn)與業(yè)務(wù)邏輯代碼混合在一起,都給前期開發(fā)與后期維護(hù)帶來巨大的復(fù)雜度。為了擺脫上述的約束與局限,把業(yè)務(wù)邏輯代碼從表現(xiàn)層中清晰的分離出來,2000年,Craig McClanahan采用了MVC的設(shè)計(jì)模式開發(fā)Struts。后來該框架產(chǎn)品一度被認(rèn)為是最廣泛、最流行JAVA的WEB應(yīng)用框架。
Craig McClanahan 2006年,WebWork與Struts這兩個(gè)優(yōu)秀的Java EE Web框架(Web Framework〕的團(tuán)體,決定合作共同開發(fā)一個(gè)新的,整合了WebWork與Struts優(yōu)點(diǎn),并且更加優(yōu)雅、擴(kuò)展性更強(qiáng)的框架,命名為“Struts 2”,原Struts的1.x版本產(chǎn)品稱為“Struts 1”。
至此,Struts項(xiàng)目并行提供與維護(hù)兩個(gè)主要版本的框架產(chǎn)品——Struts 1與Struts 2。Struts1 vs.Struts2 侵入性
Struts 1 在編程方面是面向抽象類編程,而不是面向接口編程。Struts 1要求自定義Action 類繼承一個(gè)特定的抽象基類Action。另一方面,Struts 1的 Action 依賴于 Servlet API,因?yàn)镾truts 1 Action 的execute 方法中有HttpServletRequest 和HttpServletResponse 方法。例如 e.g.public class LogonAction extends Action {
public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
} }
Struts 2 Action 類可以實(shí)現(xiàn)一個(gè)Action接口,也可以實(shí)現(xiàn)其他接口,甚至不實(shí)現(xiàn)任何接口。這使得可選的和定制的服務(wù)成為可能。e.g.public class ExampleAction {
public String doSomething(){
return “success”;} }
線程模式
Struts 1 Action類 是單例模式并且必須是線程安全的,因?yàn)樵趙eb容器中,僅有Action類 的一個(gè)實(shí)例來處理所有的請(qǐng)求。
Struts2 Web容器為每一個(gè)請(qǐng)求產(chǎn)生一個(gè)Action類實(shí)例,因此沒有線程安全問題。可測試性
Struts1 由于對(duì)Servlet API的依賴,使得針對(duì)于自定義Action類的測試變得復(fù)雜。
Struts2 由于自定義Action可以為POJO,所以可以向測試一個(gè)POJO一樣來測試Action類。
請(qǐng)求參數(shù)封裝
Struts1 使用ActionForm 對(duì)象封裝用戶的請(qǐng)求參數(shù),所有的 ActionForm 必須繼承一個(gè)基類:ActionForm。普通的JavaBean 不能用作ActionForm,并且需要在配置文件中定義ActionForm。e.g.public class LogonForm extends ActionForm {
private String userpassword;
private String username;}
Struts2 直接使用Action屬性來封裝用戶請(qǐng)求屬性,避免了開發(fā)者需要大量開發(fā)ActionForm類的煩瑣,實(shí)際上,這些屬性還可以是包含子屬性的 Rich對(duì)象類型。e.g.public class ExampleAction {
private String responseMessage;private String requestMessage;
public String getResponseMessage(){
return responseMessage;}
public void setResponseMessage(String responseMessage){
this.responseMessage = responseMessage;}
public String getRequestMessage(){
return requestMessage;
} } public void setRequestMessage(String requestMessage){ } this.requestMessage = requestMessage;public String doSomething(){
} setMessage(“Hi, ” + getRequestMessage());return “success”;EL Struts1 整合了 JSTL,因此可以使用JSTL 表達(dá)式語言。JSTL有基本對(duì)象圖遍歷,但在對(duì)集合和索引屬性的支持上則功能不強(qiáng)。在向視圖綁定值時(shí),Struts1 使用標(biāo)準(zhǔn)JSP 機(jī)制把對(duì)象綁定到視圖頁面。
Struts2 Struts 2 可以使用JSTL,但它整合了一種更強(qiáng)大和靈活的表達(dá)式語言:OGNL(Object Graph Notation Language),因此,Struts 2 下的表達(dá)式語言功能更加強(qiáng)大。在向視圖綁定值時(shí),Struts2 使用“ValueStack ”技術(shù),使標(biāo)簽庫能夠訪問值,而不需要把對(duì)象和視圖頁面綁定在一起。
校驗(yàn)框架
Struts1 Struts1 支持在 ActionForm 重寫validate 方法中手動(dòng)校驗(yàn),或者通過整合 Commons-validator 框架來完成數(shù)據(jù)校驗(yàn)。
Struts2 Struts 2 支持通過重寫validate方法進(jìn)行校驗(yàn),也支持整合XWork 校驗(yàn)框架進(jìn)行校驗(yàn)。Struts2 architacture
名詞約定
凡是代碼、配置文件、IDE中出現(xiàn)的名詞,均采用英文原稱。
Roadmap 本文檔的目標(biāo)是,幫助讀者在Eclipse中將Struts2集成至一個(gè)嶄新的Dynamic Web Project。集成步驟大致如下:配置Struts2的代碼環(huán)境-> 在web.xml中加入Struts2功能-> 測試Struts2。文檔目標(biāo)達(dá)成的標(biāo)志是:頁面請(qǐng)求能夠通過Struts2的Action Mapping成功轉(zhuǎn)發(fā),并且基于Java的Struts2驗(yàn)證框架能夠生效。
集成步驟
引入Struts2相關(guān)的jar文件
Struts2 jars ? ? ? ? ? ? ? ? ? ? commons-fileupload-1.2.2.jar commons-io-2.1.jar commons-lang-2.4.jar commons-logging-1.1.1.jar freemarker-2.3.16.jar javassist.jar jstl-1.2.jar ognl-3.0.1.jar struts2-core-2.2.3.jar xwork-core-2.2.3.jar 加入build path 將以上10個(gè)jar文件,拷貝至WebContent/WEB-INF/lib下:
對(duì)于Web Dynamic Project,一般情況下,當(dāng)你向lib目錄下copy了jar文件,eclipse會(huì)自動(dòng)將jar文件加入build path下的名為Web App Libraries的Library。請(qǐng)確認(rèn)在工程下出現(xiàn)了名為Web App Libraries的Library。如果有,說明這些jar文件已經(jīng)被添加至build path了:
如果在工程目錄下找不到名為Web App Libraries的Library,說明jar文件沒有被添加至build path,需要進(jìn)行手動(dòng)添加。首先進(jìn)入build path設(shè)置界面,選中Libraries 頁,并點(diǎn)擊Add JARs:
在JAR Selection窗口中,選中l(wèi)ib下所有的jar文件。選中后點(diǎn)擊OK:
你將看到被選中的jar文件已經(jīng)被添加至build path:
在工程中會(huì)出現(xiàn)一個(gè)名為Referenced Libraries的Libraries。這說明jar文件已經(jīng)被添加至build path:
以上兩種方法都可以將jar文件添加至build path,它們的效果是一樣的。
配置web.xml 添加filter 在web.xml中添加一個(gè)filter:
filter-name表示filter的名字,你可以任意決定這個(gè)名字。filter-class表示使用哪個(gè)類作為filter,從這個(gè)類的全稱來判斷,可以發(fā)現(xiàn)FilterDispatcher是Struts2提供的一個(gè)類。它是Struts2轉(zhuǎn)發(fā)請(qǐng)求的起點(diǎn)。在web.xml中添加一個(gè)filter-mapping:
filter-mapping用來映射url和filter的映射關(guān)系。filter-name表示filter的名字,這個(gè)名字必須和之前filter聲明中的filter-name一致。url-pattern表示哪些格式的url會(huì)被此filter濾中。/*表示在此web應(yīng)用域名下,所有的地址都會(huì)被filter濾中,換言之,所有的http請(qǐng)求都會(huì)通過Struts2進(jìn)行轉(zhuǎn)發(fā)。
filter的作用
通過以上的配置,F(xiàn)ilterDispatcher和url與filter-name聯(lián)系在了一起。
由于在web容器中注冊(cè)了FilterDispatcher這個(gè)filter,Struts2可以收到所有http://localhost:8080/tyland-b2b 的http請(qǐng)求。隨后,F(xiàn)ilterDispatcher會(huì)根據(jù)我們定義的action-mapping規(guī)則,將請(qǐng)求分發(fā)到指定的action類以及它的攔截器棧。最后,Struts2按照action-mapping規(guī)則,將后臺(tái)計(jì)算的結(jié)果返回給指定頁面。籠統(tǒng)地來說,Struts2就是這樣工作的,所以說,F(xiàn)ilterDispatcher是Struts2工作的入口。
編寫代碼,測試Struts2 Struts2的環(huán)境已經(jīng)配置好了,基于action-mapping的轉(zhuǎn)發(fā)機(jī)制已經(jīng)可以運(yùn)行了。為了證明這一點(diǎn),請(qǐng)編寫一些測試jsp頁面和java代碼。
在編寫代碼的過程中,請(qǐng)確保代碼文件的位置如下圖所示:
代碼清單如下:
Java代碼
UserVO.java package com.tyland.b2b.vo;
// 一個(gè)Value Object(Data Model),用來存放用戶名、密碼 public class UserVO {
private String username;private String password;
// 成員變量password的getter方法。
// 在Strtus2中,用來在頁面和服務(wù)器間傳值的Value Object必須有g(shù)etter方法
public String getPassword(){
return password;
} } // 成員變量password的setter方法。
// 在Strtus2中,用來在頁面和服務(wù)器間傳值的Value Object必須有setter方法 public void setPassword(String password){ } this.password = password;// 同password
public String getUsername(){ } return username;// 同password
public void setUsername(String username){ } this.username = username;BaseAction.java package com.tyland.b2b.web.base;
import com.opensymphony.xwork2.ActionSupport;
// 為了代碼的靈活性和可擴(kuò)展性,請(qǐng)聲明一個(gè)BaseAction基類
// BaseAction繼承Struts2的ActionSupport,因?yàn)槲覀兿胧褂肧truts2的一些額外幫助。// 對(duì)于ActionSupport的繼承不是必須的
public class BaseAction extends ActionSupport {
private static final long serialVersionUID = ***74952195L;} UserAction.java package com.tyland.b2b.web;
import com.tyland.b2b.vo.UserVO;import com.tyland.b2b.web.base.BaseAction;
// 自定義的Action類,繼承BaseAction // 由于繼承了ActionSupport,我們可以使用Struts2默認(rèn)的action方法execute()// 由于繼承了ActionSupport,我們可以使用Struts2默認(rèn)的校驗(yàn)方法validate()public class UserAction extends BaseAction {
private static final long serialVersionUID =-7***3684190L;
// 用來在頁面和服務(wù)器之間傳遞用戶名、密碼的Value Object。變量名任意。
private UserVO userVO;
執(zhí)行。// 用來在頁面和服務(wù)器之間傳遞message變量。名稱任意。private String message;//用來在頁面和服務(wù)器之間傳遞sayHiTo變量。名稱任意。private String sayHiTo;// 用來傳值的變量必須有g(shù)etter方法 public UserVO getUserVO(){ return userVO;}
//用來傳值的變量必須有setter方法
public void setUserVO(UserVO userVO){ } this.userVO = userVO;public String getMessage(){ } return message;public void setMessage(String message){ } this.message = message;public String getSayHiTo(){ } return sayHiTo;public void setSayHiTo(String sayHiTo){ } this.sayHiTo = sayHiTo;// Override聲明說明這個(gè)方法復(fù)寫或?qū)崿F(xiàn)了父類或接口方法。
// 如action-mapping中不顯示指定別的方法,struts2會(huì)將execute()作為默認(rèn)的action方法// 返回的SUCCESS常量,來自ActionSupport,值為“success”。
// action-mapping會(huì)根據(jù)不同的返回值采取不同的轉(zhuǎn)發(fā)或頁面跳轉(zhuǎn)動(dòng)作。@Override
public String execute()throws Exception {
} System.out.println(“******execute******”);System.out.println(userVO.getUsername()+ “ logins”);return SUCCESS;
// 在Struts2執(zhí)行execute()之前,會(huì)先執(zhí)行validateExecute()進(jìn)行用戶輸入驗(yàn)證 // 這個(gè)方法名必須符合Struts2驗(yàn)證框架所規(guī)定的命名規(guī)范 public void validateExecute(){
}
} System.out.println(“******validateExecute******” + userVO.getUsername());if(null == userVO.getUsername()|| userVO.getUsername().length()< 5){ this.addFieldError(“username”, “USERNAME ERROR”);} if(null == userVO.getPassword()|| userVO.getPassword().length()< 5){ this.addFieldError(“password”, “PASSWORD ERROR”);} // 一個(gè)自定義方法。通過在action-mapping中的設(shè)置,可以實(shí)現(xiàn)使用POJO的自定義服務(wù)配置 public String sayHi()throws Exception {
} System.out.println(“say hi to ” + getSayHiTo());return SUCCESS;// 符合驗(yàn)證框架命名規(guī)范的、真對(duì)于sayHi()的驗(yàn)證方法 public void validateSayHi(){
} System.out.println(“******validateSayHi******” + getSayHiTo());if(null == getSayHiTo()|| getSayHiTo().length()< 5){ this.addFieldError(“sayHiTo”, “SAYHITO ERROR”);} ExampleAction.java package com.tyland.b2b.web;
import com.tyland.b2b.web.base.BaseAction;
public class ExampleAction extends BaseAction {
private static final long serialVersionUID =-***7281L;
private String message;private String sayHiTo;
public String getMessage(){
return message;}
public void setMessage(String message){
this.message = message;}
public String getSayHiTo(){
return sayHiTo;}
} public void setSayHiTo(String sayHiTo){ } this.sayHiTo = sayHiTo;public String finish(){
} System.out.println(“example finished”);setMessage(getSayHiTo());return SUCCESS;JSP代碼
index.jsp <%@ page language=“java” contentType=“text/html;charset=UTF-8”
pageEncoding=“UTF-8”%>
<%@ taglib uri = “http://java.sun.com/jsp/jstl/core” prefix = “c” %>
第三篇:struts2課件
—高級(jí)軟件人才實(shí)作培訓(xùn)專家!Struts2的啟動(dòng)配置在struts1.x中,struts框架是通過Servlet啟動(dòng)的。在struts2中,struts框架是通過Filter啟動(dòng)的。他在web.xml中的配置如下:
—高級(jí)軟件人才實(shí)作培訓(xùn)專家!Struts2的配置文件Struts2默認(rèn)的配置文件為struts.xml,F(xiàn)ilterDispatcher過濾器在初始化時(shí)將會(huì)在WEB-INF/classes下尋找該文件,該文件的配置模版如下:
—高級(jí)軟件人才實(shí)作培訓(xùn)專家!第一個(gè)Struts2應(yīng)用Struts2默認(rèn)的配置文件為struts.xml,F(xiàn)ilterDispatcher過濾器在初始化時(shí)將會(huì)在WEB-INF/classes下尋找該文件,該文件的配置模版如下:
—高級(jí)軟件人才實(shí)作培訓(xùn)專家!第一個(gè)Struts2應(yīng)用例子中使用到的/WEB-INF/page/hello.jsp如下:<%@ page language=“java” pageEncoding=“UTF-8”%>
第四篇:Struts2習(xí)題
Struts2習(xí)題1 1.struts中的package的作用是什么?namespace可以為空嗎?如果namespace為空會(huì)意味著什么呢?
標(biāo)識(shí)、可以、如果沒寫,說明該包為默認(rèn)空間 2.Action 的實(shí)現(xiàn)通集成常用那種方法? 一種是直接實(shí)現(xiàn)自己的Action 另一種是實(shí)現(xiàn)Action的接口 繼承ActionSupport 3.不屬于Struts2的動(dòng)作類的常量返回值的是(C)
A.success
B.input
C.never
D.login 4.以下不屬于Struts2動(dòng)作執(zhí)行的結(jié)果類型是(A)a.a(chǎn)ction b.redirect c.redirectAction d.dispatcher 5.在struts.xml中。假如在一個(gè)package中沒有配置namespace,那么在其中配置一個(gè)Action名字叫做login,它的result是這樣配置的
配置的
A A.在根路徑后輸入/login B.在根路徑后輸入/user/login C.在根路徑后輸入/login/user D.在根路徑后輸入/abc/login 6.正規(guī)開發(fā)中,在使用struts2時(shí)定義Action使用哪種方式。B A.直接定義Action類。B.從ActionSupport繼承。C.從Action繼承。D.實(shí)現(xiàn)Action接口。
7.不同的線程在調(diào)用Action時(shí)創(chuàng)建幾個(gè)Action實(shí)例。C A.1個(gè) B.2個(gè)
C.每個(gè)線程創(chuàng)建1個(gè)。D.可以自定義配置。
8.struts提供了Action接口定義了5個(gè)標(biāo)準(zhǔn)字符串常量,不包括的有(C)A SUCCESS
B NONE C REG D LOGIN
9.列舉出action執(zhí)行結(jié)果類型,并說明用途。
默認(rèn)結(jié)果類型是dispatcher chain:Action鏈?zhǔn)教幚淼慕Y(jié)果類型,也就是將結(jié)果轉(zhuǎn)發(fā)到這個(gè)action中。
dispatcher:用于整合JSP的結(jié)果類型
redirect:實(shí)際上dispatcher和redirect的區(qū)別就是在于轉(zhuǎn)發(fā)和重定向的區(qū)別。
redirect-action:重定向action 10.struts2中result-type的chain和redirectAction的區(qū)別 chain,它是一個(gè)璉式的,是從一個(gè)Action轉(zhuǎn)發(fā)另外一個(gè)Aciton redirectAction,是從新請(qǐng)求一個(gè)Action 11.action的class里面寫的是什么? Action相應(yīng)類的詳細(xì)路徑
12.action的extends里面調(diào)用的是什么?
從另外一個(gè)包繼承、相當(dāng)于擁有即承包的所有配置
13.如果不寫action的后面mothod,默認(rèn)的調(diào)用的方法是什么,如果寫的話,寫的時(shí)候有什么需要注意的?
不寫會(huì)默認(rèn)調(diào)用最上面的方法
14.輸出值的strtus標(biāo)簽是什么?
s:property
15.循環(huán)的struts標(biāo)簽是什么?
s:iterator
15.判斷的strtuts標(biāo)簽是什么?
s:if
16.顯示文本的strtuts標(biāo)簽是什么?
17.請(qǐng)簡述前臺(tái)提交后是如何到達(dá)后臺(tái)action的。
通過form表單action找到struts配置文件相應(yīng)action的類 再去找相應(yīng)action類里的方法
Struts2習(xí)題2
一、填空題
1.Struts2框架由___________和___________框架發(fā)展而來。(Struts&WebWork)2.Struts2以___________為核心,采用___________的機(jī)制來處理用戶的請(qǐng)求。(WebWork,攔截器)
3.Struts2中的控制器類是一個(gè)普通的___________。Class或填過濾器類
二、選擇題
1.不屬于Action接口中定義的字符串常量的是___________。B A.SUCCESS B.FAILURE
C.ERROR D.INPUT 2.在控制器類中一般需要添加相應(yīng)屬性的___________和___________。AC A.setter方法 B.a(chǎn)s方法 C.getter方法 D.is方法 3.控制器需要在___________配置文件中進(jìn)行配置。B A.web.xml B.struts.xml C.struts2.xml D.webwork.xml 4.不屬于Struts 2表單標(biāo)簽庫的是___________。D A.
三、簡答題
1、簡述什么是MVC?
MVC即模型-視圖-控制器.MVC是一種設(shè)計(jì)模式,它強(qiáng)制把應(yīng)用程序的輸入處理和輸出分開.視圖是用戶看到并與之交互的界面。視圖向用戶顯示相關(guān)的數(shù)據(jù),并能接受用戶的輸入,但是它并不進(jìn)行任何實(shí)際的業(yè)務(wù)處理。模型是應(yīng)用程序的主體部分。模型表示業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)邏輯。控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求
2、簡述servlet的生命周期。
Servlet被服務(wù)器實(shí)例化后,容器運(yùn)行其init()方法,請(qǐng)求到達(dá)時(shí)運(yùn)行其service()方法,service()方法自動(dòng)派遣運(yùn)行與請(qǐng)求對(duì)應(yīng)的doGet、doPost方法等,當(dāng)服務(wù)器決定將實(shí)例銷毀的時(shí)候調(diào)用其destroy方法
第五篇:struts2復(fù)習(xí)題(含答案)
Struts2復(fù)習(xí)題
1.以下屬于struts2的控制器組件是:
A.Action
B.ActionForm C.ActionServlet D.dispatchAction 2.以下屬于struts2配置文件中的配置元素是:(多選)A.
B.
A.struts1要求Action類繼承struts1框架中的Action父類,struts2中則不一定需要繼承,可以是POJO類
B.struts1中的Action不是線程安全的,而struts2中的Action是線程安全的
D.struts1使用OGNL表達(dá)式語言來支持頁面效果,struts2通過ValueStack技術(shù)使標(biāo)簽庫訪問值
4.以下關(guān)于ValueStack說法正確的是:(多選)B.每個(gè)Action對(duì)象實(shí)例擁有多個(gè)ValueStack對(duì)象
C.Action中封裝了需要傳入下一個(gè)頁面的值,Action對(duì)象封裝在ValueStack對(duì)象中 D.ValueStack會(huì)在請(qǐng)求開始時(shí)被創(chuàng)建,請(qǐng)求結(jié)束時(shí)消亡 5.關(guān)于struts2配置文件說法正確的是:
A.必須在WEB-INF/classes目錄下
B.名字必須為struts.xml C.配置Action時(shí),必須配置包信息 D.使用
B.struts2框架定義包時(shí)必須指定name屬性
D.struts2框架中使用包來管理Action
8.struts2中獲取Servlet API的方法正確的是:(多選)A.使用ActionContext對(duì)象以解耦合的方法訪問Servlet API B.使用ServletActionContext對(duì)象以解耦合的方式訪問Servlet API C.使用ActionContext對(duì)象以耦合的方式訪問Servlet API D.使用ServletActionContext對(duì)象以耦合的方式訪問Servlet API 9.struts2動(dòng)態(tài)方法調(diào)用的格式為: A.ActionName?methodName.action B.ActionName!methodName.action C.ActionName*methodName.action D.ActionName@mathodName.action 10.如果要實(shí)現(xiàn)struts2的數(shù)據(jù)校驗(yàn)功能 A.普通Action類可以實(shí)現(xiàn) B.繼承自Action接口可以實(shí)現(xiàn)
C.繼承自ActionSupport類可以實(shí)現(xiàn) D.繼承自ActionValidate類可以實(shí)現(xiàn) 11.如果要實(shí)現(xiàn)自定義處理結(jié)果,需繼承那個(gè)類 A.Dispathcer
B.StrutsResultSupport C.Support D.Action 12.實(shí)現(xiàn)動(dòng)態(tài)返回結(jié)果,在配置
D.${“屬性名”} 13.用于實(shí)現(xiàn)國際化的struts2標(biāo)簽是:
A.
B.
D.
A.dispatcher
B.redirect C.chain
D.forward 15.自定義轉(zhuǎn)換器繼承的抽象類是:
A.Converter B.TypeConverter C.StrutsTypeConverterD.DefaultTypeConverter 16.自定義轉(zhuǎn)換器的注冊(cè)方式有:
A.只有全局注冊(cè)方式 B.只有局部注冊(cè)方式
C.只有全局和局部注冊(cè)方式
D.以上說法都不對(duì) 17.自定義攔截器類的方式有:(多選)A.實(shí)現(xiàn)Interceptor接口
B.實(shí)現(xiàn)AbstractInterceptor接口 C.繼承Interceptor類D.繼承AbstractInterceptor類 18.在struts.xml文件中,使用()元素定義攔截器
A.
C.
D.bean標(biāo)簽 21.以下哪個(gè)標(biāo)簽是struts2中的用于循環(huán)迭代: A.
C.
a)過濾器 b)攔截器 c)類型轉(zhuǎn)換器 d)配置文件 23.24.Struts2框架由()和()框架發(fā)展而來的【選擇二項(xiàng)】
a)Hibernate b)Struts 1 c)Spring d)WebWork 25.Struts2以(B)為核心,采用()的機(jī)制處理用戶請(qǐng)求
a)Struts b)攔截器 c)jar包
26.struts2中,不屬于Action接口中定義的字符串常量的是()
a)SUCCESS b)FAILURE c)ERROR d)INPUT 27.struts2在控制器類中一般需要添加相應(yīng)屬性的()和()【選擇二項(xiàng)】
a)setter方法 b)as方法 c)getter方法 d)is方法
28.struts2控制器需要在()配置文件中進(jìn)行配置
a)web.xml b)struts.xml c)application.porperties d)webwork.xml 29.不屬于struts2標(biāo)簽庫的是()
a)
a)
a)txt b)doc c)property d)properties 32.a)b)c)d)33.a)b)c)d)34.a)b)c)d)35.a)struts2自定義類型轉(zhuǎn)換器必須實(shí)現(xiàn)的接口是()Convert TypeConverter StrutsTypeConverter StrutsConvert struts2關(guān)于注冊(cè)全局類型轉(zhuǎn)換器的說法正確的是()【選擇二項(xiàng)】 必須提供xwork-conversion.properties文件
注冊(cè)文件的格式為:復(fù)合類型=對(duì)應(yīng)類型轉(zhuǎn)換器 注冊(cè)文件的格式為:對(duì)應(yīng)類型轉(zhuǎn)換器=復(fù)合類型 以上說法都不正確
struts2自定義攔截器中的“return invocation.invoke()”代碼表示()【選擇二項(xiàng)】 不執(zhí)行目標(biāo)Action的方法,直接返回 執(zhí)行目標(biāo)Action的方法
在自定義攔截器中,該代碼是必需的 在自定義攔截器中,該代碼是可選的
struts2中,以下配置文件上傳攔截器只允許上傳bmp圖片文件的代碼,正確的是()
image/bmp b)c)d)36.a)b)c)d)37.a)b)c)d)38.39.a)b)c)d)40.a)b)c)d)41.a)b)c)d)42.a)b)c)d)43.a)b)c)d)
*.bmp
bmp
image/*.bmp 以下關(guān)于OGNL的說法正確的是()【選擇二項(xiàng)】 ActionContext是OGNL的上下文環(huán)境 StackContext是OGNL的上下文環(huán)境 ValueStack是OGNL的根 ActionContext是OGNL的根
假設(shè)在Session中存在名為uid屬性,通過OGNL訪問該屬性,正確的代碼是()#uid #session.uid uid ${session.uid}
假設(shè)在某JSP頁面中存在”
編譯JSP頁面時(shí)不會(huì)出現(xiàn)錯(cuò)誤,但頁面不會(huì)顯示任何內(nèi)容 該代碼用于輸出位于ValueStack(值棧)棧頂?shù)膶?duì)象 以上說法都不正確
struts2默認(rèn)的處理結(jié)果類型是()dispatcher redirect chain 以上說法都不正確
下列選項(xiàng)中,關(guān)于Struts2配置文件說法正確的是()必須置于WEB-INF/classes目錄下 必須為Struts.xml 配置Action時(shí)必須配置包信息 使用
下列選項(xiàng)中,關(guān)于Struts2的Action說法正確的是()【選擇二項(xiàng)】 struts2會(huì)為每一個(gè)請(qǐng)求創(chuàng)建一個(gè)對(duì)應(yīng)的Action實(shí)例 struts2在請(qǐng)求處理過程中,只有一個(gè)Action實(shí)例 struts2通過屬性來封裝用戶請(qǐng)求參數(shù)
在struts2中定義的屬性都用于封裝用戶請(qǐng)求參數(shù) struts2中動(dòng)態(tài)方法調(diào)用的格式為()ActionName_methodName.do ActionName!methodName.do ActionName_methodName.action ActionName!methodName.action
問答題:MVC是什么含義?