国产亚洲精品一品区99热,国产精品亚洲综合,国产亚洲成人在线播放vahttp://m.tkk7.com/konhon/category/3029.html忘掉過去,展望未來。找回自我,超越自我。 <br> <b>逃避不一定躲的過, 面對(duì)不一定最難過, 孤單不一定不快樂, 得到不一定能長(zhǎng)久, 失去不一定不再擁有, 可能因?yàn)槟硞€(gè)理由而傷心難過, 但我卻能找個(gè)理由讓自己快樂.</b><br><p> <!-- Search Google --> <left> <form method="get" action="http://www.google.com/custom" target="google_window"> <table> <tr><td nowrap="nowrap" valign="top" align="left" height="32"> <a > <img src="http://www.google.com/logos/Logo_25wht.gif" border="0" alt="Google" align="middle"></img></a> <input type="text" name="q" size="31" maxlength="255" value=""></input> <input type="submit" name="sa" value="搜索"></input> <input type="hidden" name="client" value="pub-5408663347953425"></input> <input type="hidden" name="forid" value="1"></input> <input type="hidden" name="ie" value="UTF-8"></input> <input type="hidden" name="oe" value="UTF-8"></input> <input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1;"></input> <input type="hidden" name="hl" value="zh-CN"></input> </td></tr></table> </form> </left> <!-- Search Google --> zh-cnTue, 27 Feb 2007 11:09:32 GMTTue, 27 Feb 2007 11:09:32 GMT60配置Struts應(yīng)用(原創(chuàng)) http://m.tkk7.com/konhon/archive/2006/12/03/85157.htmlkonhon 優(yōu)華konhon 優(yōu)華Sun, 03 Dec 2006 02:38:00 GMThttp://m.tkk7.com/konhon/archive/2006/12/03/85157.htmlhttp://m.tkk7.com/konhon/comments/85157.htmlhttp://m.tkk7.com/konhon/archive/2006/12/03/85157.html#Feedback0http://m.tkk7.com/konhon/comments/commentRss/85157.htmlhttp://m.tkk7.com/konhon/services/trackbacks/85157.html Struts應(yīng)用采用兩個(gè)基于XML的配置文件來配置,分別是web.xml和struts-cofig.xml文件.web.xml文件是配置所有web應(yīng)用的而struts-config.xml文件是struts專用的配置文件,事實(shí)上也是可以根據(jù)需要給這個(gè)配置文件起其他名稱的.

Web應(yīng)用的發(fā)布描述文件:web應(yīng)用發(fā)布描述文件可以在應(yīng)用開著者,發(fā)布者和組裝者之間傳遞配置信息,Web容器在啟動(dòng)的時(shí)候從該文件中讀取配置信息,根據(jù)它來裝載和配置web應(yīng)用.文檔類型定義DTD對(duì)XML文檔的格式做了定義,DTD吧XML文檔劃分為元素,屬性,實(shí)體每一種XML文檔都有獨(dú)自的DTD文件.可以從網(wǎng)上下載.<web-app>元素是web.xml的根元素,其他元素必須嵌入在<web-app>元素之內(nèi).要注意的是子元素也是有順序的比如必須是首先<servlet>,然后<servlet-mapping>最后<taglib>.

Struts應(yīng)用配置Web.xml文件:首先最重要的一步是配置ActionServlet,這個(gè)用<servlet>標(biāo)簽的servlet-name屬性起一個(gè)名字叫action,然后用servlet-class屬性指定ActionServlet的類.然后用<servlet-mapping>標(biāo)簽的servlet-name屬性指定action,在用url-pattern指定接收范圍是*.do的請(qǐng)求.不管應(yīng)用中包含了多少子應(yīng)用,都只需要配置一個(gè)ActionServlet,類來出來應(yīng)用中的不同的功能,其實(shí)者就是不必要的,因?yàn)镾ervlet本身就是多線程的,而且目前Struts只允許配置一個(gè)ActionServlet.聲明ActionServlet的初始化參數(shù):<servlet>的<init-param>子元素用來配置Servlet的初始化參數(shù).param-name設(shè)置config參數(shù)名.param-value設(shè)置struts-config.xml的路徑參數(shù)值.

