小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

struts1.0學(xué)習(xí)文檔--初學(xué)者入門的地方

 duduwolf 2005-07-16
Struts開發(fā)幫助文檔
一、    概述
struts是基于當(dāng)前的一些相關(guān)標(biāo)準(zhǔn)的開發(fā)技術(shù)(servlet,xml…)基礎(chǔ)之上,提供了一個開發(fā)框架的開放源碼項目,由于我們開發(fā)web應(yīng)用的復(fù)雜度隨著系統(tǒng)的復(fù)雜度的要求越來越來復(fù)雜。特別是在代碼重用,代碼移植、代馬可插扒等問題上出現(xiàn)了許多重復(fù)開發(fā)、維護困難等。Struts這個框架鼓勵我們應(yīng)用model2的MVC開發(fā)模型。當(dāng)然我們在基于其上的開發(fā)中不一定要進行完全遵守。當(dāng)前struts比較穩(wěn)定的發(fā)行版時1.0,已經(jīng)有了1.1的測試開發(fā)版。要了解詳細的信息,請登陸www.apache.org/struts .
二、    整體結(jié)構(gòu)概述
在到處可以找到關(guān)于MVC結(jié)構(gòu)和struts結(jié)構(gòu)的圖形。這里我就不對結(jié)構(gòu)圖進行描述。只站在對J2EE WEB 應(yīng)用的相關(guān)標(biāo)準(zhǔn)了解的基礎(chǔ)來對struts整個框架進行一描述。
其實struts框架完全是基于J2EE相關(guān)技術(shù)和標(biāo)準(zhǔn)之上的。Struts提供一個servlet來作為控制器對客戶端的相應(yīng)請求進行轉(zhuǎn)接給后臺的模型。它為了使各個部分能夠分離,提供相應(yīng)的配置文件(struts-config.xml)進行請求和處理類的映射。整個類的映射完全來自java技術(shù)的類反射和相應(yīng)的請求過濾技術(shù)。通過標(biāo)記擴展來實現(xiàn)相應(yīng)的視圖和模型的聯(lián)系。整個結(jié)構(gòu)就是這樣的,請不要再多想。
三、    詳細開發(fā)說明
¨    控制器
由struts自己實現(xiàn),實現(xiàn)類為org.apache.struts.action.ActionServlet。開發(fā)者只需將相應(yīng)的類映射配置在web.xml文件就可以。
請參考如下描述:

這里只對其中的初始化參數(shù)application加以介紹:其實這是struts控制器在啟動時需要設(shè)置消息的屬性文件,具體屬性文件的格式完全遵守java屬性文件的要求。屬性文件的名稱這里配置位ApplicationResources,當(dāng)然我們可以修改,但該文件的路徑必須是web-inf/classes/或者相應(yīng)的包目錄。
¨    模型
關(guān)于struts的許多文章都進行相應(yīng)的模型描述,分為系統(tǒng)狀態(tài)模型和業(yè)務(wù)邏輯。這些對我們理解struts,應(yīng)用struts進行開發(fā)是很重要的。但這里我只介紹兩個重要的類,一個是進行相應(yīng)的請求數(shù)據(jù)維護java bean類,另一個是進行相應(yīng)請求處理的普通類。前者在struts中要求繼承org.apache.struts.action.ActionForm類,該類由struts提供,后者需要繼承org.apache.struts.action.Action類,也由struts提供。在第一個實現(xiàn)的bean中,各種屬性必須要和客戶請求的各個字段名稱對應(yīng),目的是完成客戶請求數(shù)據(jù)的自動化獲取,我們心里明白這一件實事就可以了:即只要我們滿足這種要求,struts自動會將客戶端的請求填充在相應(yīng)的javabean中。并且我們可以重載相應(yīng)的兩個方法來實現(xiàn)對應(yīng)的javabean的各個字段的校驗和重置,以確保滿足我們的要求。這兩個方法分別為public ActionErrors validate(ActionMapping actionMapping, HttpServletRequest httpServletRequest)和public void reset(ActionMapping actionMapping, HttpServletRequest httpServletRequest),在第一個方法中返回一個相應(yīng)的處理錯誤對象,這個對象會自動添加到一個錯誤管理器中,我們直接可以在表示層的代碼中進行調(diào)用,例如用標(biāo)記<html:errors/>來顯示當(dāng)前的請求錯誤信息。第二個reset方法用來
¨    視圖
視圖是struts中自定義的一些標(biāo)記庫,其實沒有struts我們?yōu)榱私鉀Q視圖和代碼的分離,經(jīng)常會采取一些自定義標(biāo)記庫。當(dāng)然在jsp的擴展標(biāo)記庫應(yīng)用中,也有相應(yīng)的標(biāo)記供我們使用。但為了和struts能進行緊密的結(jié)合,在使用struts時我們可以適當(dāng)適用struts提供的標(biāo)記庫。對一些通過jsp標(biāo)準(zhǔn)的標(biāo)記就能實現(xiàn)的,我們這里建議使用他們。這里分別將這些標(biāo)記庫進行介紹。
Bean標(biāo)記庫:
使用該標(biāo)記前首先要在jsp的頁面導(dǎo)入相應(yīng)的標(biāo)記定義,例如<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>。
使用的方法如<bean:*** id=””/>。
下面對該標(biāo)記庫做一介紹:
cookie :屬性有id,name , multiple,value,id是對cookie在該頁面中的唯一標(biāo)識,在頁面其它地方可以通過id進行引用。相當(dāng)于用cookie直接引用。Name是相應(yīng)的cookie名稱。Multiple可以賦予任意值,如果該值被定義將會返回相應(yīng)給定值數(shù)量的cookie數(shù)組,如果該值沒有被定義Value在這里是一個默認(rèn)值,當(dāng)我們這里的調(diào)用的cookie不存在時,其值為我們這里的value值。
define:相當(dāng)于jsp標(biāo)記<jsp:useBean>,屬性有id、name、property、scope、toScope、type、value。Id和cookie中的id起到了同樣的作用;name是在相應(yīng)的scope中唯一bean標(biāo)識;scope將會在相應(yīng)的范圍內(nèi)進行相應(yīng)的查找;toScope如果在scope中找不見相應(yīng)的bean,將會在toScope中建立相應(yīng)的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:通過該標(biāo)記可以訪問相應(yīng)頁面請求的頭的信息,具體屬性有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。屬性的說明參考相應(yīng)apache的網(wǎng)站。
    例如:<bean:include id="index" page="/index.jsp"/>
    <%=index%>
