天天看點

【SpringMVC整合MyBatis】springmvc和struts2的差別

springmvc和struts2的差別 

1、springmvc基于方法開發的,struts2基于類開發的。

springmvc将url和controller方法映射。映射成功後springmvc生成一個handler對象,對象中隻包括了一個method。方法執行結束,形參資料銷毀。

struts2的action類中的所有方法用的都是action類中的成員變量,一旦方法變得很多的時候,我們就會不知道action類中那麼多成員變量是給那個方法去使用的。十分混亂。

但是springmvc的所有參數都是定義為方法的形參,這樣使用什麼方法就将參數注入至對應方法的形參,是以springmvc的controller開發類似service開發。

2、springmvc可以進行單例開發,并且建議使用單例開發,struts2通過類的成員變量接收參數,無法使用單例,隻能使用多例。

3、經過實際測試,struts2速度慢,在于使用struts标簽,如果使用struts建議使用jstl。

最後我們無法實際定義springmvc與struts到底誰好誰壞,隻能說struts早期由于用的比較多,它的漏洞就比較多。建議如果使用struts,就使用最新的包,因為以前的可能會有漏洞。但springmv目前幾乎沒有漏洞,這就是springmvc最近幾年開始流行起來的原因,再有一個springmvc是基于方法開發的,更接近于service開發。

springmvc總結

springmvc架構:

dispatcherservlet前端控制器:接收request,進行response

handlermapping處理器映射器:根據url查找handler。(可以通過xml配置方式,注解方式)

handleradapter處理器擴充卡:根據特定規則去執行handler,編寫handler時需要按照handleradapter的要求去編寫。

handler處理器(後端控制器):需要程式員去編寫,常用注解開發方式。

handler處理器執行後結果 是modelandview,具體開發時handler傳回方法值類型包括 :modelandview、string(邏輯視圖名)、void(通過在handler形參中添加request和response,類似原始 servlet開發方式,注意:可以通過指定response響應的結果類型實作json資料輸出)

view resolver視圖解析器:根據邏輯視圖名生成真正的視圖(在springmvc中使用view對象表示)

view視圖:jsp頁面,僅是資料展示,沒有業務邏輯。

注解開發:

使用注解方式的處理器映射器和擴充卡:

在實際開發,使用<mvc:annotation-driven>代替上邊處理器映射器和擴充卡配置。

@controller注解必須要加,作用辨別類是一個handler處理器。

@requestmapping注解必須要加,作用:

1、對url和handler的方法進行映射。

2、可以窄化請求映射,設定handler的根路徑,url就是根路徑+子路徑請求方式

3、可以限制http請求的方法

映射成功後,springmvc架構生成一個handler對象,對象中隻包括 一個映射成功的method。

注解開發中參數綁定:

将request請求過來的key/value的資料(了解一個串),通過轉換(參數綁定的一部分),将key/value串轉成形參,将轉換後的結果傳給形參(整個參數綁定過程)。

springmvc所支援參數綁定:

1、預設支援很多類型,httpservletrequest、response、session、

model/modelmap(将模型資料填充到request域)

2、支援簡單資料類型,整型、字元串、日期。。

隻要保證request請求的參數名和形參名稱一緻,自動綁定成功

如果request請求的參數名和形參名稱不一緻,可以使用@requestparam(指定request請求的參數名),@requestparam加在形參的前邊。

3、支援pojo類型

隻要保證request請求的參數名稱和pojo中的屬性名一緻,自動将request請求的參數設定到pojo的屬性中。

注意:形參中即有pojo類型又有簡單類型,參數綁定互不影響。

自定義參數綁定:

日期類型綁定自定義:

定義的converter<源類型,目标類型>接口實作類,比如:

converter<string,date>表示:将請求的日期資料串轉成java中的日期類型。

注意:要轉換的目标類型一定和接收的pojo中的屬性類型一緻。

将定義的converter實作類注入到處理器擴充卡中。

springmvc和struts2差別:

springmvc面向方法開發的(更接近service接口的開發方式),struts2面向類開發。

springmvc可以單例開發,struts2隻能是多例開發。

轉載請注明出處:http://blog.csdn.net/acmman/article/details/47183585