重新探索自我

              客觀條件受制于人,并不足懼。重要的是,我們擁有選擇的自由,可以對現實環境積極回應,
              為生命負責,為自己創造有利的機會,做一個“真正”操之在我的人!

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            3 隨筆 :: 10 文章 :: 5 評論 :: 0 Trackbacks

           

          衡量一個MVC框架模式,主要通過三種web模式,本人認為springMVC是一個很好的MVC

          模式,對模式的支持如下:

          1)派遣器模式

          Spring有一個統一集中的派遣器org.springFramework.Web.Servlet.DispatcherServlet,

          一般在web.XML中把所有的頁面請求都發送到該派遣器:

          <servlet>

            <servlet-name>countries</servlet-name>

            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

            <load-on-startup>2</load-on-startup>

          </servlet>

          <servlet-mapping>

            <servlet-name>countries</servlet-name>

            <url-pattern>*.htm</url-pattern>

          </servlet-mapping>

          2)控制器模式

          派遣器收到請求后,把不同的頁面派遣到不同的控制器進行處理:

          <bean  id="urlMapping"

          class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

              <property name="mappings">

                       <props>

                              <prop key="/home.htm">countriesController</prop>

                             <prop key="/notfound.htm">errorsController</prop>

          </props>

           </property>

          </bean>

          Spring有兩種MAPPING的機制,默認為BeanNameUrlHandlerMapping,我們這里采用的是

          SimpleUrlHandlerMapping.

          3)攔截器模式

          在控制器處理前,我們可以將其攔截,進行一些特殊或通用處理;攔截器可以選用Spring已經實現的或我們自己實現的:

          <bean  id="urlMapping"

          class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

                <property name="interceptors">

                       <list>

                              <ref local="localeChangeInterceptor"/>

                             <ref local="themeChangeInterceptor"/>

                              <ref local="copyInterceptor"/>

                       </list>

           </property>

          </bean>

           

           

           

          詳細介紹:

          分發器:Dispatcherservlet

          整個spring應用只需要一個分發器

          <servlet>

                 <servlet-name>springapp</servlet-name>

                 <servlet-class>

                        org.springframework.web.servlet.DispatcherServlet

                 </servlet-class>

                 <load-on-startup>1</load-on-startup>

          </servlet>

          <!-- 映射的類型-->

          <servlet-mapping>

                     <servlet-name>springapp</servlet-name>

                     <url-pattern>*.do</url-pattern>

          </servlet-mapping>

          <servlet-mapping>

                     <servlet-name>springapp</servlet-name>

                     <url-pattern>*.html</url-pattern>

          </servlet-mapping>

           

          處理器映射

          一般對應文件 servlet-name-servlet.xml,譬如 springapp-servlet.xml

          BeanNameUrlHandlerMapping

          一般使用SimpleUrlHandlerMapping

          <!--Request Mapping -->

                 <bean id="urlMapping"

                        class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">                                         <property name="mappings">

                               <props>

                                      <prop key="login.do">LoginController</prop>   

                                      <prop key="login.html">LoginController</prop>               

                               </props>

                        </property>

                 </bean>

          控制器

          控制器的基礎接口 Controller ,包含方法

                 ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response)

          throws Exception;

          一般使用 return new ModelAndView(“”);也可以使用response.sendRedirect(“”).;

          AbstractController控制器繼承Controller類,增加譬如緩存、minetype等功能,處理多個動作,可以使用MultiActionController

          但如果要表單和數據對象的交互,我們就使用命令控制器

          一般使用AbstractCommandController帶參的形式,把相關的功能放在一個controller

          譬如用戶的添加、修改、刪除,就可以采用 usemanage.do?msg=add/modify/delete的形式

          SimpleFormController更為具體,但繼承它實現的OnSubmit的方法,不好用,譬如不能后退或者用于超鏈接等方式的地址直接響應。

           

          處理器映射攔截器

          攔截器接口定義了三個方法,一個在處理器執行前被調用,一個在處理器執行后被調用,還有一個在整個請求完成后調用。譬如在在上午9點到下午6點重定向某個頁面,

          handlerMapping那個bean里面加入

          <property name=”interceptors”>

          <list>

                        <ref bean=”officeHourIntercptor”>

          </list>

          </property>

          然后一個處理Bean

          <bean id=” officeHourIntercptor”  class=” TimeBaseIntercptor”>

                 <property name=”openTime”> <value>9</value> </property>

                 <property name=”closeTime”> <value>18</value> </property>

          </bean>

           

           

          視圖與解析器

          Spring框架控制器返回的是ModelAndView,對于一般的JSPServlet,一般使用InternalResourceViewResolver,繼承于UrlBaseViewResovler

          <bean id="viewResolver"

                        class="org.springframework.web.servlet.view.InternalResourceViewResolver">

                        <property name="viewClass">

                               <value>org.springframework.web.servlet.view.JstlView</value>

                        </property>

                 </bean>

           

          當一個web中使用不同類型的視圖技術,使用ResourceBandleViewResolver

           

          使用本地化信息

          Spring框架大部分支持國際化,像web框架一樣,自動解析客戶端信息

          但我們可以自己手動獲取客戶端信息,并做需要的參數設計來改變屬性

          一般使用LocalChangeInterceptor修改本地化信息,這個像攔截器一樣使用

             <bean  id="localeChangeInterceptor"

                       class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">

                   <property name="paramName"><value>siteLanguage</value></property>

             </bean>

             <bean id="localeResolver"

          class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/>

           

           

           

          posted on 2006-01-24 11:47 蔣利文 閱讀(2149) 評論(1)  編輯  收藏 所屬分類: 技術總結

          評論

          # re: SpringMVC框架學習 2015-06-19 10:06 zuidaima
          spring mvc demo教程源代碼下載:http://zuidaima.com/share/kspringmvc-p1-s1.htm  回復  更多評論
            

          主站蜘蛛池模板: 阿城市| 久治县| 丰县| 大方县| 扎兰屯市| 陆良县| 迁安市| 平顶山市| 萨嘎县| 乌审旗| 莱阳市| 周宁县| 苍南县| 承德市| 大厂| 荔波县| 南召县| 句容市| 历史| 确山县| 丹巴县| 通化市| 周至县| 临颍县| 讷河市| 桃江县| 宣化县| 苍溪县| 澎湖县| 蒙阴县| 甘肃省| 永吉县| 祁门县| 班玛县| 贵南县| 皮山县| 尉犁县| 曲水县| 天全县| 达孜县| 邵阳市|