陳張 成都師范學院
淺析struts2和springMVC的異同
陳張 成都師范學院
struts2和springMVC都是java web開發(fā)比較主流的框架,目前企業(yè)中使用springMvc的比例已經(jīng)遠遠超過Struts2,那么兩者到底有什么區(qū)別,是很多初學者比較關注的問題。
WEB框架 struts2 springMVC
spring MVC屬于SpringFrameWork的后續(xù)產(chǎn)品,已經(jīng)融合在Spring Web Flow里面。Spring框架提供了構建Web應用程序的全功能MVC模塊。Spring MVC分離了控制器、模型對象、分派器以及處理程序對象的角色,這種分離讓它們更容易進行定制。
第一,用戶向服務器發(fā)送請求,請求被Spring前端控制Servelt DispatcherServlet捕獲;
第二,DispatcherServlet對請求URL進行解析,得到請求資源標識符。然后根據(jù)該URI,調用HandlerMapping獲得該Handler配置的所有相關的對象,最后以HandlerExecutionChain對象的形式返回;
第三,DispatcherServlet根據(jù)獲得的Handler,選擇一個合適的HandlerAdapter;
第四,提取Request中的模型數(shù)據(jù),填充Handler入?yún)?,開始執(zhí)行Handler。在填充Handler的入?yún)⑦^程中,根據(jù)你的配置,Spring將幫你做一些額外的工作:
HttpMessageConveter:將請求消息轉換成一個對象,將對象轉換為指定的響應信息;
第五,Handler執(zhí)行完成后,向DispatcherServlet返回一個ModelAndView對象;
第六,根據(jù)返回的Model AndView,選擇一個適合的ViewResolver(必須是已經(jīng)注冊到Spring容器中的ViewResolver)返回給DispatcherServlet;
第七,ViewResolver結合Model和View,來渲染視圖;
第八,將渲染結果返回給客戶端。
一個請求在Struts2框架中的處理大概分為以下幾個步驟:
第一,客戶端瀏覽器發(fā)送請求;
第二,這個請求經(jīng)過一系列的過濾器(這些過濾器中有一個叫做ActionContextCleanUp的可選過濾器,這個過濾器對于Struts2和其他框架的集成很有幫助);
第三,接著FilterDispatcher被調用,F(xiàn)ilterDispatcher詢問ActionMapper來決定這個請求是否需要調用某個Action;
第四,如果ActionMapper決定需要調用某個Action,F(xiàn)ilterDispatcher把請求的處理交給ActionProxy;
第五,ActionProxy通過Configuration Manager詢問框架的配置文件,找到需要調用的Action類;
第六,ActionProxy創(chuàng)建一個ActionInvocation的實例;
第七,ActionInvocation實例使用命名模式來調用,在調用Action的過程前后,涉及到相關攔截器的調用;
第八,一旦Action執(zhí)行完畢,ActionInvocation負責根據(jù)struts.xml中的配置找到對應的返回結果。
①核心控制器:對于使用過mvc框架的人來說這個詞應該不會陌生,核心控制器的主要用途是處理所有的請求,然后對那些特殊的請求統(tǒng)一的進行處理,spring mvc核心控制器是Servlet,而Struts2是Filter。
②控制器實例:Spring Mvc會比Struts快一些(理論上)。
③管理方式:大部分的公司的核心架構中,就會使用到spring,而spring mvc又是spring中的一個模塊,所以spring對于spring mvc的控制器管理更加簡單方便。
④參數(shù)傳遞:Struts2中自身提供多種參數(shù)接受,其實都是通過進行傳遞和賦值,而SpringMvc是通過方法的參數(shù)進行接收。
⑤學習難度:Struts更加很多新的技術點,比如攔截器、值棧及OGNL表達式,學習成本較高,spring mvc比較簡單,很較少的時間都能上手。
總體來說,springMVC對初學者來說相比較struts2更加容易上手,與spring的集成更加流暢和方便。
[1]王冠宇,趙冬生.基于J2EE下的JSF與Struts框架比較分析[J].微機發(fā)展,2005年12期
[2]陳平.基于Spring的輕量級Web框架的研究與設計[D].江蘇大學,2005年
[3]孫衛(wèi)琴.精通struts[M].電子工業(yè)出版社,2004年8月50-70
[4]曾云飛.基于Struts框架的電子政務研究和實現(xiàn)[M].東北大學出版社,2005
陳張,成都師范學院,計算機科學與技術,本科。