即興的靈感

          思維是一種藝術(shù); 藝術(shù)需要靈感。

          博客好友

          最新評(píng)論

          偶遇Spring MVC


          ??? 個(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)的頁面最后返回給用戶。
          138199405_8b54d56b71_o.png



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

          posted on 2007-11-04 10:44 poetguo 閱讀(6690) 評(píng)論(13)  編輯  收藏 所屬分類: Spring

          評(píng)論

          # re: 偶遇Spring MVC 2007-11-04 12:00 BeanSoft

          呵呵 Spring MVC 是緊耦合 和它自己的設(shè)計(jì)理念沖突啊... 所以 Spring Web 連 Struts 也打不過...  回復(fù)  更多評(píng)論   

          # re: 偶遇Spring MVC 2007-11-04 12:06 improviser

          嗯嗯 目前只是原型系統(tǒng)使用到 偶用一下測(cè)試看看而已啊  回復(fù)  更多評(píng)論   

          # re: 偶遇Spring MVC 2007-11-04 14:21 山風(fēng)小子

          @BeanSoft
          "Spring MVC 是緊耦合"
          具體體現(xiàn)在哪里呢?謝謝 :)  回復(fù)  更多評(píng)論   

          # re: 偶遇Spring MVC 2007-11-04 18:08 BeanSoft

          public class SpringmvcController implements Controller {

          這一句就是. 兄弟你用過 Struts 1 和 Struts 2 嘛? Spring 不是一直都講究 POJO 嘛? 也許現(xiàn)在新的 Spring MVC 也不需要繼承自它自己的 Web 層的接口了 呵呵. 這一點(diǎn)是和它自己的理念違背的.  回復(fù)  更多評(píng)論   

          # re: 偶遇Spring MVC 2007-11-04 18:49 山風(fēng)小子

          Struts2 中不也是
          public class Login extends ActionSupport {
          嗎?

          您所說的‘緊耦合’似乎各大框架都存在噢 :)  回復(fù)  更多評(píng)論   

          # re: 偶遇Spring MVC 2007-11-05 16:41 BeanSoft

          呵呵 JSF 不存在. 如果標(biāo)注算松耦合的話, EJB 3, JPA 也不存在. 不過 Spring 這個(gè)地方是緊耦合不假. 所以這里它只能和 Struts 來類比了, 當(dāng)然不影響使用, 嘿嘿.  回復(fù)  更多評(píng)論   

          # re: 偶遇Spring MVC 2007-11-05 22:48 improviser

          這也許就是正是欣賞jsf的地方  回復(fù)  更多評(píng)論   

          # re: 偶遇Spring MVC[未登錄] 2007-12-01 13:58 duma

          @山風(fēng)小子
          struts2 , webwork 可以不用這樣寫.  回復(fù)  更多評(píng)論   

          # re: 偶遇Spring MVC 2007-12-23 18:46 廣州_Soar

          Spring Web MVC 也許你只是用來玩玩,呵呵!!
          它的好處做過大型系統(tǒng)的朋友應(yīng)該都有體會(huì),不過目前大家都使用EXTJS2.0做前臺(tái)了,直接跟Service層進(jìn)行調(diào)用!!呵呵!!  回復(fù)  更多評(píng)論   

          # re: 偶遇Spring MVC 2007-12-24 22:27 improviser

          算玩過2個(gè)月了哈哈,還不錯(cuò),
          技術(shù)本身沒有錯(cuò),每一種都有它的有點(diǎn),存在即合理!  回復(fù)  更多評(píng)論   

          # re: 偶遇Spring MVC 2008-02-29 13:47 平淡無味

          第一次來 以后就常來了 希望能多寫一些 要好好學(xué)習(xí)了  回復(fù)  更多評(píng)論   

          # re: 偶遇Spring MVC[未登錄] 2008-11-26 06:59 Scott.H

          有 Spring 2.5 的 Annotation 以后,就不存在所謂的緊耦合,everything is a POJO  回復(fù)  更多評(píng)論   

          # re: 偶遇Spring MVC 2010-09-28 17:49 11

          是啊,Spring 2.5 的 Annotation用起來真的很方便。  回復(fù)  更多評(píng)論   

          主站蜘蛛池模板: 贵定县| 武穴市| 荣昌县| 广灵县| 东城区| 锡林郭勒盟| 宝应县| 涿鹿县| 湖南省| 南郑县| 通榆县| 泸定县| 五大连池市| 二连浩特市| 汉阴县| 竹北市| 集贤县| 长汀县| 孟州市| 焦作市| 四子王旗| 辽源市| 武山县| 个旧市| 长沙县| 涞水县| 科技| 理塘县| 武夷山市| 和政县| 兴义市| 三门峡市| 广平县| 中宁县| 连州市| 台湾省| 永康市| 黔东| 手机| 延庆县| 忻州市|