??? 個(gè)人認(rèn)為Spring其核心是其IOC和AOP方面,對(duì)其SpirngMVC框架并不關(guān)注,我看好的是JSF,簡(jiǎn)單易懂。但最近由于工作上需要,所以有需要對(duì)SpringMVC做個(gè)了解學(xué)習(xí),因此,本次對(duì)SpirngMVC的相遇純屬偶遇....下面對(duì)其做見識(shí)性了解說明:
??? SpingMVC的架構(gòu)其實(shí)也很簡(jiǎn)單,它通過一個(gè)共通的入門DispatcherServlet來接收所有的request,接下來根據(jù)request要求的頁面通過handler轉(zhuǎn)送給Controller處理,處理結(jié)果返回View給用戶,因此對(duì)SpringMVC來說,其核心為DispatcherServlet。
??? DispatcherServlet作為一扇門,我們要使用這個(gè)門,首先得安裝上這個(gè)門,安裝在哪呢?沒錯(cuò),就安裝在web.xml這個(gè)大屋子,象其他servlet一樣,描述servlet的名字和類,再給他一個(gè)mapping描述對(duì)應(yīng)映射的網(wǎng)頁。在下例中,我們給DispatcherServlet的起名為SpringMVCDemo,并讓container知道所有.do結(jié)尾的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
>
??? 門安裝好了之后,我們需要定義門能打開的范圍,在哪定義呢?就在門的上面貼上一張“入門指導(dǎo)”,介紹從哪方面(hello.do)進(jìn)門需要使用何種交通方式(springmvcController)進(jìn)去,并定義該交通方式。
????
<
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結(jié)尾的頁面。
????
<!--
?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,現(xiàn)在該作個(gè)定義了,該類需要實(shí)現(xiàn)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測(cè)試頁面。
<html>
????<head>
????????<title>Spring?Application</title>
????</head>
????<body>
????????<h1>
????????????<br?/>
????????????Hello
??? ??? ??? <c:out?value="${message.coldice}"?/></br>
??? ??? ??? Spring?MVC 測(cè)試成功!
????????</h1>
????</body>
</html>
??? 現(xiàn)在對(duì)以上內(nèi)容作個(gè)總結(jié),正如上面所敘述,SpringMVC框架的處理過程機(jī)制如下圖所示,接收請(qǐng)求頁面,通過DispatcherServlet映射到相應(yīng)規(guī)則處理,并找到相應(yīng)的控制器,結(jié)果控制器處理后返回相應(yīng)的頁面最后返回給用戶。

?
鳳凰涅槃/浴火重生/馬不停蹄/只爭(zhēng)朝夕
???? 隱姓埋名/低調(diào)華麗/簡(jiǎn)單生活/完美人生