spring mvc和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<Group> 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" ;   
}  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章