隨筆-13  評論-9  文章-9  trackbacks-0

          總體圖表(參照stucts)

          DispatcherServlet=ActionServlet
          HandlerMapping=Struts-config.xml
          Controller=Action
          ModelAndView=mapping.findforward(string) 中的string;
          ViewResolver=mapping.findforward(string) 中string的解釋器

          特別注意:
          1.在web.xml里面配置好
          <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>

          不需要配置context-param
          <context-param>
          ? <param-name>contextConfigLocation</param-name>
          ? <param-value>/WEB-INF/springapp-servlet.xml</param-value>

          </context-param>
          DispatcherServlet?能夠自動的到WEB-INF下面查找與他同名的后面接-servlet,.xml的配置文件。
          (springapp-servlet.xml)

          注意:DispatcherServlet?處理的跳轉必須要在工程名下面。例如:工程名為:SpringMvc.則Http://localhost:8080/SpringMvc/test.htm可以跳轉。
          Http://localhost:8080/test.htm?不能跳轉

          ?詳細說明MultiActionController的配置吧:
          首先在bean.xml里面:

          <bean id="methodNameResolver"
          class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
          <property name="paramName"><value>method</value> //相當于DispatchAction的method后面接需要觸發的方法
          </property>
          ?
          //另一個觸發方法的配置
          //當提交coureList.htm時候觸發coursesUnsorted方法,當提交coursesSort.htm時候觸發coursesSortByDate方法

          <property name="mapping">
          ? <props>
          ????? <prop key="/coureList.htm">coursesUnsorted</prop>
          ???? ?<prop key="/coursesSort.htm">coursesSortByDate</prop>
          ???</props>
          </property>
          </bean>

          //默認方式頁面跳轉到Controller
          <bean name="/jsp/test.do" class="org.nightwalker.spaces.web.controller.TestController">
          <property name="methodNameResolver">
          <ref local="methodNameResolver"/>
          </property>
          </bean>
          ?

          //SimpleUrlHandlerMapping頁面跳轉到Controller
          <bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHand">
          <property name="mapping">
          <props>
          <prop key="/listCourses.htm">listCourseController</prop>
          <prop key="/register.htm">registerController</prop>
          <props>
          </props>
          </property>
          </bean>

          配置呢就這么簡單。methodNameResolver指定了調用MultiActionController中方法的方式,例如,如果在你的MultiActionController中有如下方法:


          public ModelAndView insertAccount(HttpServletRequest request,HttpServletResponse,Account account)
          {
          }

          那么要調用這個方法,你的JSP頁面的請求URL就應該這樣寫:
          <form action="test.do?method=insertAccount">
          </form>

          至于綁定什么command和JSP是沒有關系的。你在MultiActionController中的方法簽名第三個參數是什么對象,Spring就會把request中參數的值綁定到方法簽名的第三個對象中。

          例子我倒是沒有,最直接的辦法就是去看一下MultiActionController的源代碼,非常簡單拉,一看就明白了。



          protectedfinal ModelAndView invokeNamedMethod(String methodName, HttpServletRequest request, HttpServletResponse response)throwsException
          {
          ? ? ? ? ? ? ? ?

          ? ? ? ? ? ? ? ? ? ? ? ?
          // If last parameter isn't of HttpSession type, it's a command.
          // 在這里,Spring會判斷你的請求方法里面第三個參數的類型。如果第三個參數類型不是HttpSession,就認為是要綁定的command。
          if(method.getParameterTypes().length >= 3 &&
          !method.getParameterTypes()[method.getParameterTypes().length - 1].equals(HttpSession.class))
          {
          ? ? // 根據類型利用反射產生Command對象
          ? ? Object command = newCommandObject(method.getParameterTypes()[method.getParameterTypes().length - 1]);
          ? ? params.add(command);
          ? ?// 綁定command對象
          ? ?bind(request, command);
          }


          // 最后通過反射去調用你的方法,也就是說,在執行你的方法時,command已
          // 經幫你綁定好拉,你直接用就可以了。? ? ? ? ? ? ? ? ? ? ? ?
          return(ModelAndView) method.invoke(this.delegate, params.toArray(newObject[params.size()]));
          }

          使用模板視圖
          <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
          <property name="prefix"><value>/jsp</value></property>//前綴
          <property name="suffix"><value>.jsp</value></property>//后綴
          </bean>

          posted on 2006-06-20 10:50 Dragonofson 閱讀(1641) 評論(0)  編輯  收藏 所屬分類: Spring
          主站蜘蛛池模板: 廉江市| 景洪市| 青冈县| 阳山县| 上林县| 威海市| 突泉县| 麻城市| 东乡县| 庆城县| 乌鲁木齐县| 天镇县| 巨野县| 泾川县| 乌审旗| 沧州市| 南开区| 长汀县| 垦利县| 六安市| 姜堰市| 东乌珠穆沁旗| 张家港市| 扎赉特旗| 磐石市| 甘德县| 黔江区| 长垣县| 彭阳县| 敦煌市| 垦利县| 水城县| 虹口区| 江安县| 北宁市| 武平县| 兴山县| 大新县| 石渠县| 宾川县| 神农架林区|