配置歡迎使用清單:如果客戶訪問Web的時(shí)候值是訪問了WEB應(yīng)用的根目錄URL.沒有具體的指定文件,Web會(huì)自動(dòng)調(diào)用Web的歡迎文件.<welcome-file-list>元素來配置的.通過其中的<welcome-file>歡迎頁面</welcome-file>來配置.

配置錯(cuò)誤處理:盡管Struts框架功能強(qiáng)大的錯(cuò)誤處理機(jī)制,但是不能保證處理所有的錯(cuò)誤或者異常.當(dāng)錯(cuò)誤發(fā)生時(shí),如果框架不能處理這種錯(cuò)誤,把錯(cuò)誤拋棄給Web容器,在默認(rèn)的情況下web容器會(huì)想客戶端返回錯(cuò)誤信息.如果想避免讓客戶看到原始的錯(cuò)誤信息,可以在Web應(yīng)用發(fā)布描述文件中配置<error-page>元素.通過<error-code>404來定義錯(cuò)誤的類型.然后通過<location>要處理錯(cuò)誤的JSP頁面來對(duì)錯(cuò)誤進(jìn)行處理.還可以用<exception-type>來設(shè)置異常,然后通過<location>來處理異常的JSP頁面來處理異常.

配置Struts標(biāo)簽庫:這個(gè)就和以前學(xué)到的JSP自定義標(biāo)簽類似,配置元素為<taglib>來配置.<taglib-uri>這個(gè)指定標(biāo)簽庫的uri,類似起一個(gè)名稱.<taglib-location>這個(gè)是標(biāo)簽庫的位置也就是實(shí)際所在的路徑.通過這樣的方法引入一個(gè)標(biāo)簽庫,然后在前臺(tái)JSP頁面就可以通過自己定義的URI來調(diào)用標(biāo)簽.

Struts配置文件:struts-config.xml文件.首先研討一下org.apache.struts.config包,在struts應(yīng)用啟動(dòng)的時(shí)候會(huì)把Struts配置文件信息讀取到內(nèi)存中,并把它們存放在config包中相關(guān)的JavaBean類的實(shí)例中.包中的每一個(gè)類都和struts配置文件中特定的配置元素對(duì)應(yīng),ModuleConfig在Struts框架中扮演了十分重要的角色,它是整個(gè)config包的核心,在Struts運(yùn)行時(shí)來存放整個(gè)應(yīng)用的配置信息.如果有多個(gè)子應(yīng)用都會(huì)有一個(gè)ModuleConfig對(duì)象,它和Struts文件根元素的<struts-config>對(duì)應(yīng).根元素中包含<form-bean><action><forward>等元素.

<struts-config>元素:時(shí)Struts配置文件的根元素,和它對(duì)應(yīng)的配置類ModuleConfig類,<struts-config>元素有8個(gè)子元素.他們的DTD定義是data-sources?form-bean? global-exception?global-forwards?action-mapping?controller?message-resources?plug-in*在Struts配置文件中,必須按照DTD指定的先手順序來配置<struts-config>元素的各個(gè)子元素,如果顛倒了這些子元素的順序,會(huì)產(chǎn)生錯(cuò)誤.

<data-sources>元素:用來配置應(yīng)用所需要的數(shù)據(jù)源,數(shù)據(jù)源負(fù)責(zé)創(chuàng)建和特定的數(shù)據(jù)庫的連接.許多數(shù)據(jù)源采用連接池的機(jī)制實(shí)現(xiàn).以便提高數(shù)據(jù)庫訪問的性能.JAVA語言提供了javax.sql.DataSource接口,所有的數(shù)據(jù)源都必須實(shí)現(xiàn)這個(gè)接口.許多應(yīng)用服務(wù)器和Web服務(wù)器都提供了數(shù)據(jù)源組件.很多數(shù)據(jù)庫廠商也提供了數(shù)據(jù)源的實(shí)現(xiàn).<data-sources>元素包含多個(gè)<data-source>子元素永遠(yuǎn)配置特定的數(shù)據(jù)源.他們可以包含多個(gè)<set-property>子元素用于設(shè)置數(shù)據(jù)源的各種屬性.配置了數(shù)據(jù)源以后,就可以在Action類中訪問數(shù)據(jù)源,在Action中定義了getDataSource(HttpRequest)方法,用于獲取數(shù)據(jù)源對(duì)象的引用.然后可以利用DataSource對(duì)象調(diào)用getConnection獲取一個(gè)連接對(duì)象對(duì)數(shù)據(jù)庫進(jìn)行操作.在配置文件中聲明多個(gè)數(shù)據(jù)源的時(shí)候需要為每一個(gè)數(shù)據(jù)源分配唯一的Key值,通過這個(gè)來表示特定的數(shù)據(jù)源.獲取特定的數(shù)據(jù)源的時(shí)候可以用dataSource = getDataSource(reqeust,”A”);

