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

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

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

    JAVA學習

    JAVA學習

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      2 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks

    2007年11月5日 #

    Struts2與Struts1的對比

    來源:struts2開發組

    Action 類:
    " Struts1要求Action類繼承一個抽象基類。Struts1的一個普遍問題是使用抽象類編程而不是接口。
    " Struts 2 Action類可以實現一個Action接口,也可實現其他接口,使可選和定制的服務成為可能。Struts2提供一個ActionSupport基類去實現常用的接口。Action接口不是必須的,任何有execute標識的POJO對象都可以用作Struts2的Action對象。

    線程模式:
    " Struts1 Action是單例模式并且必須是線程安全的,因為僅有Action的一個實例來處理所有的請求。單例策略限制了Struts1 Action能作的事,并且要在開發時特別小心。Action資源必須是線程安全的或同步的。
    " Struts2 Action對象為每一個請求產生一個實例,因此沒有線程安全問題。(實際上,servlet容器給每個請求產生許多可丟棄的對象,并且不會導致性能和垃圾回收問題)

    Servlet 依賴:
    " Struts1 Action 依賴于Servlet API ,因為當一個Action被調用時HttpServletRequest 和 HttpServletResponse 被傳遞給execute方法。
    " Struts 2 Action不依賴于容器,允許Action脫離容器單獨被測試。如果需要,Struts2 Action仍然可以訪問初始的request和response。但是,其他的元素減少或者消除了直接訪問HttpServetRequest 和 HttpServletResponse的必要性。

    可測性:
    " 測試Struts1 Action的一個主要問題是execute方法暴露了servlet API(這使得測試要依賴于容器)。一個第三方擴展--Struts TestCase--提供了一套Struts1的模擬對象(來進行測試)。
    " Struts 2 Action可以通過初始化、設置屬性、調用方法來測試,“依賴注入”支持也使測試更容易。

    捕獲輸入:
    " Struts1 使用ActionForm對象捕獲輸入。所有的ActionForm必須繼承一個基類。因為其他JavaBean不能用作ActionForm,開發者經常創建多余的類捕獲輸入。動態Bean(DynaBeans)可以作為創建傳統ActionForm的選擇,但是,開發者可能是在重新描述(創建)已經存在的JavaBean(仍然會導致有冗余的javabean)。
    " Struts 2直接使用Action屬性作為輸入屬性,消除了對第二個輸入對象的需求。輸入屬性可能是有自己(子)屬性的rich對象類型。Action屬性能夠通過web頁面上的taglibs訪問。Struts2也支持ActionForm模式。rich對象類型,包括業務對象,能夠用作輸入/輸出對象。這種ModelDriven 特性簡化了taglib對POJO輸入對象的引用。

    表達式語言:
    " Struts1 整合了JSTL,因此使用JSTL EL。這種EL有基本對象圖遍歷,但是對集合和索引屬性的支持很弱。
    " Struts2可以使用JSTL,但是也支持一個更強大和靈活的表達式語言--"Object Graph Notation Language" (OGNL).

    綁定值到頁面(view):
    " Struts 1使用標準JSP機制把對象綁定到頁面中來訪問。
    " Struts 2 使用 "ValueStack"技術,使taglib能夠訪問值而不需要把你的頁面(view)和對象綁定起來。ValueStack策略允許通過一系列名稱相同但類型不同的屬性重用頁面(view)。
     
    類型轉換:
    " Struts 1 ActionForm 屬性通常都是String類型。Struts1使用Commons-Beanutils進行類型轉換。每個類一個轉換器,對每一個實例來說是不可配置的。
    " Struts2 使用OGNL進行類型轉換。提供基本和常用對象的轉換器。

    校驗:
    " Struts 1支持在ActionForm的validate方法中手動校驗,或者通過Commons Validator的擴展來校驗。同一個類可以有不同的校驗內容,但不能校驗子對象。
    " Struts2支持通過validate方法和XWork校驗框架來進行校驗。XWork校驗框架使用為屬性類類型定義的校驗和內容校驗,來支持chain校驗子屬性

    Action執行的控制:
    " Struts1支持每一個模塊有單獨的Request Processors(生命周期),但是模塊中的所有Action必須共享相同的生命周期。
    " Struts2支持通過攔截器堆棧(Interceptor Stacks)為每一個Action創建不同的生命周期。堆棧能夠根據需要和不同的Action一起使用。

    posted @ 2007-12-24 11:02 痞子杰 閱讀(239) | 評論 (0)編輯 收藏

    第一部分: Struts 開發 6.83MB 22分36秒 http://beansoft.java-cn.org/download/ssh_1_struts.exe

    第二部分: Hibernate + Spring 11.5MB 38分59秒 http://beansoft.java-cn.org/download/ssh_2_hibernate_spring.exe

    第三部分: 自己實現 SpringProxyAction 5.05MB 14分25秒 http://beansoft.java-cn.org/download/ssh_3_struts_proxy_asm.exe

    第四部分: ASM 錯誤解決及用 Spring 的代理實現整合 9.95MB 23分49秒 http://beansoft.java-cn.org/download/ssh_4_spring_struts.exe

    大綱 PDF 下載: http://beansoft.java-cn.org/download/spring_struts_hibernate.pdf 427KB

    代碼下載(不帶類庫): http://beansoft.java-cn.org/download/myssh.rar 45KB

     

    視頻大綱:

    Java EE 講座

    MyEclipse 5.5 開發 Spring 整合 Struts, Hibernate 的應用

    劉長炯

    2007.10

    本章要點

    *創建數據庫

    *快速開發 Struts 應用

    *添加 Hibernate 功能

    *添加 Spring 功能

    *Spring 整合 Hibernate

    *模擬 Action 代理類實現 Struts + Spring

    *Spring 整合 Struts

    *Asm 出錯和 log4j.properties 文件

    *測試運行

    創建數據庫

    • 創建數據庫

    Ø 用 MyEclipse Derby 或者其它數據庫
    Ø 用 MyEclipse Database Explorer 管理數據庫
    Ø 執行 SQL:
    • CREATE TABLE bbsuser (
    • id int(11) NOT NULL,
    • username varchar(200) NOT NULL,
    • password varchar(20) NOT NULL,
    • age int,
    • PRIMARY KEY (id)
    • )
    • ENGINE=MyISAM DEFAULT CHARSET=GBK;

    快速開發 Struts 應用

    添加 Hibernate 功能

    添加 Spring 功能

    Spring 整合 Hibernate

    Spring 整合 Hibernate(續)

    模擬 Action 代理類實現 Struts + Spring

    Spring 整合 Struts

    • 添加 Spring Plug in

    Ø <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
    Ø <set-property property="contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml" />
    Ø </plug-in>

    • 替換 Action 的 Type

    Ø <action path="/login“ …
    Ø type="org.springframework.web.struts.DelegatingActionProxy" />

    • 在 Spring 配置文件中配置 Bean

    Ø 要點: 通過 path 和 bean 的 name 進行匹配, 這兩個值必須一樣
    Ø <bean name="/login" class="com.test.struts.action.LoginAction"></bean>

    • 注入 DAO 的代理 bean

    • 詳細步驟參考文檔

    Spring 整合 Struts 的兩種方式

    • struts1加載spring的兩種方式:
    第一種:通過web.xml配置加載spring上下文環境,其配置方式如下:
    web.xml
         <context-param>
             <param-name>contextConfigLocation</param-name>
             <param-value>/WEB-INF/applicationContext.xml</param-value>
           </context-param>
    通過listener加載
    <listener>
                 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
           </listener>
    或者利用severlet類加載
    <servlet>
                 <servlet-name>context</servlet-name>
                 <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
                 <load-on-startup>1</load-on-startup>
             </servlet>
    第二種方式:
    使用Struts插件
    在struts-config.xml中
    <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
            <set-property property="contextConfigLocation"
                value="/WEB-INF/applicationContext.xml"/>
        </plug-in>

    • 這兩種配置的明顯區別就是,第一種方式可以配置多個spring配置文件。

    Asm 出錯和 log4j.properties 文件

    • Log4j.properties

    Ø # Configure logging for testing: optionally with log file
    Ø log4j.rootLogger=WARN, stdout
    Ø # log4j.rootLogger=WARN, stdout, logfile
    Ø log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    Ø log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    Ø log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
    Ø log4j.appender.logfile=org.apache.log4j.FileAppender
    Ø log4j.appender.logfile.File=target/spring.log
    Ø log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
    Ø log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

    • 刪除 asm-2.2.3.jar

    測試運行

    • 測試運行

    Ø 用 MyEclipse 發布到 Tomcat
    Ø 運行
    Ø 打開瀏覽器測試
    posted @ 2007-11-05 11:58 痞子杰 閱讀(1145) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 无码午夜成人1000部免费视频| 又硬又粗又长又爽免费看 | 亚洲啪啪免费视频| 亚洲av日韩av高潮潮喷无码| a级毛片免费在线观看| 亚洲韩国精品无码一区二区三区| 国产又黄又爽胸又大免费视频| 伊人婷婷综合缴情亚洲五月| 久久国产精品免费一区二区三区| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 亚洲爽爽一区二区三区| 一级毛片免费毛片毛片| 亚洲综合国产一区二区三区| 18禁在线无遮挡免费观看网站| 亚洲人成在线影院| 国产情侣激情在线视频免费看| 亚洲乱码日产精品BD在线观看| 国产又黄又爽又猛免费app| 最新亚洲人成无码网站| 国产精品亚洲mnbav网站| 午夜精品一区二区三区免费视频| 亚洲综合网美国十次| 国产桃色在线成免费视频| 男女超爽视频免费播放| 亚洲精品国产精品乱码视色| 6080午夜一级毛片免费看| 亚洲精品日韩一区二区小说| 亚洲情侣偷拍精品| 57pao国产成视频免费播放| 亚洲欧美日韩国产精品一区| 亚洲最大激情中文字幕| 99久久99这里只有免费费精品| 特级毛片全部免费播放| 亚洲AV福利天堂一区二区三| 嫩草视频在线免费观看| 99视频在线观看免费| 亚洲乱码一二三四区国产| 亚洲国产成人精品久久久国产成人一区二区三区综 | 久久精品国产99国产精品亚洲| 四虎影库久免费视频| 日本免费一区二区三区|