深入理解Spring MVC 3 一

2021-08-27 13:20:42 字數 4014 閱讀 7925

一、前言:

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.contextloaderlistener   

dispatcherservlet是乙個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分離,減少開發...