在經過對SSH框架的學習,想必大家也對這樣的框架有了一個新的認識,但回頭想一想,無論我們做多大或者是多小的項目的時候,前面的操作是不是麻煩而繁瑣,但是有必須每一步都不能少,是吧,呵呵
那遇到這樣的問題我們的前輩是怎麼樣去解決的呢,其實就是今天的主題了 -- Spring MVC
那這樣的一個東西到底是什麼呢? 我們先姑且這樣叫吧,呵呵,希望大家不要介意,相信大家學習完之後,對它會有全新的認識,而這種認識,我希望是發自每個人內心對它最真實的理解,好了,廢話不多說,開始吧!
首先是要一定說明的是,這倒是說明是什麼?對吧
Spring MVC 是SpringFrameWork的後續產品,並且已經融入到Spring Web Flow中
同時Spring MVC 分離了控制器,模型對象,分派器(其實我不知道這是什麼)以及處理程序對象的角色,這種分離讓它們更容易進行定製.
說了這些很官方的話,我都有點暈了,呵呵,先上一個原理流程圖吧,相信會比較直觀!
Spring MVC 原理圖
Spring MVC 對應原理流程步驟:
1.Web客戶端 --> DispatcherServlet 用戶發送一個請求到,首先到DispatcherServlet中(先交給前端控制器,進行全局的流程控制)
2.DispatcherServlet --> HandlerMapping 解析用戶在前臺提交的請求,並按照我們的要求分配到指定的Controller(相當於struts2中的action)
3.DispatcherServlet --> Controller 進入指定的Controller對象,執行裏面的方法,返回需要的字符串(ModelAndView),在Controller裏面需要對bean進行操作,也就是會和Model進行交互
4.DispatcherServlet --> ViewResolver 解析從Controller中返回的字符串,並轉換爲有效的JSP路徑
5.DispatcherServlet --> JSP 將轉換好的JSP路徑,指定到特定的頁面
6.JSP --> Web客戶端 將某一個特定的頁面顯示在客戶端界面
好了,以上就是Spring MVC的流程,是不是有了一定的認識了,不急,後面還有呢...
有了基本的認識, 那就開始編碼吧!(我是用的是Springframework-3.2.8)
大家都知道的,打開編譯器,準備開始開發一個項目的時候,第一步就是新建項目。哈哈!
是不是會有一點無語,呵呵,不是別的,只是活躍一下氣氛,原因你懂的。。
好吧,這一步就不列入編碼步驟裏了吧,下面正式開始!
第一步:添加架包
是不是覺得架包很少啊,沒錯,這就是Spring MVC的特點,繼續讓它顛覆你的想法吧
第二步:一定是web.xml文件了
這裏就是上面提到的DispatcherServlet -- 前端控制器
後面的"*.do"就是用來攔截頁面用戶的請求,這裏規定凡是以 .do 結尾的請求都會命中,當然這個可以自己定義,需要說明的是,不管自己定義的是什麼,一定要遵守,呵呵,是不是突然覺得好有道理!
第三步:在WEB-INF中配置 mvc-servlet.xml文件(要求名稱必須以Web.xml中的<servlet-name>節點中的名字開頭+servlet.xml)算了,直接上圖吧:
需要解釋:如果某一個Controller中需要調用不用的方法時,就必須指定定義方法的名字,例如請求的路徑爲:
user.do?action=userLogin
(1).需要指定定義方法的名字:<property name="paramName" value="action" />
定義之後,程序就知道在action之後的就是需要進入的某一個方法
(如果是調用同一個方法,當然就不需要定義這個,但是只要有一個Controller需要不同的方法,就需要定義)
(2).解析之後Controller路徑,這裏用到了Spring的控制反轉(IOC),其他就不同多說
<property name="methodNameResolver" ref="parameterMethodNameResolver" />
給Controller定義方法名解析器
2.1. 可以應用已經定義好的解析器(見上)
2.2. 可以爲每一個Bean單獨定義解析器
(3).解析所有來自頁面中命中的請求,並分配到不同的Controller中
(4).在配置文件中,如果使用最後一個bean裏面的內容,如果需要返回到"index.jsp"頁面時,就可以直接返回"index"就OK了,這個配置文件就是爲我們返回的字符串,前後自動加上"/"和".jsp".
一旦有了這個配置之後,就不能在Controller中進行對Controller的跳轉,因爲它會所有的返回字符串前後都加上"/"和".jsp",而這明顯不是我們所需要的,所以一般不會使用這種方法!
到這裏了,需要靜一靜,好好理一下思路.
第四步:定義一個UserController,並繼承MultiactionController類
(1).上面的代碼中繼承的是 MultiactionController類,意味着可以用來定義多個不同的方法,以請求中action後面的名字來定
當然還可以直接完成Controller接口,意味着當前整個Controller 中,只有一個方法,且必須給定
(2).在方法中的參數默認情況下是兩個,分別是HttpServletRequset和HttpServletResponse對象,當然在此之外,還可以定義一個對象類型的參數,主要是簡化表單提交多個參數(目前只瞭解到這裏)
寫到這裏,就差不多了,不出意外的話,你應該可以完成一個比較簡單的Spring MVC框架的小項目了
最後,謝謝你的信賴,看完了整篇內容,如遇到有問題的地方,望反饋給我,也希望共同進步!
拜拜~~~