初學(xué)者對(duì)Spring MVC的認(rèn)識(shí)

首先是要一定說(shuō)明的是,這倒是說(shuō)明是什么?對(duì)吧Spring MVC 是SpringFrameWork的后續(xù)產(chǎn)品距芬,并且已經(jīng)融入到Spring Web Flow中同時(shí)Spring MVC 分離了控制器,模型對(duì)象,分派器(其實(shí)我不知道這是什么)以及處理程序?qū)ο蟮慕巧?這種分離讓它們更容易進(jìn)行定制.說(shuō)了這些很官方的話,我都有點(diǎn)暈了,呵呵,先上一個(gè)原理流程圖吧,相信會(huì)比較直觀!

Spring MVC 原理圖

Spring MVC 對(duì)應(yīng)原理流程步驟:

1.Web客戶端 --> DispatcherServlet 用戶發(fā)送一個(gè)請(qǐng)求到,首先到DispatcherServlet中(先交給前端控制器,進(jìn)行全局的流程控制)

2.DispatcherServlet --> HandlerMapping 解析用戶在前臺(tái)提交的請(qǐng)求,并按照我們的要求分配到指定的Controller(相當(dāng)于struts2中的action)

3.DispatcherServlet --> Controller 進(jìn)入指定的Controller對(duì)象,執(zhí)行里面的方法,返回需要的字符串(ModelAndView),在Controller里面需要對(duì)bean進(jìn)行操作,也就是會(huì)和Model進(jìn)行交互

4.DispatcherServlet --> ViewResolver 解析從Controller中返回的字符串,并轉(zhuǎn)換為有效的JSP路徑

5.DispatcherServlet --> JSP 將轉(zhuǎn)換好的JSP路徑匀归,指定到特定的頁(yè)面

6.JSP --> Web客戶端 將某一個(gè)特定的頁(yè)面顯示在客戶端界面

好了,以上就是Spring MVC的流程,是不是有了一定的認(rèn)識(shí)了,不急,后面還有呢...

有了基本的認(rèn)識(shí), 那就開始編碼吧项鬼!(我是用的是Springframework-3.2.8)

大家都知道的,打開編譯器,準(zhǔn)備開始開發(fā)一個(gè)項(xiàng)目的時(shí)候,第一步就是新建項(xiàng)目蜻直。哈哈饵逐!

是不是會(huì)有一點(diǎn)無(wú)語(yǔ),呵呵,不是別的,只是活躍一下氣氛,原因你懂的括眠。。

好吧,這一步就不列入編碼步驟里了吧,下面正式開始倍权!

第一步:添加架包

是不是覺得架包很少啊,沒錯(cuò),這就是Spring MVC的特點(diǎn),繼續(xù)讓它顛覆你的想法吧

第二步:一定是web.xml文件了

這里就是上面提到的DispatcherServlet -- 前端控制器

后面的"*.do"就是用來(lái)攔截頁(yè)面用戶的請(qǐng)求,這里規(guī)定凡是以 .do 結(jié)尾的請(qǐng)求都會(huì)命中,當(dāng)然這個(gè)可以自己定義,需要說(shuō)明的是,不管自己定義的是什么,一定要遵守,呵呵掷豺,是不是突然覺得好有道理!

第三步:在WEB-INF中配置 mvc-servlet.xml文件(要求名稱必須以Web.xml中的節(jié)點(diǎn)中的名字開頭+servlet.xml)算了,直接上圖吧:

Java代碼

<?xml version="1.0"encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.2.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.2.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd

">

class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">



user




value="org.springframework.web.servlet.view.JstlView">

需要解釋:如果某一個(gè)Controller中需要調(diào)用不用的方法時(shí),就必須指定定義方法的名字,例如請(qǐng)求的路徑為: user.do?action=userLogin(1).需要指定定義方法的名字: 定義之后,程序就知道在action之后的就是需要進(jìn)入的某一個(gè)方法

(如果是調(diào)用同一個(gè)方法,當(dāng)然就不需要定義這個(gè),但是只要有一個(gè)Controller需要不同的方法,就需要定義)