<form-beans>元素:用來配置多個(gè)ActionForm,包含一個(gè)或者N個(gè)<form-bean>子元素.每個(gè)<form-bean>元素都包含多個(gè)屬性.className指定和<form-bean>匹配的類.name指定該ActionForm的唯一標(biāo)識(shí)符,這個(gè)屬性是必須的以后作為引用使用.type指定ActionForm類的完整類名,這個(gè)屬性也是必須的.注意包名也要加上.<form-property>是指定動(dòng)態(tài)的Form的元素,以后會(huì)深入了解.

<global-exception>元素:用于配置異常處理,元素可以包含一個(gè)或者多個(gè)<exception>元素,用來設(shè)置JAVA異常和異常處理類ExceptionHandler之間的映射.className指定和元素對(duì)應(yīng)的配置類,默認(rèn)的不用動(dòng).handler指定異常處理類默認(rèn)是ExceptionHandler.key指定在本地資源文件中異常的消息Key,path指定當(dāng)前異常發(fā)生的時(shí)候轉(zhuǎn)發(fā)的路徑.scope指定ActionMessages實(shí)例存放的范圍.type指定需要處理異常類的名字,必須的.bundle指定Resource Bundle.

<global-forwards>元素:用來聲明全局轉(zhuǎn)發(fā),元素可以有一個(gè)或者N個(gè)<forward>元素組成,用于把一個(gè)邏輯名映射到特定的URL,通過這種方法Action類或者JSP頁面無需指定URL,只要指定邏輯名稱就可以實(shí)現(xiàn)請(qǐng)求轉(zhuǎn)發(fā)或者重定向.這樣可以減少控制組件和視圖的聚合.易于維護(hù).className對(duì)應(yīng)的配置類.contextRelative如果為true表示當(dāng)path屬性以/開頭的時(shí)候,給出的是對(duì)應(yīng)的上下文URL默認(rèn)是false.name轉(zhuǎn)發(fā)路徑的邏輯名,必須寫.path轉(zhuǎn)發(fā)或者重定向的URL,必須寫必須是以/開頭.redirect設(shè)置為true的時(shí)候表示執(zhí)行重定向操作,此項(xiàng)為false的時(shí)候,表示執(zhí)行請(qǐng)求轉(zhuǎn)發(fā)操作.重定向與請(qǐng)求轉(zhuǎn)發(fā)的區(qū)別以后就是重定向是把請(qǐng)求生成應(yīng)答給客戶端然后在重新發(fā)送給定向的URL,瀏覽器地址欄會(huì)有顯示.而轉(zhuǎn)發(fā)就是直接把請(qǐng)求轉(zhuǎn)發(fā)給本應(yīng)用的另一個(gè)文件,不生成應(yīng)答所以客戶端IE沒顯示.

<action-mapping>元素:包含一個(gè)或者N個(gè)<action>元素,描述了從特定的請(qǐng)求路徑到響應(yīng)的Action的映射.在<action>元素中可以包含多個(gè)<exception>和<forward>子元素,他們分別配置局部異常處理和局部轉(zhuǎn)發(fā).attribute設(shè)置Action關(guān)聯(lián)的ActionForm在request或者session范圍內(nèi)的key.就是在request或者session共享內(nèi)的名稱.className對(duì)應(yīng)配置元素的類.默認(rèn)的是ActionMapping.forward指定轉(zhuǎn)發(fā)URL路徑include指定包含URL路徑.input指定包含表單的URL,當(dāng)表單驗(yàn)證失敗的時(shí)候發(fā)送的URL.name,指定和該Action關(guān)聯(lián)的Form名字.該名字必須是在form-bean中定義過的,可寫可不寫.path必須/開頭的方位Action的路徑.parameter指定Action配置參數(shù).在Action的execute()方法中可以調(diào)用ActionMapping的getParameter()方法來讀取匹配的參數(shù).roles指定允許調(diào)用該Action的安全角色,多個(gè)角色之間逗號(hào)格開.scope指定Form的存在范圍.默認(rèn)是session.tyep指定Action的完整類名.unknown如果是true表示可以處理用戶發(fā)出的所有的無效的ActionURL默認(rèn)是false.validate指定是否調(diào)用ActionForm的validate方法.

