2 回答

TA貢獻1858條經(jīng)驗 獲得超8個贊
SpringMVC的Controller和Struts2的Action均是實現(xiàn)MVC模式的控制層。兩者區(qū)別如下:
SpringMVC可精確控制到方法上,Controller可以單例開發(fā),Struts2的Action則是多例prototype開發(fā),基于類進行攔截請求的。
SpringMVC的速度一般比Struts2要快,主要是s標簽的原因。所以建議使用jstl表達式。
Struts2曾經(jīng)爆出重大漏洞,就是ognl表達式URL注入的漏洞。目前springmvc還沒有發(fā)現(xiàn)什么漏洞。
SpringMVC的入口是Servlet,而Struts2是Filter
SpringMVC單線程,Controller與Servlet一樣,只有一個實例,每次請求執(zhí)行對應的方法;Struts2多線程,每次發(fā)一次請求都會實例一個Action,每個Action都會被注入屬性。
Struts2是類級別的攔截, 一個類對應一個request上下文;SpringMVC是方法級別的攔截,一個方法對應一個request上下文,而方法同時又跟一個url對應,所以說從架構本身上SpringMVC就容易實現(xiàn)restful url,而struts2的架構實現(xiàn)起來要費勁,因為Struts2中Action的一個方法可以對應一個url,而其類屬性卻被所有方法共享,這也就無法用注解或其他方式標識其所屬方法。
Struts2更加符合OOP的編程思想, SpringMVC就比較謹慎,在Servlet上擴展。
Spring MVC和Spring是無縫的耦合。項目的管理和安全上也比Struts2高
SpringMVC開發(fā)效率和性能高于Struts2。
SpringMVC可以認為已經(jīng)100%零配置。

TA貢獻1853條經(jīng)驗 獲得超18個贊
1. springmvc可以精確控制到方法上,controller可以單例開發(fā),Struts2的action則是多例prototype開發(fā),基于類進行攔截請求的。
2. springmvc的速度一般比Struts2要快,主要是s標簽的原因。所以建議使用jstl表達式。
3.Struts2曾經(jīng)爆出重大漏洞,就是ognl表達式URL注入的漏洞。目前springmvc還沒有發(fā)現(xiàn)什么漏洞
添加回答
舉報