Java中struts2和spring MVC的區(qū)別_動力節(jié)點Java學院整理
1、Struts2是類級別的攔截, 一個類對應一個request上下文,SpringMVC是方法級別的攔截,一個方法對應一個request上下文,而方法同時又跟一個url對應,所以說從架構本身上SpringMVC就容易實現(xiàn)restful url,而struts2的架構實現(xiàn)起來要費勁,因為Struts2中Action的一個方法可以對應一個url,而其類屬性卻被所有方法共享,這也就無法用注解或其他方式標識其所屬方法了。
2、SpringMVC的方法之間基本上獨立的,獨享request response數(shù)據(jù),請求數(shù)據(jù)通過參數(shù)獲取,處理結果通過ModelMap交回給框架,方法之間不共享變量。
3、由于Struts2需要針對每個request進行封裝,把request,session等servlet生命周期的變量封裝成一個一個Map,供給每個Action使用,并保證線程安全,所以在原則上,是比較耗費內(nèi)存的。
4、 攔截器實現(xiàn)機制上,Struts2有以自己的interceptor機制,SpringMVC用的是獨立的AOP方式,這樣導致Struts2的配置文件量還是比SpringMVC大。
5、SpringMVC的入口是servlet,而Struts2是filter(這里要指出,filter和servlet是不同的。以前認為filter是servlet的一種特殊),這就導致了二者的機制不同,這里就牽涉到servlet和filter的區(qū)別了。
6、SpringMVC集成了Ajax,使用非常方便,只需一個注解@ResponseBody就可以實現(xiàn),然后直接返回響應文本即可,而Struts2攔截器集成了Ajax,在Action中處理時一般必須安裝插件或者自己寫代碼集成進去,使用起來也相對不方便。
7、SpringMVC驗證支持JSR303,處理起來相對更加靈活方便,而Struts2驗證比較繁瑣,感覺太煩亂。
8、Spring MVC和Spring是無縫的。從這個項目的管理和安全上也比Struts2高(當然Struts2也可以通過不同的目錄結構和相關配置做到SpringMVC一樣的效果,但是需要xml配置的地方不少)。
9、 設計思想上,Struts2更加符合OOP的編程思想, SpringMVC就比較謹慎,在servlet上擴展。
10、SpringMVC性能高于Struts2。
11、SpringMVC可以認為已經(jīng)100%零配置。
總結
以上所述是小編給大家介紹的struts2和spring MVC的區(qū)別,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關文章
springboot在idea下debug調(diào)試熱部署問題
這篇文章主要介紹了springboot在idea下debug調(diào)試熱部署問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02Mybatis-Plus處理Mysql?Json類型字段的詳細教程
這篇文章主要給大家介紹了關于Mybatis-Plus處理Mysql?Json類型字段的詳細教程,Mybatis-Plus可以很方便地處理JSON字段,在實體類中可以使用@JSONField注解來標記JSON字段,同時在mapper.xml中使用json函數(shù)來操作JSON字段,需要的朋友可以參考下2024-01-01Java中ThreadLocal?導致內(nèi)存?OOM?的原因分析
這篇文章主要介紹了Java中ThreadLocal導致內(nèi)存OOM的原因分析,文章基于Java的相關內(nèi)容展開ThreadLocal導致內(nèi)存OOM的原因分析,需要的小伙v阿布可以參考一下2022-05-05Java FileDescriptor總結_動力節(jié)點Java學院整理
FileDescriptor 是“文件描述符”。可以被用來表示開放文件、開放套接字等。接下來通過本文給大家分享Java FileDescriptor總結,感興趣的朋友一起學習吧2017-05-05