當前位置:首頁 » 操作系統 » struts源碼解析

struts源碼解析

發布時間: 2022-05-28 14:45:48

⑴ struts2原理

因為你用Struts2時候要在web.xml里配置Struts2的過濾器,應該是StrutsPrepareAndExecuteFilter。請求都會通過這個過濾器都會轉給Struts2來處理。Struts2再應用自己的攔截器來交給Action處理。之前你配的過濾器是其它的而不是Struts2的。至於好處,那你應該了解Struts2有什麼好處。Struts2核心組件是攔截器,真正要了解的話還需要深入學習。

⑵ 想看看struts2的源碼,但是不知道從哪裡開始,各位牛人指點指點

了通信,現在也上大三
我現在也是在自學java,學了2年,可以自己做作小項目,並且目前現在也在學日語。
我覺得既然你有2樣特長,可以和我一樣將來搞對日軟體外包,為此你要有日語基礎(2級非常好,說明你沒有浪費時間),我現在正在為二級准備中,同時學習java,雖然你現在大三,但是全身心投入進來還是OK的,我建議你的路線是:java張孝祥視頻教程-->《深入體驗java web開發內幕》共2本,張孝祥說實話,講得不錯,我可不是托兒,卡發平台建議你初期用Jcreator,然後就是JBuilder或者eclipse(myeclipse)

看完這些以後,試著做做小項目。

沒問題的,我看好你,呵呵。

一緒に頑張りましょう!!

⑶ Struts國際化詳解

