一、前言:
struts2也是比較優秀的mvc構架,優點非常多比如良好的結構。但這裡想說的是缺點,struts2由於採用了值棧、ognl表示式、struts2標籤庫等,會導致應用的效能下降。struts2的多層***、多例項action效能都很好。可以參考我寫的一篇關於spring mvc與struts2與servlet比較的文章
spring3 mvc的優點:
1、spring3 mvc的學習難度小於struts2,struts2用不上的多餘功能太多。呵呵,當然這不是決定因素。
2、spring3 mvc很容易就可以寫出效能優秀的程式,struts2要處處小心才可以寫出效能優秀的程式(指mvc部分)
3、spring3 mvc的靈活是你無法想像的,spring的擴充套件性有口皆碑,spring3 mvc當然也不會落後,不會因使用了mvc框架而感到有任何的限制。
struts2的眾多優點:略... (呵呵,是不是不公平?)
眾多文章開篇時總要吹些牛,吸引一下讀者的眼球,把讀者的胃口調起來,這樣大家才有興趣接著往後看。本文也沒能例外。不過保證你看了之後不會後悔定有收穫。
二、核心類與介面:
先來了解一下,幾個重要的介面與類。現在不知道他們是幹什麼的沒關係,先混個臉熟,為以後認識他們打個基礎。
dispatcherservlet -- 前置控制器
handleradapter介面 -- 處理請求的對映
annotationmethodhandleradapter類,通過註解,把乙個url對映到controller類的方法上
controller介面 -- 控制器
由於我們使用了@controller註解,新增了@controller註解註解的類就可以擔任控制器(action)的職責,
所以我們並沒有用到這個介面。
handlerinterceptor 介面--***
無圖,我們自己實現這個介面,來完成攔截的器的工作。
viewresolver介面的實現類
urlbasedviewresolver類 通過配置檔案,把乙個檢視名交給到乙個view來處理
internalresourceviewresolver類,比上面的類,加入了jstl的支援
view介面
jstlview類
localresolver介面
handlerexceptionresolver介面 --異常處理
modelandview類
無圖。三、核心流程圖
本圖是我個人畫的,有不嚴謹的地方,大家對付看吧。總比沒的看強。
四、dispatcherservlet說明
使用spring mvc,配置dispatcherservlet是第一步。
dispatcherservlet是乙個servlet,所以可以配置多個dispatcherservlet。
dispatcherservlet是前置控制器,配置在web.xml檔案中的。攔截匹配的請求,servlet攔截匹配規則要自已定義,把攔截下來的請求,依據某某規則分發到目標controller(我們寫的action)來處理。
先來看第乙個例子:
org.springframework.web.servlet.dispatcherservlet
1 *.form
1是啟動順序,讓這個servlet隨servletp容器一起啟動。
*.form 會攔截*.form結尾的請求。
在dispatcherservlet的初始化過程中,框架會在web應用的 web-inf資料夾下尋找名為[servlet-name]-servlet.xml 的配置檔案,生成檔案中定義的bean。
第二個例子:
springmvc
org.springframework.web.servlet.dispatcherservlet
contextconfiglocation
classpath*:/springmvc.xml
1 /
指明了配置檔案的檔名,不使用預設配置檔名,而使用springmvc.xml配置檔案。
其中**.xml 這裡可以使用多種寫法
1、不寫,使用預設值:/web-inf/-servlet.xml
2、/web-inf/classes/springmvc.xml
3、classpath*:springmvc-mvc.xml
4、多個值用逗號分隔
servlet攔截匹配規則可以自已定義,servlet攔截哪種url合適?五、雙親上下文的說明
如果你使用了listener***來載入配置,一般在struts+spring+hibernate的專案中都是使用listener***的。如下
org.springframework.web.context.contextloaderlistenerdispatcherservlet是乙個servlet,可以同時配置多個,每個
dispatcherservlet有乙個自己的
根上下文中所有東西。
儲存在servletcontext中,key是"org.springframework.web.servlet.frameworkservlet.context"+servlet名稱。當乙個request物件產生時,會把這個
總結:不使用listener***來載入spring的配置,改用dispatcherservlet來載入spring的配置,不要雙親上下文,只使用乙個dispatcherservlet,事情就簡單了,什麼麻煩事兒也沒有了。
六、springmvc-mvc.xml 配置檔案片段講解
(未使用預設配置檔名)
掃瞄指定的包中的類上的註解,常用的註解有:
使用預設的servlet來響應靜態檔案。
七、如何訪問到靜態的檔案,如jpg,js,css?
如何你的dispatcherservlet攔截 *.do這樣的url,就不存在訪問不到靜態資源的問題。如果你的dispatcherservlet攔截「/」,攔截了所有的請求,同時對*.js,*.jpg的訪問也就被攔截了。
目的:可以正常訪問靜態檔案,不要找不到靜態檔案報404。
方案一:啟用tomcat的defaultservlet來處理靜態檔案
要配置多個,每種檔案配置乙個
深入理解springMVC
springmvc中使用基於xml的配置檔案,可以編輯,無需重新編譯應用程式。springmvc例項化控制器,並根據使用者輸入來構造bean。springmvc可以自動繫結使用者輸入,並正確的轉換資料型別。例如,springmvc能自動解析字 符串,並設定float或decimal型別的屬性。spr...
深入理解springMVC
spring mvc屬於springframework的後續產品,已經融合在spring web flow裡面。spring 框架提供了構建 web 應用程式的全功能 mvc 模組。使用 spring 可插入的 mvc 架構,從而在使用spring進行web開發時,可以選擇使用spring的spri...
《深入理解SpringMVC思想》
前言 springmvc是一種基於mvc架構的用於簡化web應用程式開發的應用開發框架,它是spring的乙個模組,與spring緊密結合,無需中間整合層來整合,它和struts2一樣都是表現層框架。在web模型中,mvc是很流行的框架,通過將model view controller分離,減少開發...