Spring提供了MethodNameResolver的三種方式:
1 : ParameterMethodNameResolver,這個可以根據請求的參數來確定一個需要調用的方法。
例如,
http://www.sf.net/index.view?testParam=testIt,這個請求會調用名稱為testIt的處理方法。
2 : InternalPathMethodNameResolver,這個可以根據請求的路徑名稱來調用相應的方法。
例如,
http://www.sf.net/testing.view,這個請求會調用testing方法。
3 : PropertiesMethodNameResolver,這個可以根據一個URLs 映射列表來調用相應的方法。
例如,如果定義了/index/welcome.html=doIt,那么當請求為/index/welcome.html時,會調用doIt方法。在定義URLs時可以使用通配符。/**/welcom?.html
ParameterMethodNameResolver
InternalPathMethodNameResolver
PropertiesMethodNameResolver
配置web.xml
Java代碼
1. <servlet>
2. <servlet-name>spring</servlet-name>
3. <servlet-class>
4. org.springframework.web.servlet.DispatcherServlet
5. </servlet-class>
6. <load-on-startup>2</load-on-startup>
7. </servlet>
8. <servlet-mapping>
9. <servlet-name>spring</servlet-name>
10. <url-pattern>/spring/*</url-pattern>
11. </servlet-mapping>
定義一個Controller繼承與MultiActionController
Java代碼
1. package cn.iwoo.server.controller;
2.
3. import javax.servlet.http.HttpServletRequest;
4. import javax.servlet.http.HttpServletResponse;
5.
6. import org.springframework.web.servlet.ModelAndView;
7. import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
8.
9. public class BController extends MultiActionController {
10. public ModelAndView doSearch(HttpServletRequest request, HttpServletResponse response) throws Exception {
11. System.out.println(this.getClass() + "." + "doSearch()");
12. return new ModelAndView("");
13. }
14. }
方法的定義必須符合下面的格式
Java代碼
1. public (ModelAndView | Map | String | void) actionName(HttpServletRequest request, HttpServletResponse response);
定義ViewResolver
Java代碼
1. <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
熱點推薦
中國民間魔術、原來如此
百張三維立體圖
社交禮儀講座
75
為什么要使用三家禽肉不能吃的中國各省人口排發人警醒:一個一個人的世界
新概念英語學習英語名人名言
經典感悟的十個現實生活中的你[原創
壯哉,
落伍沒?盤點
寧靜(音畫)
給想干事的人以衛星電視初學者相關文章:
Spring架構設計-增強MultiActionController
MultiActionController綁定command
Spring的MultiActionController使用
推薦圈子: GT-Grid
更多相關推薦
Google
Java
Spring Wire
MVC
Compression Spring
關閉
MultiActionController與3種MethodNameResolver的配置http://www.360doc.com/content/10/0329/17/968587_20...
第1頁 共3頁2011-07-29 15:59
<property name="viewClass"><value>org.springframework.web.servlet.view.JstlView</2. value></property>
3. <property name="prefix"><value>/WEB-INF/jsp/</value></property>
4. <property name="suffix"><value>.jsp</value></property>
5. </bean>
定義UrlHandlerMapping
Java代碼
1. <bean id="urlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
2. lt;property name="urlMap">
3. <map>
4. <entry key="/b/*"><ref bean="bController"></ref></entry>
5. </map>
6. lt;/property>
7. </bean>
定義MethodNameResolver
一共定義了3個不同類型的MethodNameResolver.
Java代碼
1. <!-- MethodNameResolver Definition -->
<bean id="bMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
2.
3. <property name="paramName" value="method"></property>
4. <property name="logicalMappings">
5. <props>
6. <prop key="doSearch">doSearch</prop>
7. </props>
8. </property>
9. </bean>
10.
<bean id="cMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver">
11.
12. </bean>
13.
<bean id="dMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
14.
15. <property name="mappings">
16. <value>
17. /b/page.html=doSearch
18. </value>
19. </property>
20. </bean>
定義Controller
Java代碼
1. <!-- Controller Definition -->
2. <bean id="bController" class="cn.iwoo.server.controller.BController">
3. <!-- <property name="methodNameResolver"><ref local="bMethodNameResolver"/></property> -->
4. <!-- <property name="methodNameResolver"><ref local="cMethodNameResolver"/></property> -->
5. <property name="methodNameResolver"><ref local="dMethodNameResolver"/></property>
6. </bean>
測試
下面是對應于不同MethodNameResolver的測試url.
http://localhost:9080/cn.iwoo/spring/b?method=doSearch
http://localhost:9080/cn.iwoo/spring/b/doSearch
http://localhost:9080/cn.iwoo/spring/b/page.html
注:/b/是我的controller的映射前綴,在PropertiesMethodNameResolver的mappings配置里面,網址必須是/b/開頭,也就是controller的前綴也需
要寫進去. 這是我測試的結果,不知是否必須這樣.
</script>