??? 個人認為Spring其核心是其IOC和AOP方面,對其SpirngMVC框架并不關注,我看好的是JSF,簡單易懂。但最近由于工作上需要,所以有需要對SpringMVC做個了解學習,因此,本次對SpirngMVC的相遇純屬偶遇....下面對其做見識性了解說明:
??? SpingMVC的架構其實也很簡單,它通過一個共通的入門DispatcherServlet來接收所有的request,接下來根據request要求的頁面通過handler轉送給Controller處理,處理結果返回View給用戶,因此對SpringMVC來說,其核心為DispatcherServlet。
??? DispatcherServlet作為一扇門,我們要使用這個門,首先得安裝上這個門,安裝在哪呢?沒錯,就安裝在web.xml這個大屋子,象其他servlet一樣,描述servlet的名字和類,再給他一個mapping描述對應映射的網頁。在下例中,我們給DispatcherServlet的起名為SpringMVCDemo,并讓container知道所有.do結尾的request都丟給dispatcher。
????
<
servlet
>
????????
<
servlet-name
>
SpringMVCDemo
</
servlet-name
>
????????
<
servlet-class
>
????????????org.springframework.web.servlet.DispatcherServlet
????????
</
servlet-class
>
????????
<
load-on-startup
>
1
</
load-on-startup
>
????
</
servlet
>
????
<
servlet-mapping
>
????????
<
servlet-name
>
SpringMVCDemo
</
servlet-name
>
????????
<
url-pattern
>
*.do
</
url-pattern
>
????
</
servlet-mapping
>
??? 門安裝好了之后,我們需要定義門能打開的范圍,在哪定義呢?就在門的上面貼上一張“入門指導”,介紹從哪方面(hello.do)進門需要使用何種交通方式(springmvcController)進去,并定義該交通方式。
????
<
bean?
id
="urlMapping"
????????class
="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"
>
????????
<
property?
name
="mappings"
>
????????????
<
props
>
????????????????
<
prop?
key
="/hello.do"
>
springmvcController
</
prop
>
????????????
</
props
>
????????
</
property
>
????
</
bean
>
????
<!--
?SpringmvcController?
-->
????
<
bean?
id
="springmvcController"
????????class
="org.improviser.webapp.controller.SpringmvcController"
>
????
</
bean
>
??? 接下來該渲染一下頁面了,下面為渲染所有以
WEB-INF/pages/
開頭,并以.jsp結尾的頁面。
????
<!--
?ViewSolver?
-->
????
<
bean?
id
="viewResolver"
????????class
="org.springframework.web.servlet.view.InternalResourceViewResolver"
>
????????
<
property?
name
="viewClass"
>
????????????
<
value
>
org.springframework.web.servlet.view.JstlView
</
value
>
????????
</
property
>
????????
<
property?
name
="prefix"
>
????????????
<
value
>
/WEB-INF/pages/
</
value
>
????????
</
property
>
????????
<
property?
name
="suffix"
>
????????????
<
value
>
.jsp
</
value
>
????????
</
property
>
????
</
bean
>
???上面提到的SpringmvcController,現在該作個定義了,該類需要實現Controller接口。
public?class?SpringmvcController?implements?Controller?{
????/**?Logger?for?this?class?and?subclasses?*/
????protected?final?Log?logger?=?LogFactory.getLog(getClass());
????public?ModelAndView?handleRequest(HttpServletRequest?request,
????????????HttpServletResponse?response)?throws?ServletException,?IOException?{
????????Map?model?=?new?HashMap();
????????String str =?"即興詩人";
????????logger.info("returning?hello?view?with?"?+?currTime);
????????model.put("coldice", str);
????????return?new?ModelAndView("hello",?"message",?model);
????}
???編寫jsp測試頁面。
<html>
????<head>
????????<title>Spring?Application</title>
????</head>
????<body>
????????<h1>
????????????<br?/>
????????????Hello
??? ??? ??? <c:out?value="${message.coldice}"?/></br>
??? ??? ??? Spring?MVC 測試成功!
????????</h1>
????</body>
</html>
??? 現在對以上內容作個總結,正如上面所敘述,SpringMVC框架的處理過程機制如下圖所示,接收請求頁面,通過DispatcherServlet映射到相應規則處理,并找到相應的控制器,結果控制器處理后返回相應的頁面最后返回給用戶。

?
鳳凰涅槃/浴火重生/馬不停蹄/只爭朝夕
???? 隱姓埋名/低調華麗/簡單生活/完美人生