




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、PPT模板下載: 行業(yè)PPT模板: 節(jié)日PPT模板: PPT素材下載: PPT圖表下載: 優(yōu)秀PPT下載: PPT教程: Word教程: Excel教程: 資料下載: PPT課件下載: 范文下載: 試卷下載: 教案下載: Struts2是什么? 1.Struts2是一種基于MVC的輕量級的WEB應用框架。 2.所謂框架:就是能完成一定功能的半成品軟件,在沒有框架的時候,所有的工作都要從零做起,有了框架,它為我們提供了一定的功能,就可以在框架的基礎上做起,大大提高開發(fā)的效率和質量。 3.web應用框架,這說明struts2的應用范圍是web而不是在其他地方。換句話說:struts2更注重將web
2、應用領域的日常工作抽象化,為我們提供一個平臺,基于這個平臺快速的完成web應用開發(fā)。Struts2基本組成 由于struts2是由webwork和struts部分組合而成的。 與web相關的部分,也就是與servlet相關的部分,稱為struts2模塊。而與servlet無關的部分,叫xwork模塊。這個模塊用來處理用戶數據的轉換,動作調用之前的數據驗證、動作調用等。Struts2能干什么? 1.struts2通過簡單、集中的配置來調度動作類,使得配置和修改都非常容易。 2.struts2提供簡單、統(tǒng)一的表達式語言來訪問所有可供訪問的數據。 3.struts2提供內存式的數據中心,所有可供訪問
3、的數據都集中存放在內存中。 4所以在調用中不需要將數據傳來傳去,只要去這個內存數據中心訪問即可。 5.strut2提供在動作類執(zhí)行的前或后附加執(zhí)行一定功能的能力,能實現AOP. 6.struts2提供標準的,強大的驗證框架和國際化框架。Struts2與MVC 1.控制器-FilterDispatcher.用戶請求首先到達前端控制器FilterDispatcher.FilterDispatcher負責根據用戶提交的URL和struts.xml中的配置,來選擇合適的動作(Action),讓這個Action處理用戶的請求。 2.動作-Action 在用戶請求被前端控制器分發(fā)到合適的動作Action對
4、象,Action負責把用戶請求中的參數組裝成合適的數據模型,并調用相應的業(yè)務邏輯進行真正的功能處理,然后獲取下一個視圖展示所需要的 數據。 3.視圖Result 視圖結果用來把動作中獲取到的數據展現給用戶。Struts2核心概念 struts2的體系結構 Struts2的工作機制 從圖可以看出,一個請求在Struts2框架中的處理大概分為以下幾個步驟: 1、客戶端初始化一個指向Servlet容器(例如Tomcat)的請求; 2、這個請求經過一系列的過濾器(Filter)(這些過濾器中有一個叫做ActionContextCleanUp的可選過濾器,這個過濾器對于Struts2和其他框架的集成很有
5、幫助,例如:SiteMesh Plugin); 3、接著FilterDispatcher被調用,FilterDispatcher詢問ActionMapper來決定這個請求是否需要調用某個Action; 4、如果ActionMapper決定需要調用某個Action,FilterDispatcher把請求的處理交給ActionProxy; 5、ActionProxy通過Configuration Manager詢問框架的配置文件,找到需要調用的Action類; 6、ActionProxy創(chuàng)建一個ActionInvocation的實例。 7、ActionInvocation實例使用命名模式來調用,在
6、調用Action的過程前后,涉及到相關攔截器(Intercepter)的調用。 8、一旦Action執(zhí)行完畢,ActionInvocation負責根據struts.xml中的配置找到對應的返回結果。返回結果通常是(但不總是,也可能是另外的一個Action鏈)一個需要被表示的JSP或者FreeMarker的模版。在表示的過程中可以使用Struts2 框架中繼承的標簽。在這個過程中需要涉及到ActionMapper。 struts2配置文件 Struts2相關的配置文件有web.xml,struts.xml,perties, struts-default.xml,velocit
7、perties,struts-default.vm。其中web.xml,struts.xml是必須的,其它的配置文件可選擇。它們在web應用中的功能如下: web.xml:包含所有必須的框架組件的web部署描述符。 Struts.xml:配置包含result/view類型、action映射、攔截器等的Struts2的主要配置文件。 Sperties:配置struts2的框架屬性。 Struts-default.xml:在文件在struts-action-x.x.jar中,該文件是應該被包含在struts.xml中的缺省配置。 Wperties:
8、重寫了velocity的配置文件。 perties配置文件 perties文件是一個標準的Properties文件,該文件包含了系列的key-value對象,每個key就是一個Struts 2屬性,該key對應的value就是一個Struts 2屬性值. perties文件通常放在Web應用的WEB-INF/classes路徑下. 實際上, 只要將該文件放在Web應用的CLASSPATH路徑下, Struts 2框架就可以加載該文件. perties配置文件提供了一種改變框架默認行為的機制. 一般來講我們沒必要修改
9、這個文件,除非你想擁有一個更加友好的開發(fā)調試環(huán)境。perties文件中所包含的所有屬性都可以在web.xml配置文件中使用init-param標簽進行配置,或者在struts.xml文件中使用“constant”標簽進行配置. 一個名為“perties”的屬性文件包含在“Struts2-Core”JAR文件中。你可以在你項目源文件路徑的根目錄下創(chuàng)建一個名為“perties”的文件,來對某個屬性進行修改。這樣你就可以增加你想要修改的屬性。新的屬性值將會覆蓋默認值。 以下為perties中定義的Struts 2屬性:
10、 struts.devMode 該屬性設置Struts 2應用是否使用開發(fā)模式.如果設置該屬性為true,則可以在應用出錯時顯示更多、更友好的出錯提示.該屬性只接受true和flase兩個值,該屬性的默認值是false.通常,應用在開發(fā)階段,將該屬性設置為true,當進入產品發(fā)布階段后,則該屬性設置為false. struts.i18n.reload 該屬性設置是否每次HTTP請求到達時,系統(tǒng)都重新加載資源文件(允許國際化文件重載).該屬性默 認值是false.在開發(fā)階段將該屬性設置為true會更有利于開發(fā),但在產品發(fā)布階段應將該屬性設置為false. 提示:開發(fā)階段將該屬性設置了true,將
11、可以在每次請求時都重新加載國際化資源文件,從而可以讓開發(fā)者看到實時開發(fā)效果;產品發(fā)布階段應該將該屬性設置為false,是為了提供響應性能,每次請求都需要重新加載資源文件會大大降低應用的性能. struts.ui.theme 該屬性指定視圖標簽默認的視圖主題,該屬性的默認值是xhtml. struts.ui.templateDir 該屬性指定視圖主題所需要模板文件的位置, 該屬性的默認值是template,即默認加載template路徑下的模板文件. struts.configuration.xml.reload 該屬性設置當struts.xml文件改變后,系統(tǒng)是否自動重新加載該文件.該屬性的默
12、認值是false. struts.custom.i18n.resources 該屬性指定Struts 2應用所需要的國際化資源文件,如果有多份國際化資源文件,則多個資源文件的文件名以英文逗號(,)隔開. struts.xml常用配置解析 struts.xml文件主要負責管理應用中的Action映射,以及該Action包含的Result定義等。struts.xml內容主要包括:Action、Interceptor、Packages和Namespace等,下面將會詳細介紹如何配置這些元素 /result.jsp /result.jsp 1、使用標簽重用配置文件 在Struts2中提供了一個默認的s
13、truts.xml文件,但如果package、action、interceptors等配置比較多時,都放到一個struts.xml文件不太容易維護。因此,就需要將struts.xml文件分成多個配置文件,然后在struts.xml文件中使用標簽引用這些配置文件。這樣做的優(yōu)點如下: 結構更清晰,更容易維護配置信息。 配置文件可以復用。如果在多個Web程序中都使用類似或相同的配置文件,那么可以使用標簽來引用這些配置文件,這樣可以減少工作量。 假設有一個配置文件,文件名為newstruts.xml,代碼如下: /result.jsp /result.jsp 則struts.xml引用newstrut
14、s.xml文件的代碼如下: . 注意: 用引用的xml文件也必須是完成的struts2的配置。實際上在引用時是單獨解析xml文件,而不是將被引用的文件插入到struts.xml文件中。 struts-default.xml這個文件被包含在struts2-core.jar中,文件名已經可以看出這個文件的作用是struts.xml的默認配置,它將自動被加載后導入到struts.xml中去。 action配置 在默認情況下,Struts2會調用動作類的execute方法。但有些時候,需要在一個動作類中處理不同的動作。也就是用戶請求不同的動作時,執(zhí)行動作類中的不同的方法。為了達到這個目的,可以在標簽中
15、通過method方法指定要執(zhí)行的動作類的方法名,并且需要為不同的動作起不同的名子(也稱為別名)。如下面代碼所示: . . 上面代碼的兩個動作的class屬性都指向同一個類,name為這個類起了兩個動作別名:test和my。在動作my中,使用了method屬性指定要要運行的方法名為my。 在MyAction類中必須要有my方法,代碼如下: package action; import com.opensymphony.xwork2.ActionSupport; public class MyAction extends ActionSupport . public String execute(
16、) throws Exception / 處理test動作的代碼 public String my() throws Exception / 處理my動作的代碼 . 除了在struts.xml中配置別名,還可以通過請求參數來描述指定動作(并不需要在struts.xml中配置)。請求參數的格式如下: 除了在struts.xml中配置別名,還可以通過請求參數來描述指定動作(并不需要在struts.xml中配置)。請求參數的格式如下: 關于通過請求指定動作的詳細內容,請參閱前面的章節(jié)中有關處理一個form多個submit的部分。 在struts2中還可以為action指定一個或多個參數。大家還記著s
17、truts1.x是如何設置的action參數不? 在struts1.x中可以使用標簽的parameter屬性為其指定一個action參數,如果要指定多個,就只能通過逗號(,)或其他的分隔符將不同的參數隔開。而在struts2中可以通過標簽指定任意多個參數。代碼如下: value1 value2 /result.jsp . 當然,在action中讀這些參數也非常簡單,只需要象獲取請求參數一樣在action類中定義相應的setter方法即可(一般不用定義getter方法)。如下面的代碼將讀取param1和param2參數的值: public class MyAction extends Actio
18、nSupport private String param1; private String param2; public String execute() throws Exception System.out.println(param1 + param2); public void setParam1(String param1) this.param1 = param1; public void setParam2(String param2) this.param2 = param2; . 當struts2在調用execute之前,param1和param2的值就已經是相應參數的值了
19、,因此,在execute方法中可以直接使用param1和param2。 result配置 在默認時,標簽的type屬性值是“dispatcher”(實際上就是轉發(fā),forward)。開發(fā)人員可以根據自己的需要指定不同的類型,如redirect、stream等。如下面代碼所示: /result.jsp 如果第一個result的屬性省略了,struts2默認會把當作“success”。 這此result-type可以在struts2-core-.jar包或struts2源代碼中的struts-default.xml文件中找到,在這個文件中找到標簽,所有的result-type都在里
20、面定義了。代碼如下: result-type name=httpheader .有很多時候一個被很多使用,這時可以使用標簽來定義全局的,代碼如下: /result.jsp . . 如果中沒有相應的,Struts2就會使用全局的。 4、攔截器配置 Struts2的攔截器和Servlet過濾器類似。在執(zhí)行Action的execute方法之前,Struts2會首先執(zhí)行在struts.xml中引用的攔截器,在執(zhí)行完所有引用的攔截器的intercept方法后,會執(zhí)行Action的execute方法。 在使用攔截器的時候,在Action里面必須最后一定要引用struts2自帶的攔截器缺省堆棧default
21、Stack,如下(這里我是引用了struts2自帶的checkbox攔截器): 0 (必須加,否則出錯) 也可以改為對全局Action設置自己需要的攔截器,如下: 在struts.xml里面定義全局的配置設置 0 (這句是設置所有Action自動調用的攔截器堆棧) 也可以改為對全局Action設置自己需要的攔截器,如下: 在struts.xml里面定義全局的配置設置 0 (這句是設置所有Action自動調用的攔截器堆棧) struts-action.xml里面配置Action如下: (這里擴展struts.xml里面定義的配置就可以了) /jsp/smeishop/admin/index.js
22、p /jsp/smeishop/admin/logon.jsp /jsp/smeishop/admin/logon.jsp /jsp/smeishop/admin/logon.jsp 引用名既可以是攔截器名也可以是棧名。 5、包配置 使用package可以將邏輯上相關的一組Action,Result,Interceptor等組件分為一組,Package有些像對象,可以繼承其他的Package,也可以被其他package繼承,甚至可以定義抽象的Package。 Package的可以使用的屬性: 屬性 是否必須 說明 name 是 Package的表示,為了讓其他的package引用 extend
23、s 否 從哪個package繼承行為 namespace 否 參考Namespace配置說明 abstract 否 定義這個package為抽象的,這個package中不需要定義action 由于struts.xml文件是自上而下解析的,所以被繼承的package要放在繼承package的前邊。Namespace將action分成邏輯上的不同模塊,每一個模塊有自己獨立的前綴。使用namespace可以有效的避免action重名的沖突,例如每一個package都可以有自己獨立的Menu和Help action,但是事項方式各有不同。Struts2標簽帶有namespace選項,可以根據names
24、pace的不同向服務器提交不同的package的action的請求。 “/”表示根namespace,所有直接在應用程序上下文環(huán)境下的請求(Context)都在這個package中查找。 “”表示默認namespace,當所有的namespace中都找不到的時候就在這個namespace中尋找。 greeting.jsp bar1.jsp moo.jsp bar2.jsp 如果請求為/barspace/bar.action 查找namespace:/barspace,如果找到bar則執(zhí)行對應的action,否則將會查找默認的namespace,在上面的例子中,在barspace中存在名字為ba
25、r的action,所以這個action將會被執(zhí)行,如果返回結果為success,則畫面將定為到bar2.jsp 如果請求為/moo.action,則namespace(/)被查找,如果moo .action存在則執(zhí)行,否則查詢默認的namespace,上面的例子中,根namespace中存在moo action,所以該action被調用,返回success的情況下畫面將定位到moo.jsp。 Action配置 在struts2框架中每一個Action是一個工作單元。Action負責將一個請求對應到一個Action處理上去,每當一個Action類匹配一個請求的時候,這個Action類就會被Str
26、uts2框架調用。 一個Action配置示例: Menu /tutorial/Logon.jsp 每一個Action可以配置多個result. 每當struts2框架接受到一個請求的時候,它會去掉Host,Application和后綴等信息,得到Action的名字,如下的請求將得到Welcome這個Action。/struts2 /Welcome.action 在一個Struts2應用程序中,一個指向Action的鏈接通常有Struts Tag產生,這個Tag只需要指定Action的名字,Struts框架會自動添加諸如后綴等的擴展,例如: /s:form 將產
27、生一個如下的鏈接的請求: http:/Hostname:post/appname/Hello.action 在定義Action的名字的時候不要使用“.”和“/”,最好使用英文字母和下劃線。 Action的默認入口方法由xwork2的Action接口來定義,代碼清單為: public interface Action public String execute() throws Exception; 有些時候我們想指定一個Action的多個方法,我們可以做如下兩步: 步驟1、建立一些execute簽名相同的方法,例如: Public String forward() throws Excepti
28、on 步驟2、在Action配置的時候使用method屬性,例如: 默認情況下,當請求HelloWorld.action發(fā)生時,Struts運行時(Runtime)根據struts.xml里的Action映射集(Mapping),實例化tutoiral.HelloWorld類,并調用其execute方法。當然,可以通過以下兩種方法改變這種默認調用。 1、在classes/sturts.xml中新建Action,并指明其調用的方法; 2、訪問Action時,在Action名后加上“!xxx”(xxx為方法名)。 實現方法請參考例2: 在classes/ struts2demo/HelloWorl
29、d.java中加入以下方法: public String aliasAction() message =自定義Action調用方法; return SUCCESS; 1、在classes/sturts.xml中新建Action,并指明其調用的方法; 2、訪問Action時,在Action名后加上“!xxx”(xxx為方法名)。 實現方法請參考例2: 在classes/ struts2demo/HelloWorld.java中加入以下方法: public String aliasAction() message =自定義Action調用方法; return SUCCESS; 在classes/s
30、turts.xml中加入下面代碼: /HelloWorld.jsp 使用http:/localhost:8080/struts2demo/HelloWorld!aliasAction.action地址來訪問HelloWorld Action。 在瀏覽器地址欄中鍵入http:/localhost:8080/struts2demo/AliasHelloWorld.action或 http:/localhost:8080/ struts2demo /HelloWorld!aliasAction.action,可以看到如圖2所示頁面。 Action中的方法通配符 有些時候對Action中方法的調用滿足
31、一定的規(guī)律,例如edit Action對應edit方法,delete Action對應 delete方法,這個時候我們可以使用方法通配符,例如: 這時,editCrudAction的引用將調用edit方法,同理,deleteCrudAction的引用將調用delete 方法。 另外一種比較常用的方式是使用下劃線分割,例如: 這樣當遇到如下調用的時候可以找到對應的方法。 action=Crud_input = input方法 action=Crud_delete = delete方法 通配符和普通的配置具有相同的地位,可以結合使用框架的所有其他功能。 默認的Action 當我們沒有指定Actio
32、n的class屬性的時候,默認使用com.opensymphony.xwork.ActionSupport ActionSupport有兩個方法input和execute,每個方法都是簡單的返回SUCCESS。 通常情況下,請求的Action不存在的情況下,Struts2框架會返回一個Error畫面:“404 - Page not found”,有些時候或許我們不想出現一個控制之外的錯誤畫面,我們可以指定一個默認的Action,在請求的Action不存在的情況下,調用默認的Action,通過如下配置可以達到要求: /UnderConstruction.jsp /1.jsp 每個Action將會
33、被映射到以自己名字命名的JSP上。 表單驗證 使用Struts 2.0,表單數據的輸入將變得非常方便,和普通的POJO一樣在Action編寫Getter和Setter,然后在JSP的UI標志的name與其對應,在提交表單到Action時,就可以取得其值。 讓我們看一個例子,新建Login Action,它通過Login.jsp的表單獲得用戶名和密碼,驗查用戶名是否為“xmh”,密碼是否則為“xmh”。如果,兩者都符合,就在HelloWorld中顯示“Welcome, xmh”,否則顯示“Invalid user or Password”。 public class Login extends
34、ActionSupport private String name; private String password; private String message; 省略set/get方法 public String getMessage() return message; Override public String execute() if (xmh.equals(name) & xmh.equals(password) message = Welcome, + name; else message = Invalid user or password; return SUCCESS;
35、http:/localhost:8080/struts2demo/login.jsp,出現如圖4所示頁面。 分別在User name中輸入“xmh”和“xmh”,點擊“登錄”按鈕,出現如圖所示頁面。 在瀏覽器地址欄中鍵入http:/localhost:8080/Struts2demo/Login.jsp,分別在User name中輸入“123”和“123”,點擊“登錄”按鈕,出現如圖所示頁面。 Struts 2.0支持更高級的POJO訪問,如user.getPassword()。可以用另一寫法實現。首先,將name和password從Login類中分離出來,到新建類User中。這樣對開發(fā)多層系
36、統(tǒng)尤其有用。它可以使系統(tǒng)結構更清晰。 在上例的基礎上調整如下: public class User private String name; private String password; 省略相應的set/get方法 public class Login extends ActionSupport private User user; private String message; public String getMessage() return message; Override public String execute() if (xmh.equals(user.getName()
37、 & xmh.equals(user.getPassword() message = Welcome, + user.getName(); else message = Invalid user or password; return SUCCESS; public User getUser() return user; public void setUser(User user) this.user = user; 手動完成輸入校驗 1.重寫validate()方法 也是把校驗條件寫在validate()方法里面.這樣可以減少execute()或是自定義的action方法的代碼.struts
38、2在調用execte()方法時,會先執(zhí)行validate()方法.如果沒通過validate則會拋出fieldError,并返回name=input中定義的視圖.否則繼續(xù)執(zhí)行execute()方法. 輸入內容: msg.hello public class ValidateAction extends ActionSupport private String msg; public String execute() System.out.println(SUCCESS); return SUCCESS; public void validate() if (!msg.equalsIgnoreC
39、ase(hello) System.out.println(INPUT); this.addFieldError(msg.hello, 必須輸入hello!); this.addActionError(處理動作失敗!); else this.addActionMessage(提交成功); public String getMsg() return msg; public void setMsg(String msg) this.msg = msg; /validator.jsp /validator.jsp 重寫validateXXX()方法 如果輸入校驗只想校驗某個處理邏輯,也就是僅僅校驗某
40、個處理方法,則重寫validate方法顯然不夠,validate()方法無法知道需要校驗哪個處理邏輯。實際上,如果重寫了Action的validate方法,則該方法會校驗所有的處理邏輯。 為了實現校驗指定處理邏輯的功能,struts2的Action提供了一個validateXXX方法。XXX即是Action對應的處理邏輯方法。 例: public void validateSaveOrder() System.out.println(n test-); if(orderMain.getOrderTypeId() = 0) addFieldError(test,test); public cla
41、ss NewValidateAction extends ActionSupport private String msg; / 必須輸入 private Integer age; / 在13和20之間 省略相應的set/get方法 public void validateRegist() System.out.println(d匹配數字 +8.matches(d); if(msg=null|.equals(msg) addFieldError(msg,ValidateXXX方法:用戶名為必填項); if(age=null|age20) addFieldError(age,ValidateXX
42、X方法:年齡為必填項并且為數字,范圍在1320間); public String regist() return SUCCESS; /validate_form.jsp /validate_form.jsp 使用validate方法來驗證客戶端提交的數據,但如果使用validate方法就會將驗證代碼和正常的邏輯代碼混在一起,但這樣做不利于代碼維護,而且也很難將過些代碼用于其他程序的驗證。在Struts2中為我們提供了一個Validation框架,這個框架和Struts1.x提供的Validation框架類似,也是通過XML文件進行配置。 struts2框架實現數據校驗 【第1步】建立Actio
43、n類 創(chuàng)建action類,重寫execute()方法. 例如: ValidationAction.java public class ValidationAction extends ActionSupport private String requiredString; public String getRequiredString() return requiredString; public void setRequiredString(String requiredString) this.requiredString = requiredString; Override public
44、 String execute() return SUCCESS; 下面我們來驗證msg和age屬性。 【第2步】編寫驗證規(guī)則配置文件 這是一個基于XML的配置文件,一般放到和要驗證的.class文件在同一目錄下,而且配置文件名要使用如下兩個規(guī)則中的一個來命名: -validation.xml 其中就是struts.xml中的name屬性值。在本例中我們使用第一種命名規(guī)則,所以文件名是NewValidateAction-validation.xml。文件的內容如下: 在action的包下創(chuàng)建action-validation.xml文件. 例:ValidationAction-validati
45、on.xml(黑色部分代表相應的action類) This string is required 必填字段 這個文件使用了兩個規(guī)則:requiredstring(必須輸入)和int(確定整型范圍)。關于其他更詳細的驗證規(guī)則,請讀者訪問docs/validation.html來查看。 【第3步】配置Action類,struts.xml的代碼如下: 在struts.xml定義action類 Output.jsp Input.jsp 注:input參數代表校驗失敗應返回的頁面. 在Input.jsp頁面增加,這個是必需的,否則不會提示. 注:的用法: 表示顯示全部校驗信息 字段1表示只顯示字段1的校
46、驗信息 【第4步】編寫數據錄入JSP頁。 在Web根目錄中建立一個validate_form.jsp文件,代碼如下: 在上面的程序中還使用了一個styles.css來定制錯誤信息的風格。具體代碼參見styles.css文件。 使用如下的URL來測試這個程序: http:/localhost:8080/strutsValidate/validate_form.jsp package org.xmh.demo; import com.opensymphony.xwork2.ActionSupport; public class NewValidateAction extends ActionSup
47、port private String msg; / 必須輸入 private int age; / 在13和20之間 省略相應的set/get方法 /validate_form.jsp /validate_form.jsp 請輸入信息 13 20 必須在 13至20之間 國際化實現 程序國際化的設計的主要思想是:程序界面中需要輸出國際化信息的地方,不要在頁面中直接輸出信息,而是輸出一個key值,該key值在不同語言環(huán)境下對應不同的字符串。當程序需要顯示時,程序將根據不同的語言環(huán)境,加載該key對應該語言環(huán)境下的字符串這樣就可以完成程序的國際化。 頁面的國際化 Struts2的國際化實現更加方
48、便,下面通過修改login示例來說明它的相關用法。 步驟1、準備資源屬性文件。在src目錄下新建一個local包,把所有的資源文件放置其中,這里只創(chuàng)建兩種語言的資源文件:英文和中文的資源文件。如下圖所示。 message_en_US.properties的內容如下所示: =name login.pass=pass login.submit=submit login.succmessage=welcome login.erromessage=Invalid user or password 步驟2:頁面上使用國際化功能。struts2支持在JSP頁面中臨時加載資源文件,也支持通過全局屬性來加載資源文件,全局屬性加載資源文件就是通過 perties 文件來完成。 在頁面中臨時加載 全局加載 在classes文件夾下新建Sperties文件,設置全局屬性加載資源的路徑,如下圖所示。 或者打開struts.xml, 在的下面加如下一行配置: 頁面部分就毋須再使用標簽,上面的頁面部分就修改為: Login 發(fā)布應用程序,在IE中輸入訪問地址,調整IE所用的語言,當首選語言分別設置為“中文”和“英文”時,顯示的效果圖如下所示。 注意:如果在struts的屬性文件中設置struts.locale=zh_CN或str
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生宿舍管理服務采購
- 二零二五師范生公費教育協(xié)議書樣本
- 二零二五版全新夫妻婚內保證協(xié)議書
- 安檢服務業(yè)務合同
- 信用反擔保合同書二零二五年
- 瑜伽館專職老師合同模板二零二五年
- 產品合伙合同樣本
- 公會授權合同樣本
- 學習宣傳道德模范先進事跡活動方案
- 企業(yè)出售土地合同樣本
- 浙江省杭州市蕭山區(qū)2022-2023學年第二學期四年級科學期中試題(含答案)
- 2024年黑龍江出版集團招聘筆試真題
- 2025年上半年上海青浦新城發(fā)展(集團)限公司自主招聘9名易考易錯模擬試題(共500題)試卷后附參考答案
- 小學數學教學中錯題資源的有效利用研究論文
- 2025年山西電力職業(yè)技術學院單招職業(yè)技能考試題庫及答案1套
- 2025年高考預測猜題 化學 信息必刷卷02(新高考 通 用)(解析版)
- 3.2依法行使權利 課件 -2024-2025學年統(tǒng)編版道德與法治八年級下冊
- 五月菜油香(2024年寧夏中考語文試卷記敘文閱讀試題)
- 2025非小細胞肺癌中西醫(yī)結合診療指南
- 婦科圍手術期的護理
- 《智能輪椅的結構計算設計與選型案例綜述》3000字
評論
0/150
提交評論