999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Struts1框架與Struts2框架的對比分析

2010-04-05 17:05:29劉曉峰
電大理工 2010年2期
關鍵詞:頁面方法

劉曉峰

遼寧廣播電視大學(沈陽110034 )

0 引言

Struts2是Apache的開源框架之一,Struts2與Struts1相比。有很多革命性的改進,但它并不是新發布的框架,而是在WebWork框架基礎上發展起來的。因為Struts2是Webwork的升級.而不是一個全新的框架,因此穩定性、性能等各方面都有很好的保證:而且吸收了Struts1和WebWork兩者的優勢。

1 Struts1框架與Struts2框架簡介

1.1 Struts1框架簡介

Struts1最初由程序員Craig R.Mcclanahan發布,Apache軟件基金會于2002年接手該項目。Struts1提供了一個極好的框架,可以容易地整合JSP、Servlet和Java代碼。隨著Java的發展,Struts1已經成為MVC設計模式的常用架構,并被廣大的程序員所接受,在Web開發應用中獲得了巨大成功。

1.2 Struts2框架簡介

Struts2采用一種非常松耦合的設計,讓系統Action不再與Sevlet API耦合,增強了單元的測試性。Struts2具有強大的標簽庫,這些標簽不僅提供了表現層的數據處理,同時還提供了國際化、Ajax、上傳下載的功能。

2 Struts1框架與Struts2框架的對比分析

Struts2相對于Struts1已經發生了很多變化,使用起來更簡單、便捷。下面是Struts2與Struts1的特性比較:

(1)Action類

Struts1要求Action類要擴展自一個抽象基類。Struts1的一個共有的問題是面向抽象類編程而不是面向接口編程。

Struts2的Action類實現了一個Action接口,連同其他接口一起來實現可選擇和自定義的服務。Struts2提供一個名叫ActionSupport的基類來實現一般使用的接口。當然,Action接口不是必須的。任何使用execute方法的POJO對象可以被當作Struts2的Action對象來使用。

(2)線程模型

Struts1的Action類是單例類,因為只有一個實例來控制所有的請求。單例類策略造成了一定的限制,并且給開發帶來了額外的煩惱。Action資源必須是線程安全或者同步的。

Struts2 的Action對象為每一個請求都實例化對象,所以沒有線程安全的問題。

(3)Servlet依賴

Struts1的Action類依賴于Servlet API,當Action被調用時,以 HttpServletRequest和HttpServletResponse作為參數傳給execute方法。

Struts2的Action和容器無關。Servlet上下文被表現為簡單的Maps,允許Action被獨立的測試。Struts2的Action可以訪問最初的請求(如果需要的話)。但是,盡可能避免或排除其他元素直接訪問HttpServletRequest或HttpServlet-Response。

(4)易測性

測試Struts1的主要問題是execute方法暴露了Servlet API這使得測試要依賴于容器。第三方的擴展,如Struts TestCase,提供了一套Struts1的模擬對象(來進行測試)。

Struts2的Action可以通過初始化、設置屬性、調用方法來測試。依賴注入的支持也使測試變得更簡單。

(5)捕獲輸入

Struts1使用ActionForm對象來捕獲輸入。象Action一樣,所有的ActionForm必須擴展基類。

Struts2直接使用Action屬性作為輸入屬性,消除了對第二個輸入對象的需求。輸入屬性可能是有自己(子)屬性的rich對象類型。

(6)表達式語言

Struts1整合了JSTL,所以它使用JSTL的表達式語言。表達式語言有基本的圖形對象移動,但是對集合和索引屬性的支持很弱。

Struts2使用JSTL,但是也支持一個更強大和靈活的表達式語言--OGNL。

(7)將值綁定到頁面

Struts1使用標準 JSP機制來綁定對象到頁面上下文。

Struts2使用“ValueStack”技術,使 taglib能夠訪問值而不需要把你的頁面(view)和對象綁定起來。ValueStack策略允許通過一系列名稱相同但類型不同的屬性重用頁面(view)。

(8)類型轉換

Struts1的ActionForm屬性經常都是String。Struts1使用 Commons-Beanutils來進行類型轉換。轉換每一個類,而不是為每一個實例配置。

