JAVA學習

          JAVA學習

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

          2007年12月24日 #

          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 痞子杰 閱讀(240) | 評論 (0)編輯 收藏

          2007年11月5日 #

          第一部分: 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 痞子杰 閱讀(1146) | 評論 (0)編輯 收藏

          僅列出標題  
          主站蜘蛛池模板: 阜城县| 万安县| 汕尾市| 孝义市| 铜鼓县| 潼关县| 贵州省| 陇西县| 长治县| 元阳县| 桃园市| 鹤庆县| 武汉市| 漳平市| 大同市| 马关县| 清丰县| 竹北市| 西平县| 深水埗区| 平江县| 阿巴嘎旗| 松潘县| 榆社县| 商水县| 沙坪坝区| 富川| 开化县| 招远市| 安阳市| 洛川县| 汉中市| 二手房| 晋州市| 安国市| 德钦县| 小金县| 青州市| 正镶白旗| 抚宁县| 平罗县|