国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Struts1.0學習文檔-初學者入門

2019-11-17 06:27:56
字體:
來源:轉載
供稿:網友

  一、 概述 

struts是基于當前的一些相關標準的開發技術(servlet,xml…)基礎之上,提供了一個開發框架的開放源碼項目,由于我們開發web應用的復雜度隨著系統的復雜度的要求越來越來復雜。非凡是在代碼重用,代碼移植、代馬可插扒等問題上出現了許多重復開發、維護困難等。Struts這個框架鼓勵我們應用model2的MVC開發模型。當然我們在基于其上的開發中不一定要進行完全遵守。當前struts比較穩定的發行版時1.0,已經有了1.1的測試開發版。要了解具體的信息,請登陸www.apache.org/struts . 

二、 整體結構概述 

在到處可以找到關于MVC結構和struts結構的圖形。這里我就不對結構圖進行描述。只站在對J2EE WEB 應用的相關標準了解的基礎來對struts整個框架進行一描述。 

其實struts框架完全是基于J2EE相關技術和標準之上的。Struts提供一個servlet來作為控制器對客戶端的相應請求進行轉接給后臺的模型。它為了使各個部分能夠分離,提供相應的配置文件(struts-config.xml)進行請求和處理類的映射。整個類的映射完全來自java技術的類反射和相應的請求過濾技術。通過標記擴展來實現相應的視圖和模型的聯系。整個結構就是這樣的,請不要再多想。 

三、 具體開發說明 

控制器 

由struts自己實現,實現類為org.apache.struts.action.ActionServlet。開發者只需將相應的類映射配置在web.xml文件就可以。 

請參考如下描述: 

這里只對其中的初始化參數application加以介紹:其實這是struts控制器在啟動時需要設置消息的屬性文件,具體屬性文件的格式完全遵守java屬性文件的要求。屬性文件的名稱這里配置位ApplicationResources,當然我們可以修改,但該文件的路徑必須是web-inf/classes/或者相應的包目錄。 

模型 

關于struts的許多文章都進行相應的模型描述,分為系統狀態模型和業務邏輯。這些對我們理解struts,應用struts進行開發是很重要的。但這里我只介紹兩個重要的類,一個是進行相應的請求數據維護java bean類,另一個是進行相應請求處理的普通類。前者在struts中要求繼續org.apache.struts.action.ActionForm類,該類由struts提供,后者需要繼續org.apache.struts.action.Action類,也由struts提供。在第一個實現的bean中,各種屬性必須要和客戶請求的各個字段名稱對應,目的是完成客戶請求數據的自動化獲取,我們心里明白這一件實事就可以了:即只要我們滿足這種要求,struts自動會將客戶端的請求填充在相應的javabean中。并且我們可以重載相應的兩個方法來實現對應的javabean的各個字段的校驗和重置,以確保滿足我們的要求。這兩個方法分別為public ActionErrors validate(ActionMapping actionMapping, HttpServletRequest httpServletRequest)和public void reset(ActionMapping actionMapping, HttpServletRequest httpServletRequest),在第一個方法中返回一個相應的處理錯誤對象,這個對象會自動添加到一個錯誤治理器中,我們直接可以在表示層的代碼中進行調用,例如用標記來顯示當前的請求錯誤信息。第二個reset方法用來 

視圖 

視圖是struts中自定義的一些標記庫,其實沒有struts我們為了解決視圖和代碼的分離,經常會采取一些自定義標記庫。當然在jsp的擴展標記庫應用中,也有相應的標記供我們使用。但為了和struts能進行緊密的結合,在使用struts時我們可以適當適用struts提供的標記庫。對一些通過jsp標準的標記就能實現的,我們這里建議使用他們。這里分別將這些標記庫進行介紹。 

Bean標記庫: 

使用該標記前首先要在jsp的頁面導入相應的標記定義,例如。 

使用的方法如。 

下面對該標記庫做一介紹: 

cookie :屬性有id,name , multiple,value,id是對cookie在該頁面中的唯一標識,在頁面其它地方可以通過id進行引用。相當于用cookie直接引用。Name是相應的cookie名稱。Multiple可以賦予任意值,假如該值被定義將會返回相應給定值數量的cookie數組,假如該值沒有被定義Value在這里是一個默認值,當我們這里的調用的cookie不存在時,其值為我們這里的value值。 

define:相當于jsp標記,屬性有id、name、PRoperty、scope、toScope、type、value。Id和cookie中的id起到了同樣的作用;name是在相應的scope中唯一bean標識;scope將會在相應的范圍內進行相應的查找;toScope假如在scope中找不見相應的bean,將會在toScope中建立相應的bean;type是該類完全類路徑和類。 

例如: 

<bean:define id="submitForm"
 scope="session" name="submitForm" 
type="struts.test.SubmitActionForm"/>
<%=submitForm.getName()%>
 

例如: 

<jsp:useBean id="test1" scope="page" class="org.apache.struts.webapp.exercise.TestBean"/>
<bean:define id="test1_string" 
name="test1" property="stringProperty"/>
<bean:define id="test1_value" value="ABCDE"/>
<%= test1_string %>
<%= test1_value %>
 

header:通過該標記可以訪問相應頁面請求的頭的信息,具體屬性有id、multiple、name、value。具體的含義和cookie的類似。 

例如: 

