第一篇:Struts 2期末考試
1、MVC模式(View-model-controller)
2、MVC模式的優(yōu)點:
(1)低耦合性。視圖層、模型層和控制層分離,很容易改變應用程序的數(shù)據(jù)層和業(yè)務規(guī)則,只需改變MVC的模型層就可以了。
(2)高重用性。多個視圖可以對應一個模型,這樣減少了代碼的重復性及維護量,一旦模型發(fā)生改變,也易于維護。
(3)可實用性。MVC允許使用各種不同的表現(xiàn)層技術來訪問同一個服務器端的代碼。如jsp、velocity等。(4)可維護性。3個模塊層相分離,是的web應用更易維護和修改。
3、model2模式下,模型用javaBean充當,視圖有jsp頁面充當,控制器由servlet充當。
4.struts2是在struts1的基礎上發(fā)展起來的,以webwork為核心,采用webwork的設計理念。Struts2是webwork的升級。
5、webwork是基于MVC架構(gòu)模式的J2EE Web框架,現(xiàn)在的最新版本被拆分為XWork和WebWork2兩個項目。WebWork的優(yōu)點:
(1)action不需要與WebWork耦合,提高了代碼的重用率。
(2)支持更多表現(xiàn)層技術,從而有更好的適用性。Webwork的特征:
(1)靈活的validation框架。運行開發(fā)者在XML文件中定義驗證內(nèi)容,在運行時通過interceptor自動應用,這樣可以脫離Action類。
(2)Interceptor。在action處理的前后實現(xiàn)動態(tài)攔截,簡化action代碼。(3)支持I18N(4)支持OGNL表達式語言
(5)Type Conversion.允許類之間很容易實現(xiàn)對象的轉(zhuǎn)換。(6)允許動態(tài)對象圖表遍歷和方法執(zhí)行,使用valuestack透明訪問多beans的屬性。
(7)Ioc容器。管理組件的生命周期,使客戶不需要通過創(chuàng)建注冊類獲得組件實例。
(8)velocity templates.使UI組件可重用,從而允許開發(fā)者很容易地定制Web頁面的look&feel。
(9)容易和第三方軟件集成。例如hibernate、spring和sitemesh。
(10)支持多種視圖技術。如jsp、velosity、freemarker和xml等。
6、struts2框架的大致處理流程:(1)客戶端瀏覽器發(fā)送一個請求。
(2)核心控制器filterdispatcher根據(jù)請求決定調(diào)用合適的action。
(3)webwork的攔截器鏈自動對請求應用通過功能,如驗證。
(4)回調(diào)action的execute()方法,該方法根據(jù)請求的參數(shù)來執(zhí)行一定的操作。
(5)execute()方法的處理結(jié)果信息將被輸出到瀏覽器中,struts2支持多種形式的視圖。如jsp、html。
7、web.xml xmlns=“http://java.sun.com/xml/ns/javaee” xmlns:xsi=“http://004km.cn/2001/XMLSchema-instance” xsi:schemaLocation=“http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”> org.apache.struts2.dispatcher.FilterDispatcher
ShowWords.java package action;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings(“serial”)
public class ShowWords extends ActionSupport{
private String name;private String words;
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public String getWords(){
return words;}
public void setWords(String words){
this.words = words;
}
public String execute(){
return INPUT;
}else{
words = “歡迎您:” + name;
return SUCCESS;
}
}
}(3)Struts.Xml
“-//Apache Software Foundation//DTD Struts Configuration 2.0//EN”
“http://struts.apache.org/dtds/struts-2.0.dtd”>
extends=“struts-default”>
class=“action.ShowWords”> name=“success”>/showWords.jsp name=“input”>/inputWords.jsp
8、核心控制器FilterDispatcher:
核心控制器是struts2框架的基礎,它包含了框架內(nèi)部的控制流程和處理機制。在web應用中,F(xiàn)ilterDispatcher作為一個filter運行,負責攔截所有的用戶請求。如果用戶請求以.action結(jié)尾,則該請求被轉(zhuǎn)入Struts框架處理。Struts2框架按模塊可以分為Servlet Filters、struts核心模塊、攔截器和用戶實現(xiàn)模塊。P33 Srtuts2框架處理一個請求的步驟:
(1)客戶端提交一個請求(HttpServletRequest).(2)請求被提交到一系列的過濾器(filter),首先提交ActionContextCleanUp然后提交到其他過濾器(SiteMesh等)最后提交到FilterDispatcher。
(3)FilterDispatcher詢問ActionMapper是否需要調(diào)用某個Action來處理這個請求。如果ActionMapper決定需要調(diào)用某個Action,則FilterDispatcher把請求的處理交給ActionProxy。
(4)ActionProxy通過Configuration Manager(struts.xml)詢問框架的配置文件,找到需要調(diào)用的Action類。(5)ActionProxy創(chuàng)建一個ActionInvocation實例,同時ActionInvocation通過代理模式調(diào)用Action,在調(diào)用之前,ActionInvocation會根據(jù)配置加載Action相關的所有攔截器。
(6)一旦Action執(zhí)行完畢,ActionInvocation負責根據(jù)struts.xml中的配置找到對應的返回結(jié)果。
9、使用
元素配置包時可以指定4個屬性。屬性名name,必選,指定包的名稱,該名稱是該包被其他包引用的key值。
屬性名extends,可選,指明該包繼承的其他包。用extends繼承包,父包在子包前定義。Struts.xml
“-//Apache Software Foundation//DTD Struts Configuration 2.0//EN”
“http://struts.apache.org/dtds/struts-2.0.dtd”>
value=“gb2312” /> class=“ActionClass1”> name=“success”>/success.jsp extends=“default” namespace=“/skill”> (1)dispatcher結(jié)果類型用來表示“轉(zhuǎn)發(fā)”到指定結(jié)果類型,它是Struts 2的默認結(jié)果類型。 (2)redirect結(jié)果類型用來“重定向”到指定的結(jié)果資源,該資源可以是JSP文件,也可以是Action類。(3)redirectAction結(jié)果類型也是重定向到其他資源,重新生成一個新的請求。(4)其他結(jié)果類型 1、簡述使用攔截的意義。 (1)通過攔截形式攔截器模塊,極大地提高了系統(tǒng)開發(fā)的靈活性和復用性,AOP使用代理的方式,將多個攔截器和核心業(yè)務邏輯組合在一起,滿業(yè)務需求。 (2)通過使用攔截器,可以使核心框架代碼比以前更加簡潔,使開發(fā)人員更加快捷地使用框架的特性。 2、簡述輸入校驗流程。(1)(2)客戶端校驗。 對請求的字符串參數(shù)進行類型轉(zhuǎn)換,并設置為對應的Action屬性值。 (3)如果類型轉(zhuǎn)換出現(xiàn)異常,將異常信息封裝到filedError中。 (4)調(diào)用Action的validateXxx()校驗方法,其中xxx()方法是Action中對應的處理邏輯方法。 (5)(6)調(diào)用Action類的validate()校驗方法。完成上面的步驟后,框架開始檢查在以上過程中是否產(chǎn)生了filedError,如果產(chǎn)生了,則返回邏輯視圖Input;反之,則返回處理方法中的邏輯視圖。 (7)系統(tǒng)根據(jù)上一步驟返回的邏輯視圖,結(jié)合struts.Xml文件的配置內(nèi)容。呈現(xiàn)相應的視圖頁面。 Struts2集成指南 關于Struts2 Struts是Apache軟件基金會(ASF)贊助的一個開源項目。它最初是Jakarta項目中的一個子項目,并在2004年3月成為ASF的頂級項目。它通過采用Java Servlet/JSP技術,實現(xiàn)了基于Java EE Web應用的Model-View-Controller〔MVC〕設計模式的應用框架〔Web Framework〕,是MVC經(jīng)典設計模式中的一個經(jīng)典產(chǎn)品。 Struts,a history 在Java EE的Web應用發(fā)展的初期,除了使用Servlet技術以外,普遍是在JavaServer Pages(JSP)的源代碼中,采用HTML與Java代碼混合的方式進行開發(fā)。因為這兩種方式不可避免的要把表現(xiàn)與業(yè)務邏輯代碼混合在一起,都給前期開發(fā)與后期維護帶來巨大的復雜度。為了擺脫上述的約束與局限,把業(yè)務邏輯代碼從表現(xiàn)層中清晰的分離出來,2000年,Craig McClanahan采用了MVC的設計模式開發(fā)Struts。后來該框架產(chǎn)品一度被認為是最廣泛、最流行JAVA的WEB應用框架。 Craig McClanahan 2006年,WebWork與Struts這兩個優(yōu)秀的Java EE Web框架(Web Framework〕的團體,決定合作共同開發(fā)一個新的,整合了WebWork與Struts優(yōu)點,并且更加優(yōu)雅、擴展性更強的框架,命名為“Struts 2”,原Struts的1.x版本產(chǎn)品稱為“Struts 1”。 至此,Struts項目并行提供與維護兩個主要版本的框架產(chǎn)品——Struts 1與Struts 2。Struts1 vs.Struts2 侵入性 Struts 1 在編程方面是面向抽象類編程,而不是面向接口編程。Struts 1要求自定義Action 類繼承一個特定的抽象基類Action。另一方面,Struts 1的 Action 依賴于 Servlet API,因為Struts 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 類可以實現(xiàn)一個Action接口,也可以實現(xiàn)其他接口,甚至不實現(xiàn)任何接口。這使得可選的和定制的服務成為可能。e.g.public class ExampleAction { public String doSomething(){ return “success”;} } 線程模式 Struts 1 Action類 是單例模式并且必須是線程安全的,因為在web容器中,僅有Action類 的一個實例來處理所有的請求。 Struts2 Web容器為每一個請求產(chǎn)生一個Action類實例,因此沒有線程安全問題??蓽y試性 Struts1 由于對Servlet API的依賴,使得針對于自定義Action類的測試變得復雜。 Struts2 由于自定義Action可以為POJO,所以可以向測試一個POJO一樣來測試Action類。 請求參數(shù)封裝 Struts1 使用ActionForm 對象封裝用戶的請求參數(shù),所有的 ActionForm 必須繼承一個基類:ActionForm。普通的JavaBean 不能用作ActionForm,并且需要在配置文件中定義ActionForm。e.g.public class LogonForm extends ActionForm { private String userpassword; private String username;} Struts2 直接使用Action屬性來封裝用戶請求屬性,避免了開發(fā)者需要大量開發(fā)ActionForm類的煩瑣,實際上,這些屬性還可以是包含子屬性的 Rich對象類型。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 表達式語言。JSTL有基本對象圖遍歷,但在對集合和索引屬性的支持上則功能不強。在向視圖綁定值時,Struts1 使用標準JSP 機制把對象綁定到視圖頁面。 Struts2 Struts 2 可以使用JSTL,但它整合了一種更強大和靈活的表達式語言:OGNL(Object Graph Notation Language),因此,Struts 2 下的表達式語言功能更加強大。在向視圖綁定值時,Struts2 使用“ValueStack ”技術,使標簽庫能夠訪問值,而不需要把對象和視圖頁面綁定在一起。 校驗框架 Struts1 Struts1 支持在 ActionForm 重寫validate 方法中手動校驗,或者通過整合 Commons-validator 框架來完成數(shù)據(jù)校驗。 Struts2 Struts 2 支持通過重寫validate方法進行校驗,也支持整合XWork 校驗框架進行校驗。Struts2 architacture 名詞約定 凡是代碼、配置文件、IDE中出現(xiàn)的名詞,均采用英文原稱。 Roadmap 本文檔的目標是,幫助讀者在Eclipse中將Struts2集成至一個嶄新的Dynamic Web Project。集成步驟大致如下:配置Struts2的代碼環(huán)境-> 在web.xml中加入Struts2功能-> 測試Struts2。文檔目標達成的標志是:頁面請求能夠通過Struts2的Action Mapping成功轉(zhuǎn)發(fā),并且基于Java的Struts2驗證框架能夠生效。 集成步驟 引入Struts2相關的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個jar文件,拷貝至WebContent/WEB-INF/lib下: 對于Web Dynamic Project,一般情況下,當你向lib目錄下copy了jar文件,eclipse會自動將jar文件加入build path下的名為Web App Libraries的Library。請確認在工程下出現(xiàn)了名為Web App Libraries的Library。如果有,說明這些jar文件已經(jīng)被添加至build path了: 如果在工程目錄下找不到名為Web App Libraries的Library,說明jar文件沒有被添加至build path,需要進行手動添加。首先進入build path設置界面,選中Libraries 頁,并點擊Add JARs: 在JAR Selection窗口中,選中l(wèi)ib下所有的jar文件。選中后點擊OK: 你將看到被選中的jar文件已經(jīng)被添加至build path: 在工程中會出現(xiàn)一個名為Referenced Libraries的Libraries。這說明jar文件已經(jīng)被添加至build path: 以上兩種方法都可以將jar文件添加至build path,它們的效果是一樣的。 配置web.xml 添加filter 在web.xml中添加一個filter: filter-name表示filter的名字,你可以任意決定這個名字。filter-class表示使用哪個類作為filter,從這個類的全稱來判斷,可以發(fā)現(xiàn)FilterDispatcher是Struts2提供的一個類。它是Struts2轉(zhuǎn)發(fā)請求的起點。在web.xml中添加一個filter-mapping: filter-mapping用來映射url和filter的映射關系。filter-name表示filter的名字,這個名字必須和之前filter聲明中的filter-name一致。url-pattern表示哪些格式的url會被此filter濾中。/*表示在此web應用域名下,所有的地址都會被filter濾中,換言之,所有的http請求都會通過Struts2進行轉(zhuǎn)發(fā)。 filter的作用 通過以上的配置,F(xiàn)ilterDispatcher和url與filter-name聯(lián)系在了一起。 由于在web容器中注冊了FilterDispatcher這個filter,Struts2可以收到所有http://localhost:8080/tyland-b2b 的http請求。隨后,F(xiàn)ilterDispatcher會根據(jù)我們定義的action-mapping規(guī)則,將請求分發(fā)到指定的action類以及它的攔截器棧。最后,Struts2按照action-mapping規(guī)則,將后臺計算的結(jié)果返回給指定頁面?;\統(tǒng)地來說,Struts2就是這樣工作的,所以說,F(xiàn)ilterDispatcher是Struts2工作的入口。 編寫代碼,測試Struts2 Struts2的環(huán)境已經(jīng)配置好了,基于action-mapping的轉(zhuǎn)發(fā)機制已經(jīng)可以運行了。為了證明這一點,請編寫一些測試jsp頁面和java代碼。 在編寫代碼的過程中,請確保代碼文件的位置如下圖所示: 代碼清單如下: Java代碼 UserVO.java package com.tyland.b2b.vo; // 一個Value Object(Data Model),用來存放用戶名、密碼 public class UserVO { private String username;private String password; // 成員變量password的getter方法。 // 在Strtus2中,用來在頁面和服務器間傳值的Value Object必須有getter方法 public String getPassword(){ return password; } } // 成員變量password的setter方法。 // 在Strtus2中,用來在頁面和服務器間傳值的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; // 為了代碼的靈活性和可擴展性,請聲明一個BaseAction基類 // BaseAction繼承Struts2的ActionSupport,因為我們想使用Struts2的一些額外幫助。// 對于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默認的action方法execute()// 由于繼承了ActionSupport,我們可以使用Struts2默認的校驗方法validate()public class UserAction extends BaseAction { private static final long serialVersionUID =-7***3684190L; // 用來在頁面和服務器之間傳遞用戶名、密碼的Value Object。變量名任意。 private UserVO userVO; 執(zhí)行。// 用來在頁面和服務器之間傳遞message變量。名稱任意。private String message;//用來在頁面和服務器之間傳遞sayHiTo變量。名稱任意。private String sayHiTo;// 用來傳值的變量必須有getter方法 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聲明說明這個方法復寫或?qū)崿F(xiàn)了父類或接口方法。 // 如action-mapping中不顯示指定別的方法,struts2會將execute()作為默認的action方法// 返回的SUCCESS常量,來自ActionSupport,值為“success”。 // action-mapping會根據(jù)不同的返回值采取不同的轉(zhuǎn)發(fā)或頁面跳轉(zhuǎn)動作。@Override public String execute()throws Exception { } System.out.println(“******execute******”);System.out.println(userVO.getUsername()+ “ logins”);return SUCCESS; // 在Struts2執(zhí)行execute()之前,會先執(zhí)行validateExecute()進行用戶輸入驗證 // 這個方法名必須符合Struts2驗證框架所規(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”);} // 一個自定義方法。通過在action-mapping中的設置,可以實現(xiàn)使用POJO的自定義服務配置 public String sayHi()throws Exception { } System.out.println(“say hi to ” + getSayHiTo());return SUCCESS;// 符合驗證框架命名規(guī)范的、真對于sayHi()的驗證方法 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介紹
第三篇:Struts2試題
Struts2 試題
1.struts2的執(zhí)行流程?
客戶端提交一個HttpServletRequest請求(action或JSP頁面)
請求被提交到一系列Filter過濾器,如ActionCleanUp和FiterDispatcher等
FilterDispatcher是Struts2控制器的核心,它通常是過濾器鏈中的最后一個過濾器 詢問ActionMapper是否需要調(diào)用某個action來處理
如果ActonMapper據(jù)誒的那個需要調(diào)用某個A傳統(tǒng),F(xiàn)ilterDispatcher則把請求教到ActionProxy,由其進行處理
ActionProxy通過Configuration Manager詢問框架配置文件,找到需要調(diào)用的Action類 ActionProxy創(chuàng)建一個ActionInvocation實例,而ActionInvocation通過代理模式調(diào)用action Action執(zhí)行完畢后,返回一個result字符串,此時再按相反的順序通過Interceptor攔截器 最后ActionInvocation負責根據(jù)struts配置文件中配置的result元素,找到與返回值對應的result
2.struts2的web里需要配置什么?
1.
3.struts.xml文件哪個常量可以實現(xiàn)不用重新啟動服務就可以得到反饋? ?
4.struts中的package的作用是什么?namespace可以為空嗎?如果namespace為空會意味著什么呢?
標識
可以、Timmer
如果沒寫,說明該包為默認空間 只要敲index沒有精確對應的package都交給namespackage 如果還沒有就崩潰
5.Action 的實現(xiàn)通集成常用那種方法? 一種是直接實現(xiàn)自己的Action 另一種是實現(xiàn)Action的接口 繼承ActionSupport
6.路徑設置用什么路徑,絕對還是相對? 都可以
7.通配符有幾種?要遵循什么原則? {1}
方法名
8.Action的屬性?
path屬性:指定請求訪問Action的路徑
type屬性:指定Action的完整類名
name屬性:指定需要傳遞給Action的ActionForm Bean scope屬性:指定ActionForm Bean的存放范圍
validate屬性:指定是否執(zhí)行表單驗證
input屬性:指定當表單驗證失敗時的轉(zhuǎn)發(fā)路徑。
9.用于讀取資源文件,實現(xiàn)國際化的Struts2的標簽(
10.一下關于struts的描述中,不正確的是(D)struts 是一個基于JAVA EE的MVC struts2的框架配置文件是struts-configxml struts2的控制組建核心包括核心控制和業(yè)務控制器
在struts中解決中文亂碼可以通過修改struts。I18n。encoding的值為GBK來實現(xiàn) 11.不屬于Struts2的動作類的常量返回值的是(C)
A.success
B.input
C.never
D.login 12.一下不屬于Struts2動作執(zhí)行的結(jié)果類型是(A)a.a(chǎn)ction b.redirect c.redirectAction d.dispatcher 13.在struts.xml中。假如在一個package中沒有配置namespace,那么在其中配置一個Action名字叫做login,它的result是這樣配置的
14.正規(guī)開發(fā)中,在使用struts2時定義Action使用哪種方式。B A.直接定義Action類。B.從ActionSupport繼承。C.從Action繼承。D.實現(xiàn)Action接口。
15.不同的線程在調(diào)用Action時創(chuàng)建幾個Action實例。C A.1個 B.2個
C.每個線程創(chuàng)建1個。D.可以自定義配置。
16.struts2的體系結(jié)構(gòu)主要包括那幾個部分(A)A.模型層
B.struts控制器組件 C。struts配置文件 D。struts標簽庫
17.struts提供了Action接口定義了5個標準字符串常量,不包括的有(C)A SUCCESS
B NONE C REG D LOGIN 18.struts中數(shù)據(jù)驗證失敗時,通過(B)標簽顯示錯誤信息。A
默認結(jié)果類型是dispatcher chain:Action鏈式處理的結(jié)果類型,也就是將結(jié)果轉(zhuǎn)發(fā)到這個action中。dispatcher:用于整合JSP的結(jié)果類型
redirect:實際上dispatcher和redirect的區(qū)別就是在于轉(zhuǎn)發(fā)和重定向的區(qū)別。redirect-action:重定向action
20.簡述struts2文件上傳的方法。
Commons FileUpload通過將HTTP的數(shù)據(jù)保存到臨時文件夾,然后Struts使用fileUpload攔截器將文件綁定到Action的實例中。從而我們就能夠以本地文件方式的操作瀏覽器上傳的文件。
21.在struts2標簽內(nèi)部 能否使用el表達式?
不可
22.struts2中result-type的chain和redirectAction的區(qū)別
chain,它是一個璉式的,是從一個Action轉(zhuǎn)發(fā)另外一個Aciton redirectAction,是從新請求一個Action
23.
24.action的name里邊寫的名字是什么地方用的? From 表單action引用
25.action的class里面寫的是什么? Action相應類的詳細路徑
26.action的extends里面調(diào)用的是什么?
從另外一個包繼承、相當于擁有即承包的所有配置
27.如果不寫action的后面mothod,默認的調(diào)用的方法是什么,如果寫的話,寫的時候有什么需要注意的?
不寫會默認調(diào)用最上面的方法
28.輸出值的strtus標簽是什么?
s:property
28.循環(huán)的struts標簽是什么?
s:iterator
29.判斷的strtuts標簽是什么?
s:if
30.顯示文本的strtuts標簽是什么?
31.要調(diào)用struts標簽需要導入什么? <%@taglib uri=“/struts-tags” prefix=“s”%>
32.如果需要調(diào)用sc:datetimepicker需要導入什么,sc代表的是什么意思?
33.
獲取前臺文本的值
34.請簡述前臺提交后是如何到達后臺action的。
通過from表單action找到struts配置文件相應action的類 再去找相應action類里的方法
第四篇:struts2課件
—高級軟件人才實作培訓專家!Struts2的啟動配置在struts1.x中,struts框架是通過Servlet啟動的。在struts2中,struts框架是通過Filter啟動的。他在web.xml中的配置如下:
—高級軟件人才實作培訓專家!Struts2的配置文件Struts2默認的配置文件為struts.xml,F(xiàn)ilterDispatcher過濾器在初始化時將會在WEB-INF/classes下尋找該文件,該文件的配置模版如下:
—高級軟件人才實作培訓專家!第一個Struts2應用Struts2默認的配置文件為struts.xml,F(xiàn)ilterDispatcher過濾器在初始化時將會在WEB-INF/classes下尋找該文件,該文件的配置模版如下:
—高級軟件人才實作培訓專家!第一個Struts2應用例子中使用到的/WEB-INF/page/hello.jsp如下:<%@ page language=“java” pageEncoding=“UTF-8”%>
第五篇:Struts2習題
Struts2習題1 1.struts中的package的作用是什么?namespace可以為空嗎?如果namespace為空會意味著什么呢?
標識、可以、如果沒寫,說明該包為默認空間 2.Action 的實現(xiàn)通集成常用那種方法? 一種是直接實現(xiàn)自己的Action 另一種是實現(xiàn)Action的接口 繼承ActionSupport 3.不屬于Struts2的動作類的常量返回值的是(C)
A.success
B.input
C.never
D.login 4.以下不屬于Struts2動作執(zhí)行的結(jié)果類型是(A)a.a(chǎn)ction b.redirect c.redirectAction d.dispatcher 5.在struts.xml中。假如在一個package中沒有配置namespace,那么在其中配置一個Action名字叫做login,它的result是這樣配置的
配置的
A A.在根路徑后輸入/login B.在根路徑后輸入/user/login C.在根路徑后輸入/login/user D.在根路徑后輸入/abc/login 6.正規(guī)開發(fā)中,在使用struts2時定義Action使用哪種方式。B A.直接定義Action類。B.從ActionSupport繼承。C.從Action繼承。D.實現(xiàn)Action接口。
7.不同的線程在調(diào)用Action時創(chuàng)建幾個Action實例。C A.1個 B.2個
C.每個線程創(chuàng)建1個。D.可以自定義配置。
8.struts提供了Action接口定義了5個標準字符串常量,不包括的有(C)A SUCCESS
B NONE C REG D LOGIN
9.列舉出action執(zhí)行結(jié)果類型,并說明用途。
默認結(jié)果類型是dispatcher chain:Action鏈式處理的結(jié)果類型,也就是將結(jié)果轉(zhuǎn)發(fā)到這個action中。
dispatcher:用于整合JSP的結(jié)果類型
redirect:實際上dispatcher和redirect的區(qū)別就是在于轉(zhuǎn)發(fā)和重定向的區(qū)別。
redirect-action:重定向action 10.struts2中result-type的chain和redirectAction的區(qū)別 chain,它是一個璉式的,是從一個Action轉(zhuǎn)發(fā)另外一個Aciton redirectAction,是從新請求一個Action 11.action的class里面寫的是什么? Action相應類的詳細路徑
12.action的extends里面調(diào)用的是什么?
從另外一個包繼承、相當于擁有即承包的所有配置
13.如果不寫action的后面mothod,默認的調(diào)用的方法是什么,如果寫的話,寫的時候有什么需要注意的?
不寫會默認調(diào)用最上面的方法
14.輸出值的strtus標簽是什么?
s:property
15.循環(huán)的struts標簽是什么?
s:iterator
15.判斷的strtuts標簽是什么?
s:if
16.顯示文本的strtuts標簽是什么?
17.請簡述前臺提交后是如何到達后臺action的。
通過form表單action找到struts配置文件相應action的類 再去找相應action類里的方法
Struts2習題2
一、填空題
1.Struts2框架由___________和___________框架發(fā)展而來。(Struts&WebWork)2.Struts2以___________為核心,采用___________的機制來處理用戶的請求。(WebWork,攔截器)
3.Struts2中的控制器類是一個普通的___________。Class或填過濾器類
二、選擇題
1.不屬于Action接口中定義的字符串常量的是___________。B A.SUCCESS B.FAILURE
C.ERROR D.INPUT 2.在控制器類中一般需要添加相應屬性的___________和___________。AC A.setter方法 B.a(chǎn)s方法 C.getter方法 D.is方法 3.控制器需要在___________配置文件中進行配置。B A.web.xml B.struts.xml C.struts2.xml D.webwork.xml 4.不屬于Struts 2表單標簽庫的是___________。D A.
三、簡答題
1、簡述什么是MVC?
MVC即模型-視圖-控制器.MVC是一種設計模式,它強制把應用程序的輸入處理和輸出分開.視圖是用戶看到并與之交互的界面。視圖向用戶顯示相關的數(shù)據(jù),并能接受用戶的輸入,但是它并不進行任何實際的業(yè)務處理。模型是應用程序的主體部分。模型表示業(yè)務數(shù)據(jù)和業(yè)務邏輯??刂破鹘邮苡脩舻妮斎氩⒄{(diào)用模型和視圖去完成用戶的需求
2、簡述servlet的生命周期。
Servlet被服務器實例化后,容器運行其init()方法,請求到達時運行其service()方法,service()方法自動派遣運行與請求對應的doGet、doPost方法等,當服務器決定將實例銷毀的時候調(diào)用其destroy方法