(2).解析之后Controller路徑,這里用到了Spring的控制反轉(zhuǎn)(IOC),其他就不同多說(shuō)

給Controller定義方法名解析器 2.1. 可以應(yīng)用已經(jīng)定義好的解析器(見上)

2.2. 可以為每一個(gè)Bean單獨(dú)定義解析器

(3).解析所有來(lái)自頁(yè)面中命中的請(qǐng)求,并分配到不同的Controller中

(4).在配置文件中,如果使用最后一個(gè)bean里面的內(nèi)容,如果需要返回到"index.jsp"頁(yè)面時(shí),就可以直接返回"index"就OK了,這個(gè)配置文件就是為我們返回的字符串账锹,前后自動(dòng)加上"/"和".jsp".

一旦有了這個(gè)配置之后萌业,就不能在Controller中進(jìn)行對(duì)Controller的跳轉(zhuǎn),因?yàn)樗鼤?huì)所有的返回字符串前后都加上"/"和".jsp",而這明顯不是我們所需要的,所以一般不會(huì)使用這種方法奸柬!

到這里了,需要靜一靜,好好理一下思路.

第四步:定義一個(gè)UserController,并繼承MultiactionController類

Java代碼

publicclassUserControllerextendsMultiActionController {

publicModelAndView login(HttpServletRequest req,

HttpServletResponse resp, User user)throwsException{

String result ="";

if(user.getName().equals("jack")){

req.getSession().setAttribute("user", user);

result ="login.do?action=login";//可進(jìn)行Controller之間的跳轉(zhuǎn)

result ="index.jsp?age=22";//可傳值到頁(yè)面上

}else{

result ="login.jsp";

}

returnnewModelAndView(result);

}

}

(1).上面的代碼中繼承的是 MultiactionController類,意味著可以用來(lái)定義多個(gè)不同的方法,以請(qǐng)求中action后面的名字來(lái)定

當(dāng)然還可以直接完成Controller接口,意味著當(dāng)前整個(gè)Controller 中,只有一個(gè)方法,且必須給定

(2).在方法中的參數(shù)默認(rèn)情況下是兩個(gè),分別是HttpServletRequset和HttpServletResponse對(duì)象,當(dāng)然在此之外婴程,還可以定義一個(gè)對(duì)象類型的參數(shù),主要是簡(jiǎn)化表單提交多個(gè)參數(shù)(目前只了解到這里)寫到這里,就差不多了,不出意外的話,你應(yīng)該可以完成一個(gè)比較簡(jiǎn)單的Spring MVC框架的小項(xiàng)目了

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?技術(shù)分享:www.kaige123.com

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末廓奕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子档叔,更是在濱河造成了極大的恐慌桌粉,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衙四,死亡現(xiàn)場(chǎng)離奇詭異铃肯,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)传蹈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門押逼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)步藕,“玉大人,你說(shuō)我怎么就攤上這事挑格×撸” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵漂彤,是天一觀的道長(zhǎng)雾消。 經(jīng)常有香客問(wèn)我,道長(zhǎng)挫望,這世上最難降的妖魔是什么立润? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮媳板,結(jié)果婚禮上桑腮,老公的妹妹穿的比我還像新娘。我一直安慰自己拷肌,他們只是感情好到旦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著巨缘,像睡著了一般添忘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上若锁,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天搁骑,我揣著相機(jī)與錄音,去河邊找鬼又固。 笑死仲器,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的仰冠。 我是一名探鬼主播乏冀,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼洋只!你這毒婦竟也來(lái)了辆沦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤识虚,失蹤者是張志新(化名)和其女友劉穎肢扯,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體担锤,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蔚晨,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肛循。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铭腕。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡银择,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谨履,到底是詐尸還是另有隱情欢摄,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布笋粟,位于F島的核電站怀挠,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏害捕。R本人自食惡果不足惜绿淋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望尝盼。 院中可真熱鬧吞滞,春花似錦、人聲如沸盾沫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)赴精。三九已至佩捞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蕾哟,已是汗流浹背一忱。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谭确,地道東北人帘营。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像逐哈,于是被迫代替她去往敵國(guó)和親芬迄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容