本站不再更新,歡迎光臨 java開發技術網
          隨筆-230  評論-230  文章-8  trackbacks-0
          SpringMVC框架是細膩點,這是她的優點也是缺點。
          Spring 角色:
          1、核心控制器DispatcherServlet
                 它類似于struts中的ActionServlet,WebWork中的ServletDispacher.
          負責攔截主求,將請求參數封裝成對象,然后根據處理器映射策略,將請求轉發給不同的業務控制器。DispatcherServlet應該配置成load-on-startup Servlet方式,它不僅負責處理請求,而且負責創建ApplicationContext,核心控制器啟動時加載,在web.xml配置如下。
            <servlet>
              
          <servlet-name>firstmvc</servlet-name>
              
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
              
          <load-on-startup>1</load-on-startup>
            
          </servlet>
            
          <servlet-mapping>
              
          <servlet-name>firstmvc</servlet-name>
              
          <url-pattern>*.do</url-pattern>
            
          </servlet-mapping>
          如上面配置,DispatcherServlet應對的配置文件是firstmvc-servlet.xml文件。

          2、業務控制器
                 不管直接實現還是繼承實現類,Spring的業務控制器都必須實現Controller接口,Spring提供了多種控制器實現的接口。這個業務控制器等同于Struts中的Action類,但兩者實現方法不一樣.Struts使用了類繼承,Spring使用了接口。并提供了以下實現類
          AbstractController  功以有限通常不支持使用
          ParameterizableViewController :與上面那個類相似,但可以返回視圖名,而不是硬編碼的視圖名
          UrlFilenameViewController : 根據URL并獲取請求的文件名
          ServletForwardingController: 將請求轉發給某Servlet。
          SimpleFormController : 用于處理表單參數的控制器
          MultiActionController :  多動作控制器
          AbstractCommandController :命令控制器

          在這里詳說MultiActionController,其它控制器自己找資料
           MultiActionController有兩種使用方式
          1、繼承MultiActionController,并在子類中指定MethodNameResolver解析的方法,在這種情況下,不需要配置Delegate參數
          2、不繼承MultiActionController,將動作定義在代理對象里,由代理調用Resolver解析的方法。
          MethodNameResolver主要有如下三種實現,需要的時候可以也可以自己提供
          1、ParameterMethodNameResolver,解析特定參數值,將參數值作為方法名。
          2、InternalPathMethodNameResolver:從請求路徑中解析文件名作為方法名。
          3、PropertiesMethodNameResolver:使用自定義屬性對象,將請求的URL景射到方法名.
          firstmvc-servlet.xml配置如下:
              <!-- 動作代理 -->
              
          <bean id="paramResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
                  
          <property name="paramName">
                      
          <value>method</value>
                  
          </property>
              
          </bean>
              
          <bean name="/paramMultiController.do" class="org.springframework.web.servlet.mvc.multiaction.MultiActionController">
                  
          <property name="methodNameResolver">
                      
          <ref bean="paramResolver"/>
                  
          </property>
                  
          <property name="delegate">
                      
          <ref bean="sampleDelegate"/>
                  
          </property>
              
          </bean>
              
          <bean id="sampleDelegate" class="com.mvc.SampleDelegate" />




          3、處理影射  
                控制器根據該策略,將請求轉發給對應的業務控制器。通常有下面兩種策略
                BeanNameUrlHandlerMapping 根據請求名轉發
                SimpleUrlHandlerMapping 根據定義轉發請求
                HandlerMapping 的基本功能是將請求傳遞到HandlerExecutionChain。BeanNameUrlHandlerMapping 是一個簡單而強大的控制映射器,它將HTTP的請求映射轉發給context中同名的bean。firstmvc-servlet.xml文件如下
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
          <beans>
              
          <bean id="handlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
              
          <bean name="/hello.do" class="com.mvc.HelloAction">
                  
          <property name="jsp">
                      
          <value>WEB-INF/jsp/hello.jsp</value>
                  
          </property>
              
          </bean>
          </beans>
          HelloAction.java代碼如下:
          package com.mvc;

          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          import org.springframework.web.servlet.ModelAndView;
          import org.springframework.web.servlet.mvc.Controller;

          public class HelloAction implements Controller{
              
              
          public String jsp;
              
          public void setJsp(String jsp){
                  
          this.jsp=jsp;
              }
              
              
          public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
                  
                  
          return new ModelAndView(jsp,"model",null); 
                  
              }
              
          }
          SimpleUrlHandlerMapping 是功能強大的控制器映射,但不喜歡用,
          用的時候再找資料吧。。。。


          4、視圖和視圖解析
          5、模型
               Spring根本沒提供專門的模型角色,Spring的Model對象由普通map對象充當,Key不能為空,值可以為空
          6、Command對象
               Command對象是普通的java對象,用于封裝用記請求參數     

          posted on 2007-10-04 15:25 有貓相伴的日子 閱讀(2114) 評論(2)  編輯  收藏 所屬分類: spring

          評論:
          # re: SpringMVC 2013-08-13 17:58 | zmh
          很好  回復  更多評論
            
          # re: SpringMVC 2015-06-19 10:04 | zuidaima
          spring mvc demo教程源代碼下載:http://zuidaima.com/share/kspringmvc-p1-s1.htm  回復  更多評論
            
          本站不再更新,歡迎光臨 java開發技術網
          主站蜘蛛池模板: 黄冈市| 集贤县| 启东市| 慈利县| 枣强县| 道孚县| 攀枝花市| 永靖县| 循化| 聂荣县| 册亨县| 平武县| 大田县| 盐边县| 扶绥县| 汽车| 榆树市| 南澳县| 淳化县| 昌吉市| 马尔康县| 武定县| 平凉市| 黄大仙区| 武城县| 游戏| 宜君县| 长阳| 兴城市| 常熟市| 宁波市| 朝阳市| 尼勒克县| 谢通门县| 湟源县| 肇源县| 红原县| 承德市| 昌图县| 咸宁市| 富源县|