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