免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

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

這里只對(duì)其中的初始化參數(shù)application加以介紹:其實(shí)這是struts控制器在啟動(dòng)時(shí)需要設(shè)置消息的屬性文件,具體屬性文件的格式完全遵守java屬性文件的要求。屬性文件的名稱這里配置位ApplicationResources,當(dāng)然我們可以修改,但該文件的路徑必須是web-inf/classes/或者相應(yīng)的包目錄。
¨    模型
關(guān)于struts的許多文章都進(jìn)行相應(yīng)的模型描述,分為系統(tǒng)狀態(tài)模型和業(yè)務(wù)邏輯。這些對(duì)我們理解struts,應(yīng)用struts進(jìn)行開發(fā)是很重要的。但這里我只介紹兩個(gè)重要的類,一個(gè)是進(jìn)行相應(yīng)的請(qǐng)求數(shù)據(jù)維護(hù)java bean類,另一個(gè)是進(jìn)行相應(yīng)請(qǐng)求處理的普通類。前者在struts中要求繼承org.apache.struts.action.ActionForm類,該類由struts提供,后者需要繼承org.apache.struts.action.Action類,也由struts提供。在第一個(gè)實(shí)現(xiàn)的bean中,各種屬性必須要和客戶請(qǐng)求的各個(gè)字段名稱對(duì)應(yīng),目的是完成客戶請(qǐng)求數(shù)據(jù)的自動(dòng)化獲取,我們心里明白這一件實(shí)事就可以了:即只要我們滿足這種要求,struts自動(dòng)會(huì)將客戶端的請(qǐng)求填充在相應(yīng)的javabean中。并且我們可以重載相應(yīng)的兩個(gè)方法來實(shí)現(xiàn)對(duì)應(yīng)的javabean的各個(gè)字段的校驗(yàn)和重置,以確保滿足我們的要求。這兩個(gè)方法分別為public ActionErrors validate(ActionMapping actionMapping, HttpServletRequest httpServletRequest)和public void reset(ActionMapping actionMapping, HttpServletRequest httpServletRequest),在第一個(gè)方法中返回一個(gè)相應(yīng)的處理錯(cuò)誤對(duì)象,這個(gè)對(duì)象會(huì)自動(dòng)添加到一個(gè)錯(cuò)誤管理器中,我們直接可以在表示層的代碼中進(jìn)行調(diào)用,例如用標(biāo)記<html:errors/>來顯示當(dāng)前的請(qǐng)求錯(cuò)誤信息。第二個(gè)reset方法用來
¨    視圖
視圖是struts中自定義的一些標(biāo)記庫,其實(shí)沒有struts我們?yōu)榱私鉀Q視圖和代碼的分離,經(jīng)常會(huì)采取一些自定義標(biāo)記庫。當(dāng)然在jsp的擴(kuò)展標(biāo)記庫應(yīng)用中,也有相應(yīng)的標(biāo)記供我們使用。但為了和struts能進(jìn)行緊密的結(jié)合,在使用struts時(shí)我們可以適當(dāng)適用struts提供的標(biāo)記庫。對(duì)一些通過jsp標(biāo)準(zhǔn)的標(biāo)記就能實(shí)現(xiàn)的,我們這里建議使用他們。這里分別將這些標(biāo)記庫進(jìn)行介紹。
Bean標(biāo)記庫:
使用該標(biāo)記前首先要在jsp的頁面導(dǎo)入相應(yīng)的標(biāo)記定義,例如<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>。
使用的方法如<bean:*** id=””/>。
下面對(duì)該標(biāo)記庫做一介紹:
cookie :屬性有id,name , multiple,value,id是對(duì)cookie在該頁面中的唯一標(biāo)識(shí),在頁面其它地方可以通過id進(jìn)行引用。相當(dāng)于用cookie直接引用。Name是相應(yīng)的cookie名稱。Multiple可以賦予任意值,如果該值被定義將會(huì)返回相應(yīng)給定值數(shù)量的cookie數(shù)組,如果該值沒有被定義Value在這里是一個(gè)默認(rèn)值,當(dāng)我們這里的調(diào)用的cookie不存在時(shí),其值為我們這里的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)識(shí);scope將會(huì)在相應(yīng)的范圍內(nèi)進(jìn)行相應(yīng)的查找;toScope如果在scope中找不見相應(yīng)的bean,將會(huì)在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)頁面請(qǐ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。用來輸出客戶端的請(qǐng)求參數(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)入的資源將會(huì)返回一個(gè)InputStream對(duì)象。如果不被定義的話,資源將會(huì)以字符串的方式返回。
    例如:<bean:resource id="webxml" name="/WEB-INF/web.xml"/>
    <bean:write name="webxml" filter="true"/>
size:用來對(duì)Cellection 或者M(jìn)ap類型的數(shù)據(jù)進(jìn)行元素個(gè)數(shù)統(tǒng)計(jì)。屬性有: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。具體用法請(qǐng)參閱相關(guān)網(wǎng)站。
Html標(biāo)記庫:
使用該標(biāo)記庫首先要在相應(yīng)的頁面中引入標(biāo)記庫定義文件,如:<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>。其實(shí)該標(biāo)記庫的大多數(shù)標(biāo)記可以用html的標(biāo)記來實(shí)現(xiàn)。這里值對(duì)其無法用html實(shí)現(xiàn)的幾個(gè)標(biāo)記進(jìn)行介紹。
Error: 屬性有:bundle、name、property、local。如果以上屬性都不定義,將會(huì)從對(duì)屬性文件中的所有error.***錯(cuò)誤信息顯示出來。Bundle,邦定的錯(cuò)誤信息管理器,如果沒有定義,將默認(rèn)是由action創(chuàng)建的應(yīng)用程序級(jí)錯(cuò)誤管理器。Name和property用來配合從相應(yīng)的頁面中調(diào)用錯(cuò)誤信息管理bean來顯示錯(cuò)誤信息。Local是一個(gè)錯(cuò)誤信息本地化處理器,默認(rèn)會(huì)用是和本地的方式處理本地化。
屬性資源文件中應(yīng)該包含如下相應(yīng)的信息,對(duì)錯(cuò)誤信息的現(xiàn)實(shí)進(jìn)行格式化:
errors.header 所有錯(cuò)誤信息前面顯示的內(nèi)容,可以進(jìn)行html修飾
errors.footer 所有錯(cuò)誤信息后面的顯示內(nèi)容,可以進(jìn)行html修飾
errors.prefix 每條錯(cuò)誤信息前面的顯示信息,可以進(jìn)行html修飾
errors.suffix 每條錯(cuò)誤信息后面的顯示信息,可以進(jìn)行html修飾
message: 屬性有bundle、footer、header、id、local、message、property、name.具體的用法請(qǐng)參閱相關(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是獨(dú)立使用的。Name和property、scope結(jié)合使用,是相對(duì)系統(tǒng)中的bean的。如果是系統(tǒng)中某一個(gè)簡單的參數(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)的管理方式是不一樣的。這里我強(qiáng)烈建議使用j2ee中的相關(guān)數(shù)據(jù)源配置情況。
¨    文件上傳,struts提供了類org.apache.struts.upload.FormFile,只要我們?cè)贏ctionForm中提供具有該類型的字段,然后在Action中進(jìn)行處理就可以了。
¨    簡單bbs的實(shí)現(xiàn)樣例代碼(基于struts1.0),要索取代碼請(qǐng)給我發(fā)郵件luopc@edu-edu.com.cn 。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Matrix - 與 Java 共舞 - Jakarta Struts 編程:使用Tiles框架(第三部分)
struts1.x常用類筆記
Struts標(biāo)簽
Struts1.x系列教程(6):Bean標(biāo)簽庫
【轉(zhuǎn)】struts1標(biāo)簽庫
JavaBean
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服