<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    RoyJohnson

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

    2007年6月17日

                                                Struts框架詳解
    struts-config.xml    Struts配置文件
    ActionServlet  控制器
    Action Class  包含事務邏輯
    ActionForm  顯示模塊數據
    ActionMapping  幫助控制器將請求映射到操作
    ActionForward  用來指示操作轉移的對象
    ActionError  用來存儲和回收錯誤
    Struts標記庫  可以減輕開發顯示層次的工作

    struts框架的優勢
    1.良好的架構和設計
    2.可重用,模塊化,擴展性好
    3.Open source

    struts-config.xml

    Struts-config.xml集中了所有頁面的導航定義。對于大型的WEB項目,通過此配置文件即可迅速把握其脈絡,這不管是對于前期的開發,還是后期的維護或升級都是大有裨益的。掌握Struts-config.xml是掌握Struts的關鍵所在。

    FormBean部分

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

    全局轉發部分

    <!-- 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 實現的 controller 部分,它是這一框架的核心。
    ActionServlet 創建并使用 Action、ActionForm 和 ActionForward。

    ActionServlet的基本功能

    截獲用戶的Http請求
    把這個請求映射到相應的Action類。
    創建一個ActionForm bean實例,將form請求放入formbean的實例中
    調用Action實例的perform()方法
    將ActioForm bean,Action Mapping對象,request和response對象傳給Action的perform()方法
    perform返回一個ActionForword對象,根據方法執行情況轉到相應的jsp頁面.

     

    Action Classes


    Action 類是業務邏輯的一個包裝。Action 類的用途是將 HttpServletRequest 轉換為業務邏輯。

    ActionForm

    ActionForm 維護 Web 應用程序的會話狀態。
    ActionForm 是一個抽象類,必須為每個輸入表單模型創建該類的子類。


    ActionForm的使用

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

    Struts標記庫
    Struts框架包括自定義標簽庫,它可以用 在很多方面。盡管這些庫并不要求用框 架,但使用它們會有助于程序的開發。

    Struts標記庫
    struts-bean taglib:包含在訪問bean和bean屬性時使用的tag,也包含一些消息顯示的tag。
    struts-html taglib:包含用來生成動態HTML用戶界面和窗體的tag。
    struts-logic taglib :包含的tag用來管理根據條件生成輸出文本,和其它一些用來控制的信息。
    struts-template taglib包含的tag用來定義模板機制。

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

    腳本變量的標記屬性:
    multiple 如果這個屬性設置了任意一個數值,所有匹配的cookie都會被積累并存儲到一個Cookie[](一個數組)類型的bean里           若無設置,指定cookie的第一個值將作為Cookie類型的值
    舉例
    <bean:cookie id="myCookie" name="userName"/>
    腳本變量名稱是myCookie,用來創建這個屬性的cookie的名稱是userName。
    <bean:header id="myHeader" name="Accept-Language"/>
    腳本變量名稱是myHeader,請求標頭的名稱是Accept-Language.

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

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

    2007年6月16日

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

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

     

                                                    論J2EE程序員的武功修為(轉)
     EasyJF開源團隊(www.easyjf.com) 大峽

      經常會跟一些朋友討論怎么樣才能學好Java,學到什么程度才算撐握了Java的問題。其中有一個J2EE程序員層次及武功修為的問題,有點意思。這里就把討論的內容大致整理一下發出來,大家繼續討論。

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

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

      稱謂畢竟只是稱謂,帶有點主觀或者功利色彩,有時很難鑒定一個人應該屬于什么,因此,我們再從純技術的角度,也即武功修為的角度,作了一個簡單的分析及歸類,把2EE領域程序員大致分成以下幾個層次,可以作為大家自評的一個參考標準:

      第一個層次:精通掌握Java語法、能調試基本的程序錯誤,精通掌握JSP+Java Bean寫一些N年前ASP、PHP翻版的Java Web應用程序(如論壇、網站新聞發布系統、OA、網上商城等),精通JDBC使用、精通SQL語句、精通XML等。

      第二個層次:掌握設計模式原理及應用,掌握基于OO的分析及設計方法,并能精通熟練使用幾種Java專業設計及開發工具,精通掌握流行的J2EE框架如Hibernate、EJB、Webwork、Spring的原理及應用,精通J2EE中一兩個組成部分(如Servlet、EJB等)的工作原理及細節。

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

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

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

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

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

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

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

    主站蜘蛛池模板: 久久久久亚洲国产| 亚洲精品午夜久久久伊人| 亚洲第一第二第三第四第五第六| 91禁漫免费进入| 91精品国产亚洲爽啪在线影院| 免费无码又爽又刺激网站直播| 中文字幕不卡亚洲| 国产乱妇高清无乱码免费| 国产偷国产偷亚洲高清日韩| 久久免费视频一区| 亚洲日韩精品一区二区三区| 中文字幕av免费专区| 亚洲av日韩av无码| 成年黄网站色大免费全看| 亚洲av无码片区一区二区三区| 99久久免费国产精品特黄| 亚洲熟妇AV日韩熟妇在线| 免费乱理伦在线播放| 一级毛片免费一级直接观看| 中文亚洲AV片不卡在线观看| 黄网站免费在线观看| 亚洲一区二区三区四区在线观看| 免费精品国产自产拍在线观看图片 | 亚洲日韩中文字幕一区| 日韩毛片免费在线观看| 一级毛片免费毛片毛片| 亚洲av中文无码乱人伦在线播放| 日韩精品免费一级视频| 男男gvh肉在线观看免费| 亚洲乱码中文字幕久久孕妇黑人| 美女被cao网站免费看在线看| 亚洲美女视频网址| 日韩中文字幕在线免费观看| 久久性生大片免费观看性| 中文字幕在线观看亚洲| 国产最新凸凹视频免费| 免费的全黄一级录像带| 亚洲欧美成人av在线观看| 亚洲精品国产日韩无码AV永久免费网| 久草免费福利视频| 亚洲AV综合色区无码一二三区|