Struts2使用OGNL進行類型轉換。提供基本和常用對象的轉換器。

(9)驗證

Struts1支持在ActionForm的validate方法中手動校驗,或者通過Commons Validator的擴展來校驗。同一個類可以有不同的校驗內容,但不能校驗子對象。

Struts2支持通過validate方法和XWork校驗框架來進行校驗。XWork校驗框架使用為屬性類類型定義的校驗和內容校驗,來支持 chain校驗子屬性。

(10)Action執行控制

Struts1支持每一個模塊有單獨的生命周期,但是模塊中的所有 Action必須共享相同的生命周期。

Struts2支持通過攔截器堆棧為每一個Action創建不同的生命周期。堆棧能夠根據需要和不同的Action一起使用。

3 結束語

Struts2框架整合了Struts1和WebWork的優點,其最大的特點就是其簡單性。從Apache官方的宣傳來看,Struts2不久將會替代Struts1。

[1]王舂林,耿祥義.淺析Struts2框架. 現代經濟信息, 2009

[2]孫衛琴.精通Struts:基于MVC的Java Web設計與開發.北京:電子工業出版社,2004

[3]閆術卓,楊強.Struts2技術詳解:基于 WebWork核心的MVC開發與實踐.電子工業出版社,2008

猜你喜歡
頁面方法
微信群聊總是找不到,打開這個開關就好了
大狗熊在睡覺
刷新生活的頁面
保健醫苑(2022年1期)2022-08-30 08:39:14
學習方法
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
同一Word文檔 縱橫頁面并存
淺析ASP.NET頁面導航技術
主站蜘蛛池模板: 亚洲视频色图| 国产午夜无码片在线观看网站| 狠狠操夜夜爽| 97国产成人无码精品久久久| 波多野结衣中文字幕一区二区| 亚洲天堂免费在线视频| 亚洲三级视频在线观看| 国产第一页免费浮力影院| 男女男精品视频| 亚洲无码37.| 黄片一区二区三区| 亚洲天堂视频在线免费观看| 香蕉伊思人视频| 国产美女自慰在线观看| 国产麻豆精品久久一二三| 亚洲a级毛片| 香蕉蕉亚亚洲aav综合| 97久久免费视频| 久久免费视频播放| 国产精品一区二区不卡的视频| 波多野结衣二区| 97超爽成人免费视频在线播放| 在线国产你懂的| 日韩在线播放中文字幕| 国产麻豆aⅴ精品无码| 亚洲欧美天堂网| 国产精品污视频| 日韩无码视频播放| 免费无码又爽又黄又刺激网站| 欧美19综合中文字幕| 波多野结衣一区二区三区四区视频| 亚洲性视频网站| 日本午夜三级| 亚洲人成网站在线播放2019| a级毛片在线免费| 在线五月婷婷| 欧美亚洲激情| 亚洲视频欧美不卡| 国产青青操| 成人午夜福利视频| 99热这里只有精品在线观看| 精品91视频| a国产精品| 在线观看国产网址你懂的| 欧美午夜在线视频| 久久精品66| 综合色婷婷| 婷婷成人综合| 国产在线一区视频| 国产成人精品日本亚洲| 国产精品午夜电影| 高h视频在线| 在线另类稀缺国产呦| 国产97视频在线观看| 青青青国产视频手机| 无码国产伊人| 青青青国产视频| 婷婷亚洲视频| 欧美专区日韩专区| 亚洲aaa视频| 成人午夜精品一级毛片| 国产福利小视频高清在线观看| 国产伦精品一区二区三区视频优播 | 国产在线一区二区视频| 国产欧美日韩另类精彩视频| 亚瑟天堂久久一区二区影院| 欧美a在线视频| 中字无码av在线电影| 色悠久久综合| 国产成人在线小视频| 被公侵犯人妻少妇一区二区三区| 久久婷婷人人澡人人爱91| 欧美日韩亚洲国产主播第一区| 91青青在线视频| 日韩欧美视频第一区在线观看| 国内丰满少妇猛烈精品播| 精品国产免费观看| 一本无码在线观看| 日日拍夜夜操| 宅男噜噜噜66国产在线观看| 亚洲国模精品一区| 欧美 亚洲 日韩 国产|