<%java.util.Enumeration names = 
((HttpServletRequest) request).getHeaderNames();%>
<%while (names.hasMoreElements()) {
String name = (String) names.nextElement();
%>
<bean:header id="head" name="<%= name %>"/>
<tr>
<td><%= name %></td>
<td><%= head %></td>
</tr>
<%}%>
 

Include:屬性有id、name、forward、anchor、href、transacttion、page。屬性的說明參考相應apache的網站。 

例如: 

<bean:include id="index" page="/index.jsp"/>
<%=index%>
 

message: 不常用,這里忽略。 

page:不常用,這里忽略。 

Parameter:屬性有id、name、value、multiple。用來輸出客戶端的請求參數和值。 

例如: 

<bean:parameter id="param1" name="param1"/>
<bean:parameter id="param3" name="param3" value="UNKNOWN VALUE"/>
<%=param1%><br>
<%=param3%>
 

resource:屬性有id、name、input。假如input屬性被定義為任意值,導入的資源將會返回一個InputStream對象。假如不被定義的話,資源將會以字符串的方式返回。 

例如: 

<bean:resource id="webxml" name="/WEB-INF/web.xml"/>
<bean:write name="webxml" filter="true"/>
 

size:用來對Cellection 或者Map類型的數據進行元素個數統計。屬性有:id、collection、name、property、scope。 

例如: 

<%
java.util.ArrayList data = new java.util.ArrayList();
data.add("First");
data.add("Second");
data.add("Third");
data.add("Fourth");
data.add("Fifth");
pageContext.setAttribute("list", data, PageContext.PAGE_SCOPE);
%>
<bean:size id="dataSize" collection="<%= data %>"/>

<jsp:useBean id="list" scope="page" class="java.util.ArrayList"/>
<bean:size id="listSize" name="list"/>
 

struts: 不常用,這里忽略。 

Write: 屬性有bundle、filter、format、formatKey、ignore、local、name、property、scope。具體用法請參閱相關網站。 

Html標記庫: 

使用該標記庫首先要在相應的頁面中引入標記庫定義文件,如:。其實該標記庫的大多數標記可以用html的標記來實現。這里值對其無法用html實現的幾個標記進行介紹。 

Error: 屬性有:bundle、name、property、local。假如以上屬性都不定義,將會從對屬性文件中的所有error.***錯誤信息顯示出來。Bundle,邦定的錯誤信息治理器,假如沒有定義,將默認是由action創建的應用程序級錯誤治理器。Name和property用來配合從相應的頁面中調用錯誤信息治理bean來顯示錯誤信息。Local是一個錯誤信息本地化處理器,默認會用是和本地的方式處理本地化。 

屬性資源文件中應該包含如下相應的信息,對錯誤信息的現實進行格式化: 

errors.header 所有錯誤信息前面顯示的內容,可以進行html修飾 

errors.footer 所有錯誤信息后面的顯示內容,可以進行html修飾 

errors.prefix 每條錯誤信息前面的顯示信息,可以進行html修飾 

errors.suffix 每條錯誤信息后面的顯示信息,可以進行html修飾 

message: 屬性有bundle、footer、header、id、local、message、property、name.具體的用法請參閱相關網站。 

Logic標記庫:使用該標記庫首先要在相應的頁面中引入標記庫定義文件,如:,具體的標記有: 

Empty: 屬性有name、property、scope。 

Equal: 屬性有cookie、header、name、parameter、property、scope、value。其中cookie和header、parameter是獨立使用的。Name和property、scope結合使用,是相對系統中的bean的。假如是系統中某一個簡單的參數,可以用name和scope結合就可以了。 

Forward: 屬性只有name。 

GreaterEqual: 屬性和equal一樣。 

GreaterThan:屬性和equal一樣。 

LessEqual: 屬性和equal一樣。 

LessThan: 屬性和equal一樣。 

NotEmpty: 屬性和empty一樣。 

Match: 屬性和equal一樣。 

NotMatch:屬性和equal一樣。 

NotEqual: 屬性和equal一樣。 

NotPresent: 屬性有coolie、header、name、property、parameter、scope、role、user。 

Present:和notPresent一樣。 

MessageNotPresent:屬性有message、name、property。 

MessagePresent: 和messageNotPresent一樣。 

Iterate: 屬性有collection、id、indexId、scope、name、property、length、offset、type。 

數據庫訪問struts提供自己的數據源配置和治理器,但在版本1.0和1.1中相應的治理方式是不一樣的。這里我強烈建議使用j2ee中的相關數據源配置情況。 

文件上傳struts提供了類org.apache.struts.upload.FormFile,只要我們在ActionForm中提供具有該類型的字段,然后在Action中進行處理就可以了。 

簡單bbs的實現樣例代碼(基于struts1.0)要索取代碼請給我發郵件luopc@edu-edu.com.cn 。 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 依兰县| 阳原县| 高邑县| 冷水江市| 凌云县| 香河县| 五家渠市| 祁连县| 茶陵县| 河曲县| 许昌县| 蒙城县| 甘洛县| 富川| 阳新县| 鹿邑县| 海南省| 江津市| 榆中县| 高密市| 鸡泽县| 虎林市| 周至县| 潜江市| 广灵县| 日土县| 慈溪市| 永平县| 富锦市| 大冶市| 胶州市| 策勒县| 山丹县| 江川县| 甘孜县| 德阳市| 交口县| 抚顺县| 乳山市| 新源县| 洮南市|