國際化 盡管國際化不是重點內容,但是也有必要了解它的使用。在struts2中國際化有三種級別:分別是針對某個Action的action級別,針對package的package級別,針對webapp的webapp級別。下面我們建立 struts2i18n 項目 來演示國際化在struts2中的使用。 1.action級別下的國際化 步驟一、首先是建立login.jsp及LoginAction,由於它們經常使用,在此省去它們的代碼。 步驟二、建立資源文件,由於LoginAction在com.asm包中,所以我們應在com.asm包下我們建立兩個資源文件:一個是中文LoginAction_zh_CN.properties、一個是英文LoginAction_zh_CN.properties。注意它們的名字相對固定,前面與Action的名字相同,後面是語言和國家代碼。 英文資源文件內容如下: login_page=login page login_username=userName login_password=password login_sex=sex login_male=male login_female=female login_submit=login login_reset=reset login_suc=Welcome {0} 中文資源文件,需要特別注意:我們應使用Myeclipse自帶的MyEclipse properties Editer編輯器來打開此資源文件,並在properties視圖下進行編輯,這樣它會把中文進行編碼(我們切換到source視圖下可以看到經編碼後的中文)。 這一步非常重要,否則會出現亂碼。 步驟三,修改login.jsp中的內容: <%@ page language="java" pageEncoding="utf-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <html> <body> <s:text name="login_page"/><br> <s:label key="login_username"/> <s:form action="/login.action" method="post"> <!-- <s:textfield label="用戶名" name="username" required="true" /> --> <s:textfield label="%{getText('login_username')}" name="username" /> <!-- <s:password label="密碼" name="password" required="true"/> --> <s:password key="login_password" name="password" /> <!-- <s:radio list="#{1:'男',2:'女'}" value="1" label="性別" name="sex" /> --> <s:radio list="#{1:getText('login_male'),2:getText('login_female')}" value="1" label="%{getText('login_sex')}" name="sex" /> <s:submit key="login_submit" /> <s:reset key="login_reset"/> </s:form> </body> </html> 說明:對資源文件的引用,我們採取了兩種方式:有的是通過在label中使用%{getText('資源文件中的key')}這樣的形式,有的是通過key=資源文件中的key這種形式。需要注意在radio標簽中list對資源文件的引用。另外需要注意: <s:text name="login_page"/><br> <s:label key="login_username"/> 它們的區別:前面是純文本,後者是一個塊。我們可以通過查看login.jsp的源碼來證明。 步驟四、當我們直接訪問login.jsp時會報錯,因為在login.jsp中用到了資源文件,而資源文件又依賴於LoginAction,所以我們只能通過此Action來跳到login.jsp。但是使用包范圍、全局范圍的資源文件時,可以直接訪問login.jsp文件實現國際化。操作步驟如下: 首先在LoginAction中增加一個方法: public String doGoLogin() { return LOGIN; } 隨後再在struts.xml中配置如下內容: <package name="i18n" extends="struts-default" namespace="/"> <action name="login" class="com.asm.LoginAction"> <result name="success">success.jsp</result> <result name="login">login.jsp</result> </action> </package> 接著再編寫一個link.jsp頁面,內容如下: <a href="<%=request.getContextPath() %>/login!goLogin.action">登錄</a> 直接訪問Action中的方法格式:doX(大寫)xxx ---- ActionName!x(小寫)xxx.action 注意此方法和前面二.7中相關方法的區別。 我們通過此Action跳轉到login.jsp這樣便能成功訪問到login.jsp頁面。 步驟五、在success.jsp中使用資源文件,主要內容如下: <s:text name="login_suc"> <s:param value="%{username}"></s:param> </s:text> 說明:在前面的資源文件中,我們配置了login_suc=Welcome {0} ,其中{0}表示佔位參數,這里我們使用<s:param>來給此參數賦值。 步驟六、測試:在ie的internet選項中改變語言實現國際化的訪問。 2.配置package的資源文件 同樣在建立com.asm包下建立兩個資源文件(package級別的資源文件名必須以package開頭):取名為:package_zh_CN.properties,它的內容為: pack=pack屬性值 和package_en_US.properties,它的內容為: pack=packageAttributeValue 然後再在login.jsp頁面中增加如下內容: <h4>測試包資源文件</h4> <s:text name="pack"></s:text> 這樣便完成了package級別的資源文件配置,最後發布測試。 3.app級別的資源文件 在src目錄下建立兩個資源文件,取名為myapp_en_US.properties,它的內容為: a pp=appAttributeValue 和myapp_zh_CN.properties,它的內容為: 然後還需要在strust.xml中增加如下配置: <constant name="struts.custom.i18n.resources" value="myapp"></constant> 注意 :name是固定值,而value來自於這個資源文件的基名。 最後在login.jsp中增加如下內容: <h4>測試app級別資源文件</h4> <s:text name="app"></s:text> 這樣便完成了app級別的資源文件配置,隨後發布測試。 說明: action級的資源文件優先順序別最高,app最低。Pack級別的資源文件可作用於同一個包,app級別的資源文件可作用於當前項目。 補充:在jsp頁面中直接訪問某個資源文件,struts2為我們提供了i18n標簽,使用此標簽我們可以在類路徑下直接從某個資源文件中獲取國際化數據,而無需任何配置: <s:i18n name="XXX"> --xxx為類路徑下資源文件的基名 <s:text name=""> <s:param></s:param> </s:text> </s:i18n> 而如果要訪問的資源文件在類路徑的某個包下(如action或package級別的資源文件),可以這樣訪問: <s:i18n name="com/asm/資源文件基名">--com.asm為包名 4.使用資源文件的原理 我們建立ReadResourceFileTest類,代碼如下: package com.asm; import java.util.Locale; import java.util.ResourceBundle; public class ReadResourceFileTest { public static void main(String[] args) { ResourceBundle rb=ResourceBundle.getBundle("com.asm.LoginAction", Locale.US); System.out.println(rb.getString("login_suc")); } } 補充:在Action類(必須繼承自ActionSupport)中獲取資源文件的值的方法,可以使用如下代碼: String value = this .getText("資源文件的鍵名"); //獲取資源文件的對應的值。如果想給資源文件中的佔位符賦值,可以使用getText的重載方法。 ActionContext.getContext().put("XXX",value);//存放在request范圍,供jsp獲取此值 5.選擇使用資源文件 其實在我們成功訪問到login.jsp頁面後,只要在地址欄中增加參數request_locale=en_US便可以正確切換到登錄頁面為英文。當然我們可以再鏈接根據此參數寫這個資源文件的鏈接。當然我們也可藉助一個新Action來實現,操作步驟如下:在login.jsp中增加如下代碼: <a href="change.action?request_locale=zh_CN"> <s:text name="chinese"></s:text> </a> <a href="change.action?request_locale=en_US"> <s:text name="english"></s:text> </a> change.action對應的配置為: <action name="change" class="com.asm.ChangeLangAction"> <result>/login.jsp</result> </action> ChangeLangAction的主要代碼如下: package com.asm; public class ChangeLangAction extends ActionSupport { public String execute() throws Exception { return SUCCESS; } } 以上是第一種方法, 特別要注意 ,由於使用了不同Action,所以要資源文件這時只有pack級別和app級別的才起作用,所以這時還應把action級別的資源文件內容增加到app級別的資源文件中去。下面使用第二種方法,原理基本和上面一樣,只需在此ChangeLangAction中增加一個新的欄位String lang及相應的get/set方法,再增加一個新的方法changeLang,代碼如下: public String changeLang() throws Exception { Locale locale = null ; System.out.println(lang); if (lang.equals("zh")) { // 顯示中文 locale = Locale.CHINA; System.out.println("======" + lang+locale); } else { // 顯示英文 locale = Locale.US; } ActionContext.getContext().setLocale(locale); ServletActionContext.getRequest().getSession().setAttribute("WW_TRANS_I18N_LOCALE", locale); return SUCCESS; } 配置內容為: <action name="cl" class="com.asm.ChangeLangAction" method="changeLang"> <result>/login.jsp</result> </action> 在login.jsp中對應的鏈接為: <a href="cl.action?lang=zh"> <s:text name="chinese"></s:text> </a> <a href="cl.action?lang=en"> <s:text name="english"></s:text> </a> 這樣操作後,當我們成功訪問到login.jsp後,便可以點擊鏈接來隨意切換訪問英文或中文頁面。

