日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

java开发和structs的关系_java---springMVC与strutsMVC的区别

發布時間:2023/12/10 c/c++ 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java开发和structs的关系_java---springMVC与strutsMVC的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

項目剛剛換了web層框架,放棄了struts2改用spring3mvc

當初還框架的時候目的比較單純---springmvc支持rest,小生對restful url由衷的喜歡

不用不知道 一用就發現開發效率確實比struts2高

我們用struts2時采用的傳統的配置文件的方式,并沒有使用傳說中的0配置

spring3 mvc可以認為已經100%零配置了(除了配置springmvc-servlet.xml外)

比較了一下strus2與spring3 mvc的差別

============================================

struts2框架是類級別的攔截,每次來了請求就創建一個Action,然后調用setter getter方法把request中的數據注入

struts2實際上是通過setter getter方法與request打交道的

struts2中,一個Action對象對應一個request上下文

spring3 mvc不同,spring3mvc是方法級別的攔截,攔截到方法后根據參數上的注解,把request數據注入進去

在spring3mvc中,一個方法對應一個request上下文

好了 我們來整理一下

struts2是類級別的攔截, 一個類對應一個request上下文,

springmvc是方法級別的攔截,一個方法對應一個request上下文,而方法同時又跟一個url對應

所以說從架構本身上 spring3 mvc就容易實現restful url

而struts2的架構實現起來要費勁

因為struts2 action的一個方法可以對應一個url

而其類屬性卻被所有方法共享,這也就無法用注解或其他方式標識其所屬方法了

===================================

spring3mvc的方法之間基本上獨立的,獨享request response數據

請求數據通過參數獲取,處理結果通過ModelMap交回給框架

方法之間不共享變量

而struts2搞的就比較亂,雖然方法之間也是獨立的,但其所有Action變量是共享的

這不會影響程序運行,卻給我們編碼 讀程序時帶來麻煩

====================================

spring3 mvc的驗證也是一個亮點,支持JSR303

處理ajax的請求更是方便 只需一個注解@ResponseBody ,然后直接返回響應文本即可

附上一段代碼

Java代碼

@RequestMapping(value="/whitelists")

public?String?index(ModelMap?map){

Account?account?=?accountManager.getByDigitId(SecurityContextHolder.get().getDigitId())?;

List?groupList?=?groupManager.findAllGroup(account.getId())?;

map.put("account",?account);

map.put("groupList",?groupList);

return?"/group/group-index"?;

}

//@ResponseBody?ajax響應

@RequestMapping(value="/whitelist/{whiteListId}/del")

@ResponseBody

public?String?delete(@PathVariable?Integer?whiteListId){

whiteListManager.deleteWhiteList(whiteListId)?;

return?"success"?;

}

評論截選:

注解和性能沒有關系,Servlet的生命周期是這樣的,在調用這個Servlet時候才創建這個Servlet的類并運行init()方法,然后另外有人運行這個Servlet的時候并沒有重啟創建Servlet和運行里邊的init()方法,所以Servlet容器時單利的,spring就是Servlet的封裝的框架,包括所有的依賴注入都是在tomcat啟動的時候全部被初始化的,其他的注解也一樣,也就是說注解也就是以前的xml的配置的替代,以前沒個請求都要運行一次xml嗎?并不是的,xml是在tomcat啟動時就讀一次而已并利用里邊的配置初始化很多的東西,然后就不在使用了,因為都成了單利的,這樣就保證了效率,不是每次都把我們要注入的全部new一次,而是tomcat啟動的時候全部new一次以后就不new了,保證了效率問題。

所以我不明白那個 光看注解就知道性能不好?

注解就是替代了xml配置而已,而且也是初始化一次,也就是說和編寫Servlet一樣的在init()中做了很多的事而已,并且以后不會在運行init()了,除非你重啟tomcat。

struts1也一樣,運行一個action的方法的時候創建一個action類,以后再運行就不會創建了,其實也是Servlet的封裝的框架。

struts2特殊一些,沒個請求要new一個action來保證線程安全。所以效率會低一些,但是不會低的特別離譜。

這樣也說明了spring3的mvc和struts1的mvc還有Servlet都是方法的線程安全,所以在類方法聲明的私有或者公有變量不是線程安全的,struts2的確實是線程安全的。

所有各有各的好處,用什么當然是仁者見仁智者見智了。

不過我們確實在新項目中大量的使用了spring3,因為REST挺好的。

總結

以上是生活随笔為你收集整理的java开发和structs的关系_java---springMVC与strutsMVC的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。