1.前端控制器不同:structs2入口是一個filter過濾器,springmvc入口是一個servlet.
2、設計思想不同: struts2通過在action類中定義成員變量接收請求參數,struts2只能使用多例模式管理action。
springmvc通過在controller方法中定義形參接收請求參數,springmvc可以使用單例模式管理controller。
3、springmvc是基於方法開發的,注解開發中使用requestMapping將url和方法進行映射,如果根據url找到controller類的方法生成一個Handler處理器對象(只包括一個method)。
struts2是基於類開發,每個請求過來創建一個action實例,實例對象中有若干的方法。
開發中建議使用springmvc,springmvc方法更類似service業務方法。
4、Struts采用值棧存儲請求和響應的數據,通過OGNL存取數據, springmvc通過參數綁定器是將request請求內容解析,並給方法形參賦值。
5、struts2和springmvc的速度是相當的,由於struts2的漏洞較多,很多企業轉向使用springmvc了。
為什么structs2設計成多例而不是單例?
如果我們把struts2設計為單例,那么在內存中只有一份,成員變量在內存中也只有一份!而我們定義成員變量的作用是接受參數,如果多個線程操作這個成員變量,給它設置值,那么一個線程設置的值就會覆蓋掉之前設置的值.