message: 不常用,這里忽略。
page:不常用,這里忽略。
Parameter:屬性有id、name、value、multiple。用來輸出客戶端的請求參數(shù)和值。
    例如:<bean:parameter id="param1" name="param1"/>
<bean:parameter id="param3" name="param3" value="UNKNOWN VALUE"/>
<%=param1%><br>
<%=param3%>
resource:屬性有id、name、input。如果input屬性被定義為任意值,導(dǎo)入的資源將會返回一個InputStream對象。如果不被定義的話,資源將會以字符串的方式返回。
    例如:<bean:resource id="webxml" name="/WEB-INF/web.xml"/>
    <bean:write name="webxml" filter="true"/>
size:用來對Cellection 或者Map類型的數(shù)據(jù)進行元素個數(shù)統(tǒng)計。屬性有: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。具體用法請參閱相關(guān)網(wǎng)站。
Html標(biāo)記庫:
使用該標(biāo)記庫首先要在相應(yīng)的頁面中引入標(biāo)記庫定義文件,如:<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>。其實該標(biāo)記庫的大多數(shù)標(biāo)記可以用html的標(biāo)記來實現(xiàn)。這里值對其無法用html實現(xiàn)的幾個標(biāo)記進行介紹。
Error: 屬性有:bundle、name、property、local。如果以上屬性都不定義,將會從對屬性文件中的所有error.***錯誤信息顯示出來。Bundle,邦定的錯誤信息管理器,如果沒有定義,將默認(rèn)是由action創(chuàng)建的應(yīng)用程序級錯誤管理器。Name和property用來配合從相應(yīng)的頁面中調(diào)用錯誤信息管理bean來顯示錯誤信息。Local是一個錯誤信息本地化處理器,默認(rèn)會用是和本地的方式處理本地化。
屬性資源文件中應(yīng)該包含如下相應(yīng)的信息,對錯誤信息的現(xiàn)實進行格式化:
errors.header 所有錯誤信息前面顯示的內(nèi)容,可以進行html修飾
errors.footer 所有錯誤信息后面的顯示內(nèi)容,可以進行html修飾
errors.prefix 每條錯誤信息前面的顯示信息,可以進行html修飾
errors.suffix 每條錯誤信息后面的顯示信息,可以進行html修飾
message: 屬性有bundle、footer、header、id、local、message、property、name.具體的用法請參閱相關(guān)網(wǎng)站。
Logic標(biāo)記庫:使用該標(biāo)記庫首先要在相應(yīng)的頁面中引入標(biāo)記庫定義文件,如:<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>,具體的標(biāo)記有:
Empty: 屬性有name、property、scope。
Equal: 屬性有cookie、header、name、parameter、property、scope、value。其中cookie和header、parameter是獨立使用的。Name和property、scope結(jié)合使用,是相對系統(tǒng)中的bean的。如果是系統(tǒng)中某一個簡單的參數(shù),可以用name和scope結(jié)合就可以了。
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。
¨    數(shù)據(jù)庫訪問,struts提供自己的數(shù)據(jù)源配置和管理器,但在版本1.0和1.1中相應(yīng)的管理方式是不一樣的。這里我強烈建議使用j2ee中的相關(guān)數(shù)據(jù)源配置情況。
¨    文件上傳,struts提供了類org.apache.struts.upload.FormFile,只要我們在ActionForm中提供具有該類型的字段,然后在Action中進行處理就可以了。
¨    簡單bbs的實現(xiàn)樣例代碼(基于struts1.0),要索取代碼請給我發(fā)郵件luopc@edu-edu.com.cn 。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多