<controller>元素:用于配置ActionServlet.buffreSize指定上載文件的輸入緩沖大小.該屬性為可選默認(rèn)4096.className指定元素對(duì)應(yīng)的配置類,ControllerConfig.然后是contentType指定響應(yīng)結(jié)果內(nèi)容類型和字符編碼,該屬性為可選,默認(rèn)是text/html如果在Action或者JSP網(wǎng)頁也設(shè)置了類型內(nèi)容,會(huì)覆蓋這個(gè).locale指定是否把Locale對(duì)象保存到當(dāng)前用戶的session中默認(rèn)false.tempDir指定處理文件上載的臨時(shí)工作目錄.nochache如果是true在響應(yīng)結(jié)果中加入特定的頭參數(shù).

<message-resources>元素:用來配置Resource Bundle.用于存放本地文本消息文件.className元素對(duì)應(yīng)的配置類.MessageResourcesConfig.factory指定消息的工廠類.key指定文件存放的Servlet對(duì)象中采用的屬性Key.null指定如何處理未知消息.parameter指定消息的文件名.

<plug-in>元素:用于配置Struts插件.

配置多應(yīng)用模塊:所有的子應(yīng)用都可以共享同一個(gè)ActionServlet實(shí)例,但是每個(gè)子應(yīng)用都有單獨(dú)的配置文件.把應(yīng)用劃分為多個(gè)子應(yīng)用模塊.首先為每個(gè)應(yīng)用創(chuàng)建單獨(dú)的Struts配置文件,在web.xml的ActionServlet配置代碼中添加幾個(gè)子應(yīng)用信息.采用<forward>元素來實(shí)現(xiàn)應(yīng)用之間的切換.

Digester組件:是一個(gè)Apache的另一個(gè)開源代碼項(xiàng)目.當(dāng)Struts被初始化的時(shí)候,首先會(huì)讀取并解析配置文件,框架采用Digester組件來且西配置文件.然后創(chuàng)建config包中的對(duì)象.者對(duì)象用于存放配置信息.

其實(shí)配置文件不難,只要都理其中的原理就OK了.真正實(shí)際的項(xiàng)目開發(fā)中,采用的工具例如Eclipse系列,提供了相應(yīng)的插件,在創(chuàng)建一個(gè)Struts工程的時(shí)候配置文件的標(biāo)簽都是自動(dòng)生成的,而我們只需要往里面填寫屬性就OK了. (網(wǎng)友們的支持,是我繼續(xù)寫技術(shù)文章的動(dòng)力!)



konhon 優(yōu)華 2006-12-03 10:38 發(fā)表評(píng)論
]]>
Struts入門經(jīng)驗(yàn)http://m.tkk7.com/konhon/archive/2005/08/27/11274.htmlkonhon 優(yōu)華konhon 優(yōu)華Sat, 27 Aug 2005 01:53:00 GMThttp://m.tkk7.com/konhon/archive/2005/08/27/11274.htmlhttp://m.tkk7.com/konhon/comments/11274.htmlhttp://m.tkk7.com/konhon/archive/2005/08/27/11274.html#Feedback0http://m.tkk7.com/konhon/comments/commentRss/11274.htmlhttp://m.tkk7.com/konhon/services/trackbacks/11274.htmlStruts安裝:
首先請(qǐng)到http://jakarta.apache.org/Struts下載Struts,建議使用release版,現(xiàn)在最高版本為1.1,下載后得到的是一個(gè)ZIP文件。
將ZIP包解開,可以看到這個(gè)目錄:lib和webapps,webapps下有一些WAR文件。假設(shè)你的Tomcat裝在c:\Tomcat下,則將那些WAR文件拷貝到C:\Tomcat\webapps,重新啟動(dòng)Tomcat即可。打開瀏覽器,在地址欄中輸入:http://localhost:8080/Struts-example/index.jsp,若能見到“powered by Struts”的深藍(lán)色圖標(biāo),即說明成功了。這是Struts自帶的一個(gè)例子,附有詳細(xì)的說明文檔,可以做為初學(xué)者的入門教程。另外,Struts還提供了一系統(tǒng)實(shí)用對(duì)象:XML處理、通過Java reflection APIs自動(dòng)處理JavaBeans屬性、國(guó)際化的提示和消息等

