javascript
Spring-MVC入门(一):入门实例
引言
1.MVC :Model-View-Control
框架性質(zhì)的C 層要完成的主要工作:封裝web 請(qǐng)求為一個(gè)數(shù)據(jù)對(duì)象、調(diào)用業(yè)務(wù)邏輯層來(lái)處理數(shù)據(jù)對(duì)象、返回處理數(shù)據(jù)結(jié)果及相應(yīng)的視圖給用戶。
2. 簡(jiǎn)要概述springmvc
Spring C 層框架的核心是 DispatcherServlet,它的作用是將請(qǐng)求分發(fā)給不同的后端處理器,也即 使用了一種被稱為Front Controller 的模式(后面對(duì)此模式有簡(jiǎn)要說(shuō)明)。 Spring 的C 層框架使用了后端控制器來(lái)、映射處理器和視圖解析器來(lái)共同完成C 層框架的主要工作。并且spring 的C 層框架還真正地把業(yè)務(wù)層處理的數(shù)據(jù)結(jié)果和相應(yīng)的視圖拼成一個(gè)對(duì)象,即我們后面會(huì)經(jīng)常用到的ModelAndView 對(duì)象。
一、入門實(shí)例
1. 搭建環(huán)境
在spring 的官方API 文檔中,給出所有包的作用概述,現(xiàn)列舉常用的包及相關(guān)作用:
org.springframework.aop-3.0.5.RELEASE.jar :與Aop 編程相關(guān)的包
org.springframework.beans-3.0.5.RELEASE.jar :提供了簡(jiǎn)捷操作bean 的接口
org.springframework.context-3.0.5.RELEASE.jar :構(gòu)建在beans 包基礎(chǔ)上,用來(lái)處理資源文件及國(guó)際化。
org.springframework.core-3.0.5.RELEASE.jar :spring 核心包
org.springframework.web-3.0.5.RELEASE.jar :web 核心包,提供了web 層接口
org.springframework.web.servlet-3.0.5.RELEASE.jar :web 層的一個(gè)具體實(shí)現(xiàn)包,DispatcherServlet也位于此包中。
后文全部在spring3.0 版本中進(jìn)行,為了方便,建議在搭建環(huán)境中導(dǎo)入spring3.0 的所有jar 包(所有jar 包位于dist 目錄下)。
2. 編寫HelloWorld 實(shí)例
步驟一、建立名為springMVC_01_helloword ,并導(dǎo)入上面列出的jar 包。
步驟二、編寫web.xml 配置文件,代碼如下:
Java代碼
簡(jiǎn)要說(shuō)明 :DispatcherServlet 就是一個(gè)Servlet ,也是對(duì)請(qǐng)求進(jìn)行轉(zhuǎn)發(fā)的核心Servlet 。在這里即所有.do 的請(qǐng)求將首先被DispatcherServlet 處理,而DispatcherServlet 它要作的工作就是對(duì)請(qǐng)求進(jìn)行分發(fā)(也即是說(shuō)把請(qǐng)求轉(zhuǎn)發(fā)給具體的Controller )。可以簡(jiǎn)單地認(rèn)為,它就是一個(gè)總控處理器,但事實(shí)上它除了具備總控處理理器對(duì)請(qǐng)求進(jìn)行分發(fā)的能力外,還與spring 的IOC 容器完全集成在一起,從而可以更好地使用spring 的其它功能。在這里還需留意 < servlet-name > spmvc ,下面步驟三會(huì)用到。
步驟三、建立 spmvc-servlet.xml 文件,它的命名規(guī)則: servlet-name-servlet.xml 。它的主要代碼如下:
Xml代碼
說(shuō)明: hello.do 的請(qǐng)求將給名為 helloControl 的 bean 進(jìn)行處理。
步驟四、完成 HelloWord.java 的編寫,代碼如下:
Java代碼
說(shuō)明 :ModelAndView 對(duì)象是包含視圖和業(yè)務(wù)數(shù)據(jù)的混合對(duì)象,即是說(shuō)通過(guò)此對(duì)象,我們可以知道所返回的相應(yīng)頁(yè)面(比如這里返回hello.jsp 頁(yè)面),也可以在相應(yīng)的頁(yè)面中獲取此對(duì)象所包含的業(yè)務(wù)數(shù)據(jù)(比如這里message-hello worrld )。
步驟五、在當(dāng)前項(xiàng)目web 根目錄下編寫hello.jsp ,主要代碼如下:
< body >
世界,你好!
獲取值: ${message }
步驟六:輸入 .../hello.do 進(jìn)行測(cè)試。
4. 簡(jiǎn)析spring mvc 工作原理
(1 )啟動(dòng)服務(wù)器,根據(jù)web.xml 的配置加載前端控制器(也稱總控制器) DispatcherServlet 。在加載時(shí)、會(huì)完成一系列的初始化動(dòng)作。
(2 )根據(jù)servlet 的映射請(qǐng)求(上面的helloWorld 實(shí)例中針對(duì).do 請(qǐng)求),并參照“控制器配置文件”(即spmvc-servlet.xml 這樣的配置)文件,把具體的請(qǐng)求分發(fā)給特定的后端控制器進(jìn)行處理(比如上例會(huì)分發(fā)給HelloWorld 控制器進(jìn)行處理)
(3 )后端控制器調(diào)用相應(yīng)的邏輯層代碼,完成處理并返回視圖對(duì)象( ModelAndView )給前端處理器。
(4 )前端控制器根據(jù)后端控制器返回的 ModelAndView 對(duì)象,并結(jié)合一些配置(后面有說(shuō)明),返回一個(gè)相應(yīng)的頁(yè)面給客戶端。
小結(jié) :這種Front Controller 模式常應(yīng)用在主流的web 框架中,比如典型的struts1.x 框架.Front Controller 模式:所有請(qǐng)求先交給一個(gè)前端處理器(總控處理器)處理,然后前端處理器會(huì)參照一些配置文件再把具體的請(qǐng)求交給相應(yīng)的后端處理器。后端處理器調(diào)用邏輯層代碼,并根據(jù)邏輯返回相應(yīng)的視圖對(duì)象給前端控制器。然后前端控制器再根據(jù)視圖對(duì)象返回具體的頁(yè)面給客戶端(提示:和spring mvc 一樣,在struts1.x 中前端控制器是Servlet, 而在struts2 中前端控制器是Filter )。 概述 Front Controller 模式:前端控制器預(yù)處理并分發(fā)請(qǐng)求給后端控制器,后端控制器進(jìn)行真正的邏輯處理并返回視圖對(duì)象,前端控器器根據(jù)視圖對(duì)象返回具體頁(yè)面給客戶端。
5. 初識(shí)spring mvc 的視圖
在前面的HelloWorld 實(shí)例中,在HelloWorld.java 中返回 ModelAndView mav = new ModelAndView( "hello.jsp" ) 參數(shù)為 hello.jsp ,它會(huì)對(duì)應(yīng)于當(dāng)前項(xiàng)目根目錄下的 hello.jsp 頁(yè)面。但 spring mvc 為我們提供了一個(gè)特別的視圖定位方式,下面改進(jìn)前面的 HelloWord 實(shí)例:
改進(jìn)一 :在 spmvc-servlet.xml 中增加如下代碼:
Xml代碼
改進(jìn)二 :在HelloWorld.java 重新定義返回的 ModelAndView 對(duì)象,即把 ModelAndView mav = new ModelAndView( "hello.jsp" ) 改為 ModelAndView mav = new ModelAndView( "hello" )
改進(jìn)三 :在/WEB-INF/page 目錄下建立hello.jsp 頁(yè)面
進(jìn)行上面三個(gè)改進(jìn)操作后,重新訪問(wèn)hello.do 會(huì)訪問(wèn)到WEB-INF/page/hello.jsp 頁(yè)面。
簡(jiǎn)析視圖定位 :當(dāng)返回 ModelAndView 對(duì)象名稱為hello 時(shí),會(huì)給hello 加上前后綴變成
/WEB-INF/page/hello.jsp 。因此在給前后綴賦值時(shí),應(yīng)特別注意它和返回的 ModelAndView 對(duì)象能否組成一個(gè)正確的文件全路徑。在前面的“簡(jiǎn)析spring mvc 工作原理(4) ”點(diǎn)中提到在根據(jù)ModelAndView 對(duì)象返回頁(yè)面時(shí),會(huì)結(jié)合一些配置。這里就是結(jié)合了視圖定位方式,給viewName 加上前后綴進(jìn)行定位。
【編輯推薦】
Struts VS Spring兩種MVC框架比較
Spring MVC框架的高級(jí)配置
Spring MVC框架的高級(jí)配置(上)
Spring MVC框架的高級(jí)配置(下)
設(shè)計(jì)REST風(fēng)格的Java MVC框架:WebWind
【責(zé)任編輯: 金賀 TEL:(010)68476606】總結(jié)
以上是生活随笔為你收集整理的Spring-MVC入门(一):入门实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 在kindle fire 上安装CM10
- 下一篇: 39个超棒的免费高清专业纹理收藏集