RoyJohnson

          生命不息,奮斗不止!
          posts - 4, comments - 9, trackbacks - 0, articles - 0

          2007年6月17日

                                                      Struts框架詳解
          struts-config.xml    Struts配置文件
          ActionServlet  控制器
          Action Class  包含事務(wù)邏輯
          ActionForm  顯示模塊數(shù)據(jù)
          ActionMapping  幫助控制器將請(qǐng)求映射到操作
          ActionForward  用來(lái)指示操作轉(zhuǎn)移的對(duì)象
          ActionError  用來(lái)存儲(chǔ)和回收錯(cuò)誤
          Struts標(biāo)記庫(kù)  可以減輕開(kāi)發(fā)顯示層次的工作

          struts框架的優(yōu)勢(shì)
          1.良好的架構(gòu)和設(shè)計(jì)
          2.可重用,模塊化,擴(kuò)展性好
          3.Open source

          struts-config.xml

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

          FormBean部分

          <struts-config>
            <!--  Form Bean Definitions -->
            <form-beans>
              <form-bean name=“testform" type="com.cjea.test.TestForm" />
            </form-beans> 

          全局轉(zhuǎn)發(fā)部分

          <!-- Global Forward Definitions -->
            <global-forwards>
              <forward   name="failure"     path="bad.jsp"/>
              <forward   name="success"     path="/good.jsp" />
            </global-forwards>

          action部分

          <action-mappings>
             <action path=“/test/test.jsp" type=“com.cjea.test.testAction" name="testform" scope="request">
                  <forward name="success" path="/test/good.jsp" />
             </action>
          <action-mappings> 
          </struts-config>

           ActionServlet

          ActionServlet 是struts框架 MVC 實(shí)現(xiàn)的 controller 部分,它是這一框架的核心。
          ActionServlet 創(chuàng)建并使用 Action、ActionForm 和 ActionForward。

          ActionServlet的基本功能

          截獲用戶(hù)的Http請(qǐng)求
          把這個(gè)請(qǐng)求映射到相應(yīng)的Action類(lèi)。
          創(chuàng)建一個(gè)ActionForm bean實(shí)例,將form請(qǐng)求放入formbean的實(shí)例中
          調(diào)用Action實(shí)例的perform()方法
          將ActioForm bean,Action Mapping對(duì)象,request和response對(duì)象傳給Action的perform()方法
          perform返回一個(gè)ActionForword對(duì)象,根據(jù)方法執(zhí)行情況轉(zhuǎn)到相應(yīng)的jsp頁(yè)面.

           

          Action Classes


          Action 類(lèi)是業(yè)務(wù)邏輯的一個(gè)包裝。Action 類(lèi)的用途是將 HttpServletRequest 轉(zhuǎn)換為業(yè)務(wù)邏輯。

          ActionForm

          ActionForm 維護(hù) Web 應(yīng)用程序的會(huì)話(huà)狀態(tài)。
          ActionForm 是一個(gè)抽象類(lèi),必須為每個(gè)輸入表單模型創(chuàng)建該類(lèi)的子類(lèi)。


          ActionForm的使用

          假定有一個(gè)由 HTML 表單設(shè)置的 TestActionForm。Struts 框架將執(zhí)行以下操作:
          檢查 TestActionForm是否存在;如果不存在,它將創(chuàng)建該類(lèi)的一個(gè)實(shí)例。
          Struts 將使用 HttpServletRequest 中相應(yīng)的域設(shè)置 TestActionForm的狀態(tài)。
          Struts 框架在將 TestActionForm傳遞給TestAction 之前將更新它的狀態(tài)。
          struts-config.xml 文件控制 HTML 表單請(qǐng)求與 ActionForm 之間的映射關(guān)系。
          可將多個(gè)請(qǐng)求映射到 TestActionForm 。

          Struts標(biāo)記庫(kù)
          Struts框架包括自定義標(biāo)簽庫(kù),它可以用 在很多方面。盡管這些庫(kù)并不要求用框 架,但使用它們會(huì)有助于程序的開(kāi)發(fā)。

          Struts標(biāo)記庫(kù)
          struts-bean taglib:包含在訪問(wèn)bean和bean屬性時(shí)使用的tag,也包含一些消息顯示的tag。
          struts-html taglib:包含用來(lái)生成動(dòng)態(tài)HTML用戶(hù)界面和窗體的tag。
          struts-logic taglib :包含的tag用來(lái)管理根據(jù)條件生成輸出文本,和其它一些用來(lái)控制的信息。
          struts-template taglib包含的tag用來(lái)定義模板機(jī)制。

          Bean Taglib
          用于定義新bean、訪問(wèn)bean及其屬性的標(biāo)記
          在struts-bean.tld中定義了它的標(biāo)記庫(kù)描述器
          Bean Taglib主要功能
          創(chuàng)建和復(fù)制bean的標(biāo)記
          腳本變量定義標(biāo)記
          bean翻譯標(biāo)記
          消息國(guó)際化標(biāo)記
          Bean復(fù)制標(biāo)記 (<bean:define>)
          可定義新bean,可復(fù)制現(xiàn)有bean,還可從現(xiàn)有bean復(fù)制屬性。
          定義新字符串常數(shù)
          將現(xiàn)有的bean復(fù)制到新定義的bean對(duì)象
          復(fù)制現(xiàn)有bean的屬性來(lái)創(chuàng)建新的bean
          <bean:define>標(biāo)記屬性:
          Id 新定義的bean腳本變量名稱(chēng),必須設(shè)置
          Type 定義引入腳本變量的類(lèi)
          Value 為id屬性定義的腳本變量分配一個(gè)新的對(duì)象
          <bean:define>標(biāo)記屬性:
          Name 目標(biāo)bean的名稱(chēng)。若value屬性沒(méi)有設(shè)置,這個(gè)屬性就必須設(shè)置
          property Name屬性定義的bean的屬性名稱(chēng),用來(lái)定義新的bean
          Scope 源bean的作用域。若沒(méi)有設(shè)置,搜索范圍是從頁(yè)作用域到應(yīng)用程序作用域
          toScope 目標(biāo)bean的作用域。若沒(méi)有設(shè)置,默認(rèn)值是頁(yè)作用域
          舉例
          定義一個(gè)bean:
          <bean:define id="test" value="this is a test"/>
          源bean在頁(yè)作用域中被拷貝到請(qǐng)求作用域中的另一個(gè)bean:
          <bean:define id="targetBean" name="sourceBean"
          scope="page" toScope="request"/>
          腳本變量的標(biāo)記
          從多種資源中定義和生成腳本變量,這些資源包括cookie,請(qǐng)求參數(shù),HTTP標(biāo)頭等等。
          腳本變量的標(biāo)記屬性:
          Id        腳本變量和要定義的頁(yè)作用域                 屬性的名稱(chēng)
          Name    cookie/標(biāo)頭/參數(shù)的名稱(chēng)
          Value    如果沒(méi)有匹配的cookie或    數(shù)值,就返回這個(gè)屬性指    定的默認(rèn)值

          腳本變量的標(biāo)記屬性:
          multiple 如果這個(gè)屬性設(shè)置了任意一個(gè)數(shù)值,所有匹配的cookie都會(huì)被積累并存儲(chǔ)到一個(gè)Cookie[](一個(gè)數(shù)組)類(lèi)型的bean里           若無(wú)設(shè)置,指定cookie的第一個(gè)值將作為Cookie類(lèi)型的值
          舉例
          <bean:cookie id="myCookie" name="userName"/>
          腳本變量名稱(chēng)是myCookie,用來(lái)創(chuàng)建這個(gè)屬性的cookie的名稱(chēng)是userName。
          <bean:header id="myHeader" name="Accept-Language"/>
          腳本變量名稱(chēng)是myHeader,請(qǐng)求標(biāo)頭的名稱(chēng)是Accept-Language.

          舉例
          <bean:parameter id="myParameter" name="myParameter">
          腳本變量名稱(chēng)是myPatameter,它保存的請(qǐng)求參數(shù)的名稱(chēng)也是myParameter
          邏輯標(biāo)記
          Struts邏輯標(biāo)簽庫(kù)包含的標(biāo)記能夠有條件地產(chǎn)生輸出文本
          在對(duì)象集合中循環(huán)從而重復(fù)地產(chǎn)生輸出文本,以及應(yīng)用程序流程控制
          它也提供了一組在JSP頁(yè)中處理流程控制的標(biāo)記
          邏輯標(biāo)記封裝在文件名為struts-logic.tld的標(biāo)記包中
          邏輯標(biāo)記庫(kù)的功能
          條件邏輯
          重復(fù)
          轉(zhuǎn)發(fā)/重定向響應(yīng)
          條件邏輯標(biāo)記
          第一類(lèi)可以比較下列實(shí)體與一個(gè)常數(shù)的大小
          第二類(lèi)在計(jì)算標(biāo)記體之前判斷特定的項(xiàng)目是否存在
          第三類(lèi)根據(jù)模板匹配的結(jié)果檢查標(biāo)記體的內(nèi)容
          第一類(lèi)條件邏輯標(biāo)記
          <equal>  如果常數(shù)與被定義的實(shí)體相等,返回true
          <notEqual> 如果常數(shù)與被定義的實(shí)體不相等,返回true
          <greaterEqual> 如果常數(shù)大于等于被定義的實(shí)體,返回true
          第一類(lèi)條件邏輯標(biāo)記
          <lessEqual> 如果常數(shù)小于等于被定義的實(shí)體,返回true
          <lessThan> 如果常數(shù)小于被定義的實(shí)體,返回true
          <greaterThan> 如果常數(shù)大于被定義的實(shí)體,返回true
          舉例
          判斷名為"name"的請(qǐng)求參數(shù)的值是否是"SomeName"。
          <logic:equal parameter="name" value="SomeName">
                  The entered name is SomeName
          </logic:equal>
          舉例
          判斷在頁(yè)的作用域中是否有一個(gè)名為"bean"的bean,它有一個(gè)prop屬性,這個(gè)屬性的值是否大于7。
          如果這個(gè)屬性能夠轉(zhuǎn)化為數(shù)值,就進(jìn)行數(shù)值比較,否則就進(jìn)行字符串比較。
          <logic:greaterThan name="bean" property="prop" scope="page" value="7">
          The value of bean.Prop is greater than 7
          </logic:greaterThan>
          第二類(lèi)條件邏輯標(biāo)記
          <logic:present>
          <logic:notPresent>
          第三類(lèi)條件邏輯標(biāo)記
          <logic:match>
          <logic:notMatch>
          重復(fù)標(biāo)記<logic:iterate>
          它能夠根據(jù)特定集合中元素的數(shù)目對(duì)標(biāo)記體的內(nèi)容進(jìn)行重復(fù)的檢查
          集合的類(lèi)型
          java.util.Iterator
          java.util.Collection
          java.util.Map
          java.util.List
          數(shù)組
          舉例
          Strlst是一個(gè)包含字符串的List,現(xiàn)在要將他內(nèi)部的字符串全都顯示在瀏覽器里
          <logic:iterate id="element" name="strlst"  indexId="index">
          <%=(String)element)%>
          </logic:iterate>
          轉(zhuǎn)發(fā)標(biāo)記
          <logic:forward>標(biāo)記能夠?qū)㈨憫?yīng)轉(zhuǎn)發(fā)給重定向到特定的全局ActionForward上
          ActionForward的類(lèi)型決定了是使用PageContext轉(zhuǎn)發(fā)響應(yīng),還是使用sendRedirect將響應(yīng)進(jìn)行重定向
          此標(biāo)記只有一個(gè)"name"屬性,用來(lái)指定全局ActionForward的名稱(chēng),例如:
          <logic:forward name="myGlobalForward"/>
          重定向標(biāo)記
          <logic:redirect>標(biāo)記是一個(gè)能夠執(zhí)行HTTP重定向的強(qiáng)大工具。
          根據(jù)指定的不同屬性,它能夠通過(guò)不同的方式實(shí)現(xiàn)重定向。
          它還允許開(kāi)發(fā)人員指定重定向URL的查詢(xún)參數(shù)。
          HTML標(biāo)記
          Struts HTML標(biāo)記可以大致地分為以下幾個(gè)功能:
          顯示表單元素和輸入控件
          顯示錯(cuò)誤信息
          顯示其他HTML元素
          模板標(biāo)記
          Struts模板標(biāo)記可以大致地分為以下幾個(gè)功能:
          插入標(biāo)記<template:insert>
          放置標(biāo)記<template:put>
          獲得標(biāo)記<template:get>

          posted @ 2007-06-17 18:07 roy_johnson 閱讀(1429) | 評(píng)論 (2)編輯 收藏

          2007年6月16日

                                                                  Struts 初始化處理流程
             根據(jù)在web.xml中配置的初始化參數(shù),Servlet容器將決定在在容器的第一次啟動(dòng),或第一次客戶(hù)請(qǐng)求ActionServlet 的時(shí)機(jī)加載ActionServlet ,不管哪種方式加載,和其它Servlet一樣,ActionServlet 的init( )方法將被調(diào)用,開(kāi)始初始化過(guò)程。讓我們來(lái)看看在初始化過(guò)程中將發(fā)生些什么,理解了這些,對(duì)于我們debug和擴(kuò)展自己的應(yīng)用更加得心應(yīng)手。
             1   初始化框架的內(nèi)部消息綁定,這些消息用來(lái)輸出提示,警告,和錯(cuò)誤信息到日志文件中。
                 org.apache.struts.action.ActionResources用來(lái)獲取內(nèi)部消息;
             2   加載web.xml中定義的不同參數(shù),用以控制ActionServlet 的不同行為,這些參數(shù)包括 config, debug, detail, and convertNull ;
             3   加載并初始化web.xml中定義的servlet 名稱(chēng)和servlet映射信息。通過(guò)初始化,框架的各種DTD被注冊(cè),DTD用來(lái)在下一步校驗(yàn)配置文件的有效性;
             4、為默認(rèn)應(yīng)用加載并初始化Struts配置文件,配置文件即初始化參數(shù)config指定的文件。默認(rèn)配置文件被解析, 產(chǎn)生一個(gè)ApplicationConfig對(duì)象存于ServletContext 中。可以通過(guò)關(guān)鍵字 org.apache.struts.action.APPLICATION 從ServletContext 中獲取ApplicationConfig;
             5   Struts配置文件中指定的每一個(gè)消息資源都被加載,初始化,并存在ServletContext 的合適區(qū)域(基于每個(gè)message-resources元素的key 屬性),如果key 屬性沒(méi)有設(shè)置,則為org.apache.struts.action.MESSAGE;
             6   Struts配置文件中聲明的每一個(gè)數(shù)據(jù)源被加載并且初始化,如果沒(méi)有配置數(shù)據(jù)源,這一步跳過(guò);
             7   加載并初始化Struts配置文件中指定的插件。每一個(gè)插件的init()方法被調(diào)用;
            8   當(dāng)默認(rèn)應(yīng)用加載完成,init()方法判斷是否有應(yīng)用模塊需要加載,如果有,重復(fù)4—7完成應(yīng)用模塊的加載。

          posted @ 2007-06-16 17:56 roy_johnson 閱讀(996) | 評(píng)論 (1)編輯 收藏

           

                                                          論J2EE程序員的武功修為(轉(zhuǎn))
           EasyJF開(kāi)源團(tuán)隊(duì)(www.easyjf.com) 大峽

            經(jīng)常會(huì)跟一些朋友討論怎么樣才能學(xué)好Java,學(xué)到什么程度才算撐握了Java的問(wèn)題。其中有一個(gè)J2EE程序員層次及武功修為的問(wèn)題,有點(diǎn)意思。這里就把討論的內(nèi)容大致整理一下發(fā)出來(lái),大家繼續(xù)討論。

            縱觀國(guó)內(nèi)的軟件行業(yè),靠Java吃飯的程序員還真不是少,而且Java程序員是有很大優(yōu)越感的,畢竟對(duì)于很多用b/s搞開(kāi)發(fā)的業(yè)內(nèi)朋友來(lái)說(shuō),Java技術(shù)意味著難度大、門(mén)檻高,因此相對(duì)來(lái)說(shuō)Java程序員比其它的程序員(如php、.net)收入高就理所當(dāng)然。然而J2EE所涉及到的范疇是很廣的,不能一個(gè)Java程序員就概括了事,而應(yīng)該具有層次及水平之分,很多時(shí)候經(jīng)常需要進(jìn)行分類(lèi)或評(píng)級(jí),有時(shí)他評(píng)、有時(shí)自評(píng)。

            談到國(guó)內(nèi)J2EE領(lǐng)域的程序員層次水平,當(dāng)前流行的稱(chēng)謂及評(píng)級(jí)不外乎就下面幾種:
            第一種是精通掌握記事本、Dreamweaver等工具來(lái)寫(xiě)JSP+JavaBean數(shù)據(jù)庫(kù)應(yīng)用的是J2EE程序員;
            第二種是用JBuilder、Eclipse等專(zhuān)用Java開(kāi)發(fā)工具寫(xiě)著一堆一堆過(guò)程式Java Bean,而且還能精通Struts+Spring+Hibernate等應(yīng)用框架的高級(jí)J2EE程序員;
            第三種是用Together建模,然后生成一堆Java接口或代碼,開(kāi)口閉口都是設(shè)計(jì)模式的資深Java程序同及高級(jí)系統(tǒng)分析、構(gòu)架師;
            最后還有一種是整天在BlogJava或JavaEye上談經(jīng)論道的大師們,這些大師技術(shù)水平難以觸摸,武功門(mén)派也各具特色,不好歸類(lèi),有時(shí)不好稱(chēng)為程序員(因?yàn)橛械臅r(shí)候他們甚至不寫(xiě)或者寫(xiě)不出程序),但又做著與J2EE程序員密切相關(guān)的事情,我們暫且就歸為“牛牛”或“大師”。

            稱(chēng)謂畢竟只是稱(chēng)謂,帶有點(diǎn)主觀或者功利色彩,有時(shí)很難鑒定一個(gè)人應(yīng)該屬于什么,因此,我們?cè)購(gòu)募兗夹g(shù)的角度,也即武功修為的角度,作了一個(gè)簡(jiǎn)單的分析及歸類(lèi),把2EE領(lǐng)域程序員大致分成以下幾個(gè)層次,可以作為大家自評(píng)的一個(gè)參考標(biāo)準(zhǔn):

            第一個(gè)層次:精通掌握J(rèn)ava語(yǔ)法、能調(diào)試基本的程序錯(cuò)誤,精通掌握J(rèn)SP+Java Bean寫(xiě)一些N年前ASP、PHP翻版的Java Web應(yīng)用程序(如論壇、網(wǎng)站新聞發(fā)布系統(tǒng)、OA、網(wǎng)上商城等),精通JDBC使用、精通SQL語(yǔ)句、精通XML等。

            第二個(gè)層次:掌握設(shè)計(jì)模式原理及應(yīng)用,掌握基于OO的分析及設(shè)計(jì)方法,并能精通熟練使用幾種Java專(zhuān)業(yè)設(shè)計(jì)及開(kāi)發(fā)工具,精通掌握流行的J2EE框架如Hibernate、EJB、Webwork、Spring的原理及應(yīng)用,精通J2EE中一兩個(gè)組成部分(如Servlet、EJB等)的工作原理及細(xì)節(jié)。

            第三個(gè)層次:少林的高僧有兩種,禪僧及武僧。J2EE程序員的第三個(gè)層次也同樣有禪、武兩個(gè)分支,這里我們重點(diǎn)分析一下:

            第一個(gè)分支屬于走的禪僧線路。在練完第二個(gè)層次中的各種武功基礎(chǔ)上,結(jié)合實(shí)際項(xiàng)目中的千奇百怪的用戶(hù)需求,游刃有余的選擇適合的技術(shù)方案為客戶(hù)解決問(wèn)題,并形成自己的一套解決方案。達(dá)到這一個(gè)層次的J2EE程序員已經(jīng)不在乎使用任何工具、任何框架了,而是根據(jù)不同的對(duì)手,使用不同的武器或招式來(lái)應(yīng)對(duì)。好比小李飛刀一樣,只有達(dá)到了“手中無(wú)刀、心中有刀”的境界,才能達(dá)到“出手一刀,例不虛發(fā)”的效果。這一層次的武功屬于一個(gè)熟練度問(wèn)題,刀練得多了、遇到的對(duì)手多了,再加上前面的武功修為,就算做不到例不虛發(fā),也可達(dá)到十發(fā)九中。

            第二個(gè)分支屬于走的武僧線路,在撐握熟悉第一二個(gè)層次中涉及到的內(nèi)容后,進(jìn)一步專(zhuān)研并撐握J(rèn)2EE底層開(kāi)發(fā),J2EE規(guī)范制訂、規(guī)范實(shí)現(xiàn)、Java虛擬機(jī)的工作原理、各種常見(jiàn)的J2EE服務(wù)器內(nèi)核工作機(jī)制、內(nèi)存管理、進(jìn)程機(jī)制、源代碼等。因?yàn)樯婕暗暮芏鄸|西都比較抽象,代碼也很多,練這一層的武功需要有很好的資質(zhì)及耐性、并具還得有一定的環(huán)境及條件。好比神雕大俠楊過(guò)拿起“玄鐵劍”,并練成“暗然銷(xiāo)魂掌”的成長(zhǎng)過(guò)程,需要前面的武功修為作基礎(chǔ),更需那只威力神武神雕的幫助指點(diǎn)及他處處為民、懲奸除惡的俠之心態(tài)。
            
            胡侃了這么多,現(xiàn)在來(lái)根據(jù)自己情況測(cè)算一下自己的份量,結(jié)果如下:
            第一層 練到8成;
            第二層 練到5成;
            第三層 準(zhǔn)備走禪僧線路,當(dāng)前算是練到1成;
            
            唉,后面的武功提升越來(lái)越難,真不知道要到何年何月才能達(dá)到10成啊。你的武功練到哪一個(gè)層次了,不防亮出來(lái)大家切磋切磋。嘿嘿,要是有一天,咱們中國(guó)的Java程序員人手一把“玄鐵劍”、人人會(huì)使“暗然銷(xiāo)魂掌”,那還了得!汗...,寫(xiě)著寫(xiě)著居然做起白日夢(mèng)了,不好意思,就此打住。
            
            手中雞蛋先別扔,還要打個(gè)廣告:本人剛開(kāi)始涉足Java開(kāi)源,目前在EasyJF開(kāi)源團(tuán)隊(duì)中負(fù)責(zé)EasyJWeb(官網(wǎng)www.easyjf.com)項(xiàng)目,歡迎大家前來(lái)指導(dǎo)。

          作者Blog:http://blog.csdn.net/psyl/

          posted @ 2007-06-16 16:37 roy_johnson 閱讀(365) | 評(píng)論 (2)編輯 收藏

                很多新手都不知道如何開(kāi)始學(xué)習(xí)JSP,本人就個(gè)人學(xué)習(xí)的一些經(jīng)歷在這里簡(jiǎn)單得談一下。
                首先,你得對(duì)WEB應(yīng)用開(kāi)發(fā)感興趣,因?yàn)榕d趣是最好的老師,更是你學(xué)習(xí)前進(jìn)的動(dòng)力,如果只是抱這學(xué)學(xué)看的態(tài)度,本人建議不要開(kāi)始學(xué)。那樣既浪費(fèi)了時(shí)間又浪費(fèi)了精力。有了興趣,一切就好說(shuō)了,學(xué)得多快那就看你個(gè)人的能力了。
                從HTML開(kāi)始下手,一星期即可搞定HTML。因?yàn)殚_(kāi)發(fā)WEB應(yīng)用要求你能看懂網(wǎng)頁(yè)代碼,然后是Java語(yǔ)言基礎(chǔ),Java語(yǔ)言學(xué)習(xí)的時(shí)間可能要長(zhǎng)些。等前面這兩項(xiàng)熟悉了,就要開(kāi)始學(xué)習(xí)JavaScript和CSS,當(dāng)然作為后臺(tái)程序員后面這兩項(xiàng)了解即可。
               再接下來(lái)就要學(xué)習(xí)一下JDBC的技術(shù)了。數(shù)據(jù)庫(kù)建議先學(xué)習(xí)Mysql,然后再學(xué)習(xí)Mssql,Oracle,最后還要熟悉WEB服務(wù)器,初學(xué)者建議學(xué)習(xí)Tomcat,等這些都熟悉了。開(kāi)始嘗試著開(kāi)發(fā)幾個(gè)系統(tǒng),比如信息管理系統(tǒng),聊天室,論壇等。
               再往后就要學(xué)習(xí)Struts,Hibernate,Spring等高級(jí)技術(shù)了。
               今后我會(huì)逐步介紹以上技術(shù),最后還會(huì)教大家開(kāi)發(fā)一個(gè)基于Struts+Hibernate+Spring的實(shí)例。大家希望看到那方面的知識(shí)或有何好的建議。可以給我留言,或發(fā)表在評(píng)論里。

          posted @ 2007-06-16 11:48 roy_johnson 閱讀(758) | 評(píng)論 (4)編輯 收藏

          主站蜘蛛池模板: 凤山县| 山阴县| 台山市| 富川| 五台县| 海原县| 昭觉县| 葵青区| 安塞县| 安泽县| 栖霞市| 潼南县| 治多县| 宜兰市| 霍林郭勒市| 怀集县| 禹州市| 安仁县| 庆阳市| 临洮县| 广饶县| 阳春市| 清苑县| 图木舒克市| 尚志市| 交口县| 陇西县| 永城市| 班戈县| 始兴县| 巴马| 太湖县| 沧源| 卫辉市| 霍城县| 洪泽县| 大邑县| 红河县| 佛教| 上高县| 峨眉山市|