一個(gè)實(shí)例:
一個(gè)用戶注冊(cè)系統(tǒng),用戶通過網(wǎng)頁輸入相關(guān)信息:注冊(cè)ID號(hào),密碼,EMAIL,若注冊(cè)成功,則返回成功提示信息,反之出現(xiàn)注冊(cè)失敗提示信息。
以下是相關(guān)文件的部分核心代碼。

項(xiàng)目建立:
正式開發(fā)前,需要在Tocmat(我的tomcat裝在c:\tomcat)中建立此項(xiàng)目。比較快的一種建立方式為:在C:\tomcat\webapps下新建目錄test,再將C:\tomcat\webapps\struts-example下的
WEB-INF目錄拷貝到test目錄下,然后將test\WEB-INF下的src和classes目錄清空,以及struts-config.xml文件中內(nèi)容清空即可。這樣,我們需要的Struts類包及相關(guān)的配置文件就都齊了。
開發(fā)時(shí),將JSP文件放在test目錄下,Java原文件放在test\WEB-INF\src下,編譯后的類文件放在test\WEB-INF\classes下。

注冊(cè)頁面:reguser.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/Struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/Struts-html.tld" prefix="html" %>
<html:html locale="true">
<head>
<title>RegUser</title>
<html:base/>
</head>
<body bgcolor="white">
<html:errors/>
<html:form action="/regUserAction" focus="logname">
<table border="0" width="100%">
<tr>
<th align="right">
Logname:
</th>
<td align="left">
<html:text property="logname" size="20" maxlength="20"/>
</td>
</tr>
<tr>
<th align="right">
Password:
</th>
<td align="left">
<html:password property="password" size="20" maxlength="20"/>
</td>
</tr> 
<tr>
<th align="right">
E-mail:
</th>
<td align="left">
<html:password property="email" size="30" maxlength="50"/>
</td>
</tr>
<tr>
<td align="right">
<html:submit property="submit" value="Submit"/>
</td>
<td align="left">
<html:reset/>
</td>
</tr>
</table>
</html:form>
</body>
</html:html>


此JSP頁面不同于普通的JSP頁,因?yàn)樗罅窟\(yùn)用了taglib,這些taglib對(duì)初學(xué)者而言,可能難于掌握,可這卻是Struts的精華之一。靈活運(yùn)用,將大大提高開發(fā)效率。

Struts-config.xml:

<Struts-config> 
<form-beans>
<form-bean name="regUserForm"
type
="org.cjea.Struts.example. RegUserForm "/> 
</form-beans>
<action-mappings>
<action path="/regUserAction"
type
=" org.cjea.Struts.example.RegUserAction "
attribute
=" regUserForm "
scope
="request"
validate
="false">
<forward name="failure" path="/ messageFailure.jsp"/>
<forward name="success" path="/ messageSuccess.jsp"/>
</action>
</action-mappings>
</Struts-config>

Struts的核心是Controller,即ActionServlet,而ActionServlet的核心就是Struts-config.xml,Struts-config.xml集中了所有頁面的導(dǎo)航定義。對(duì)于大型的WEB項(xiàng)目,通過此配置文件即可迅速把握其脈絡(luò),這不管是對(duì)于前期的開發(fā),還是后期的維護(hù)或升級(jí)都是大有裨益的。掌握Struts-config.xml是掌握Struts的關(guān)鍵所在。

FormBean:RegUserForm

package org.cjea.Struts.example;

import javax.Servlet.http.HttpServletRequest;
import org.apache.Struts.action.ActionForm;
import org.apache.Struts.action.ActionMapping;