⑷ 關於structs2的源碼,哪位大神能看懂,麻煩給每行寫上注釋,急!!!!!

FileTable程序
package org.model;//包名稱
public class FileTable {//類定義
private int id;//定義id私有變數
private String filename;//定義文件名私有變數
private String fileindex;//定義文件索引變數
private String format;//定義格式
public int getId() { // 定義讀取id方法
return id; //返回id的值}
public void setId(int id) {//定義id賦值方法
this.id = id; //給id賦值
}
public String getFilename() {//定義讀取文件名方法
return filename;//返迴文件名
}
public void setFilename(String filename) {//定義設置文件名方法
this.filename = filename;//文件名賦值
}
public String getFileindex() {//定義得到文件索引方法
return fileindex;//返迴文件索引
}
public void setFileindex(String fileindex) {//定義文件索引設置方法
this.fileindex = fileindex;//對文件名進行賦值
}
public String getFormat() {//定義得到格式方法
return format;//返回格式值
}
public void setFormat(String format) {//定義文件格式賦值方法
this.format = format;//對文件格式進行賦值
}
}

LYTable程序

package org.model;//包名稱
import java.sql.Date;//引用庫文件
public class LyTable {//類定義
private int id;//聲明id私有變數
private int userId;//聲明userid變數
private String title;//聲明title私有變數
private String content;///聲明content私有變數
public int getId() {;//定義返回id值得方法
return id;//返回id的值
}
public void setId(int id) {//定義id設置方法
this.id = id;//放回id的值
}
public int getUserId() {//定義得到userid的方法
return userId;//返回userid的值
}
public void setUserId(int userId) {//定義userid賦值方法
this.userId = userId;//設置userid的值
}

public String getTitle() {//定義得到title的方法
return title;//放回title的值
}
public void setTitle(String title) {//定義設置title的方法
this.title = title;//對title進行賦值
}
public String getContent() {//定義得到content值的方法
return content;//返回content的值

ublic void setContent(String content) {//定義設置content的值得方法
ontent = content;//對content的值進行修改

⑸ 風中葉老師的SPRING和struts2視頻源碼分析視頻能分享一下不謝謝

我正在學。
在看langsin的風中葉。
感覺還不錯。

裡面帶著兩個PDF:
Practical.Apache.Struts2.Web.2.0.Projects.pdf
Manning.Struts.2.in.Action.May.2008.pdf
但是都是英文版。

在國內有人寫了關於Struts2的書。

⑹ 求Struts的源碼

版本struts-2.0.11.1: http://apache.mirror.phpchina.com/struts/binaries/struts-2.0.11.1-all.zip
版本struts-1.3.8:
http://apache.mirror.phpchina.com/struts/binaries/struts-1.3.8-all.zip
版本struts-1.3.9beta:
http://apache.mirror.phpchina.com/struts/binaries/struts-1.3.9-all.zip

⑺ 怎麼使用Subversion來獲取Struts 2的源代碼

首先,Struts 2的源代碼完全沒必要用Subversion來獲取,Apache網站上有直接下源碼的鏈接。
如果你要用Subversion,一般需要在Eclipse里下一個插件叫Subclipse,然後新建工程"Project from SVN Repository...",把網站提供的Subversion地址(http ... 或svn://....)填上,等待代碼下載就行了。
看你的圖,估計是代碼地址填的不對,換一個重新試試吧。

⑻ 求:《Java開源項目:Spring+Hibernate+Struts項目開發詳解》的源碼

這本書的網站不提供下載嗎?
去 偶要雷鋒看看吧

⑼ Struts是什麼

Struts是最早的MVC開源框架,它是apache組織基於MVC模式開發的開源的單點控制的web應用框架(framework)。

Struts最早是作為Apache Jakarta項目的組成部分,項目的創立者希望通過對該項目的研究,改進和提高JavaServer Pages 、Servlet、標簽庫以及面向對象的技術水準。Struts這個名字來源於在建築和舊式飛機中使用的支持金屬架。這個框架之所以叫"Struts",是為了提醒我們記住那些支撐我們房屋,建築,橋梁,甚至我們踩高蹺時候的基礎支撐。這也是一個解釋Struts在開發Web應用程序中所扮演的角色的精彩描述。當建立一個物理建築時,建築工程師使用支柱為建築的每一層提供支持。同樣,軟體工程師使用Struts為業務應用的每一層提供支持。它的目的是為了幫助我們減少在運用MVC設計模型來開發Web應用的時間。我們仍然需要學習和應用該架構,不過它將可以完成其中一些繁重的工作。如果想混合使用Servlets和JSP的優點來建立可擴展的應用,Struts是一個不錯的選擇。

⑽ Struts1和Struts2的源代碼,給ActionForm賦值的問題

先通過getParameter方法然後賦值給actionForm的屬性!

熱點內容
安卓和csharp哪個發展好 發布:2024-05-18 18:09:30 瀏覽:526
換編程題庫 發布:2024-05-18 18:00:58 瀏覽:562
如何使用伺服器ip直連網站 發布:2024-05-18 18:00:49 瀏覽:432
三星n7100哪個安卓版本好用 發布:2024-05-18 17:55:41 瀏覽:489
萬國覺醒採集腳本源碼 發布:2024-05-18 17:55:39 瀏覽:947
sqlserver加欄位 發布:2024-05-18 17:54:53 瀏覽:928
安卓手機如何清除應用記錄 發布:2024-05-18 17:31:37 瀏覽:639
查看存儲過程許可權 發布:2024-05-18 17:18:33 瀏覽:192
php類self 發布:2024-05-18 17:15:03 瀏覽:895
手機2b2t的伺服器地址是多少 發布:2024-05-18 17:14:56 瀏覽:189