struts1和struts2和springMVC的區別和介紹
阿新 • • 發佈:2019-01-05
MVC是web開發常用的模式,M即模型層(Model):主要由javabean來實現。V即檢視層(View):主要由jsp、velocity、freemarker等。C即控制層(Controller):主要由servlet、strtus、springmvc來實現。
struts1 Struts1 工作流程1 ActionServlet接收由瀏覽器發出的請求後,檢索和請求匹配的ActionMapping物件。如果不存在,返回請求無效的資訊。
2 檢索和請求匹配的ActionForm物件。如果不存在,就建立一個。把提交的表單中的資料儲存在ActionForm物件中
3 根據配置資訊決定是否進行校驗。如果是,就進行校驗。如果通過校驗,進行下一步
4 ActionServlet根據ActionMapping物件包含的資訊決定把請求轉發給哪個Action。如果這個Action的物件不存在,就建立一個,然後呼叫它的excute方法
5 Action的excute方法返回一個ActionForward物件。ActionServlet把請求轉發給ActionForward指定的JSP。
6 ActionFoward物件指定的JSP生成動態網頁,返回給瀏覽器
struts2
2) 這個請求經過一系列的過濾器(Filter)。
3) 接著FilterDispatcher被呼叫,FilterDispatcher詢問ActionMapper來決定這個請是否需要呼叫某個Action。
4) 如果ActionMapper決定需要呼叫某個Action,FilterDispatcher把請求的處理交給ActionProxy。
5) ActionProxy通過Configuration Manager詢問框架的配置檔案,找到需要呼叫的Action類。
6) ActionProxy建立一個ActionInvocation的例項。
7) ActionInvocation例項使用命名模式來呼叫,在呼叫Action的過程前後,涉及到相關攔截器(Intercepter)的呼叫。
8) 一旦Action執行完畢,ActionInvocation負責根據struts.xml中的配置找到對應的返回結果。
Struts2的核心就是攔截器。Struts.xml中所有的package都要extends="struts-default"。同理與所有的Java類都要extends自Object一樣。struts-default.xml裡面就是要做以上事情。
springmvc
1.spring mvc將所有的請求都提交給DispatcherServlet,它會委託應用系統的其他模組負責對請求進行真正的處理工作。
2.DispatcherServlet查詢一個或多個HandlerMapping,找到處理請求的Controller.
3.DispatcherServlet將請求提交到目標Controller
4.Controller進行業務邏輯處理後,會返回一個ModelAndView
5.Dispathcher查詢一個或多個ViewResolver檢視解析器,找到ModelAndView物件指定的檢視物件
6.檢視物件負責渲染返回給客戶端。
struts1與struts2的比較
1、struts1要求Action類繼承一個抽象基類,而不是介面,struts2繼承ActionSupport類或者實現Action介面。
2、struts1是單例模式的,Action資源必須是執行緒安全的或同步的,會有執行緒安全問題,struts2為每一個請求都例項化一個物件,不存線上程安全問題。
3、struts1依賴servlet API 因為execute方法的引數有httpservletrequest和httpservletresponse物件,而struts2不用依賴servlet。
4、struts1依賴servlet API,所以測試要依賴web容器,測試難,struts2不依賴於容器,允許Action脫離容器單獨被測試。