public final class RegUserForm extends ActionForm{

private String logname;
private String password;
private String email;

public RegUserForm(){
logname 
= null;
password 
= null;
email 
= null;
}


public String getLogName() {
return this.logname;
}

public void setLogName(String logname) {
this.logname = logname;
}

public void setPassWord(String password) {
this.password = password;
}

public String getPassWord() {
return this.password;
}

public void setEmail(String email) {
this.email = email;
}

public String getEmail() {
return this.email;
}


public void reset(ActionMapping mapping, HttpServletRequest request)
{
logname 
= null;
password 
= null;
email 
= null;
}

}


每一個(gè)FormBean 都必須繼承ActionForm類,F(xiàn)ormBean是對(duì)頁面請(qǐng)求的封裝。即把HTTP request 封裝在一個(gè)對(duì)象中,需要說明的一點(diǎn)就是多個(gè)HTTP request可以共用一個(gè)FormBean,便于維護(hù)和重用。

ActionBean:RegUserAction

package org.cjea.Struts.example;

import javax.Servlet.http.
*;
import org.apache.Struts.action.
*;

public final class RegUserAction extends Action
{

public ActionForward perform(ActionMapping mapping,
ActionForm form, HttpServletRequest req,
HttpServletResponse res)

String title 
= req.getParameter("title");
String password 
= req.getParameter("password");
String email 
= req.getParameter("email");
/*
取得用戶請(qǐng)求,做相應(yīng)數(shù)據(jù)庫操作,略
*/
 
}

}


FormBean的產(chǎn)生是為了提供數(shù)據(jù)給ActionBean,在ActionBean中可以取得FormBean中封裝的數(shù)據(jù),經(jīng)相應(yīng)的邏輯處理后,調(diào)用業(yè)務(wù)方法完成相應(yīng)業(yè)務(wù)要求。

Servlet的演變:在常規(guī)的 JSP,Servlet,JavaBean三層結(jié)構(gòu)中,JSP實(shí)現(xiàn)View的功能,Servlet實(shí)現(xiàn)Controller的功能,JavaBean實(shí)現(xiàn)Model的實(shí)現(xiàn)。

在Struts中,將常規(guī)情況下的Servlet拆分與ActionServlet、FormBean、ActionBean三個(gè)部分。ActionServlet配合Struts-config.xml,專職完成頁面導(dǎo)航,而不再負(fù)責(zé)具體的數(shù)據(jù)獲取與相應(yīng)邏輯,這兩部分功能由FormBean和ActionBean來完成。

Struts優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
Struts跟Tomcat、Turbine等諸多Apache項(xiàng)目一樣,是開源軟件,這是它的一大優(yōu)點(diǎn)。使開發(fā)者能更深入的了解其內(nèi)部實(shí)現(xiàn)機(jī)制。
除此之外,Struts的優(yōu)點(diǎn)主要集中體現(xiàn)在兩個(gè)方面:Taglib和頁面導(dǎo)航。Taglib是Struts的標(biāo)記庫,靈活動(dòng)用,能大大提高開發(fā)效率。另外,就目前國(guó)內(nèi)的JSP開發(fā)者而言,除了使用JSP自帶的常用標(biāo)記外,很少開發(fā)自己的標(biāo)記,或許Struts是一個(gè)很好的起點(diǎn)。
關(guān)于頁面導(dǎo)航,我認(rèn)為那將是今后的一個(gè)發(fā)展方向,事實(shí)上,這樣做,使系統(tǒng)的脈絡(luò)更加清晰。通過一個(gè)配置文件,即可把握整個(gè)系統(tǒng)各部分之間的聯(lián)系,這對(duì)于后期的維護(hù)有著莫大的好處。尤其是當(dāng)另一批開發(fā)者接手這個(gè)項(xiàng)目時(shí),這種優(yōu)勢(shì)體現(xiàn)得更加明顯。
缺點(diǎn):
Taglib是Struts的一大優(yōu)勢(shì),但對(duì)于初學(xué)者而言,卻需要一個(gè)持續(xù)學(xué)習(xí)的過程,甚至還會(huì)打亂你網(wǎng)頁編寫的習(xí)慣,但是,當(dāng)你習(xí)慣了它時(shí),你會(huì)覺得它真的很棒。
Struts將MVC的Controller一分為三,在獲得結(jié)構(gòu)更加清晰的同時(shí),也增加了系統(tǒng)的復(fù)雜度。
Struts從產(chǎn)生到現(xiàn)在還不到半年,但已逐步越來越多運(yùn)用于商業(yè)軟件。雖然它現(xiàn)在還有不少缺點(diǎn),但它是一種非常優(yōu)秀的J2EE MVC實(shí)現(xiàn)方式,如果你的系統(tǒng)準(zhǔn)備采用J2EE MVC架構(gòu),那么,不妨考慮一下Struts。

Struts實(shí)施經(jīng)驗(yàn):
1、基于Struts架構(gòu)的項(xiàng)目開發(fā),首先需要有一個(gè)很好的整體規(guī)劃,整個(gè)系統(tǒng)中包括哪幾個(gè)模塊,每個(gè)模塊各需要多少FormBean和ActionBean等,而且最好有專人負(fù)責(zé)Struts-config.xml的管理。開發(fā)基于Struts的項(xiàng)目的難點(diǎn)在于配置管理,尤其是對(duì)Struts-config.xml的管理

2、如果你的項(xiàng)目非常緊,并且項(xiàng)目組中又沒有富有經(jīng)驗(yàn)的Struts開發(fā)人員,建議不要冒然采用Struts。Struts的掌握需要一個(gè)過程,對(duì)于一個(gè)熟練的JSP程序員,自學(xué)大概需要半個(gè)月左右的時(shí)間。如果結(jié)合titls,則需要更長(zhǎng)的時(shí)間

3、如果你在網(wǎng)頁中大量運(yùn)用taglib,那么你的美工將做出部分犧牲。當(dāng)你結(jié)合Tiles,功能增強(qiáng)的同時(shí),這種犧牲尤為明顯。當(dāng)然,你對(duì)功能和美觀的取舍由你自己決定

4、Taglib是一個(gè)好東西,但靈活運(yùn)用它卻需要一個(gè)過程,如果你不想在Taglib上花太多的時(shí)間,那么只需理解與FORM有關(guān)的幾個(gè)標(biāo)記,其它的標(biāo)記就放著吧,以后再看,先去研究ActionServlet和Struts-config.xml,你會(huì)覺得很有成就感

5、Struts是否只適合于大型項(xiàng)目呢?No!Struts適合于各種大小的項(xiàng)目,當(dāng)然,對(duì)于大型項(xiàng)目,它所體現(xiàn)出來的優(yōu)勢(shì)更加明顯。



konhon 優(yōu)華 2005-08-27 09:53 發(fā)表評(píng)論
]]>
主站蜘蛛池模板: 国产在线精品一区免费香蕉| 国产乱辈通伦影片在线播放亚洲 | 成人无码a级毛片免费| 亚洲国产系列一区二区三区| 香蕉蕉亚亚洲aav综合| 亚洲天堂中文字幕在线| 日本特黄特黄刺激大片免费| 免费观看国产网址你懂的| 久久久久久久99精品免费观看| 色www免费视频| 亚洲精品乱码久久久久蜜桃| 久久精品国产亚洲av日韩| 国产精品亚洲片在线| 亚洲人成人网站在线观看| 日本高清免费中文字幕不卡| 国产精品69白浆在线观看免费| 嫩草影院在线播放www免费观看| jizz免费观看视频| 在线观看无码AV网站永久免费 | 亚洲国产精品一区第二页| 亚洲av高清在线观看一区二区| 成人免费视频一区| 毛片免费观看网址| 国产精品成人免费视频网站京东| 亚洲精品在线免费看| 在线观看www日本免费网站| 亚洲黄色片免费看| 亚洲黄色免费网址| 日本免费网址大全在线观看| 18级成人毛片免费观看| 美女内射毛片在线看免费人动物| 91精品免费久久久久久久久| 18女人水真多免费高清毛片| 久久99九九国产免费看小说| 亚洲成在人线aⅴ免费毛片| 女人18毛片水真多免费看| 热99re久久免费视精品频软件 | 久久久久久久久无码精品亚洲日韩| 亚洲成在人线在线播放无码| 亚洲av无码片vr一区二区三区| WWW亚洲色大成网络.COM|