MultiActionController 配置的三种方式

  • ParameterMethodNameResolver
  • InternalPathMethodNameResolver
  • PropertiesMethodNameResolver
定义一个Controller继承与MultiActionController

package cn.iwoo.server.controller;

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

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

public class BController extends MultiActionController {
	public ModelAndView doSearch(HttpServletRequest request, HttpServletResponse response) throws Exception {
		System.out.println(this.getClass() + "." + "doSearch()");
		return new ModelAndView("");
	}
}



方法的定义必须符合下面的格式
Java代码 
public (ModelAndView | Map | String | void) actionName(HttpServletRequest request, HttpServletResponse response);  


定义ViewResolver
Java代码 

    <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/jsp/</value></property>
        <property name="suffix"><value>.jsp</value></property>
    </bean>


定义UrlHandlerMapping

 
  <bean id="urlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="urlMap">
			<map>
				<entry key="/b/*"><ref bean="bController"></ref></entry>
			</map>
		</property>
    </bean>


定义MethodNameResolver
一共定义了3个不同类型的MethodNameResolver.
	<!-- MethodNameResolver Definition -->
	<bean id="bMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
		<property name="paramName" value="method"></property>
		<property name="logicalMappings">
			<props>
				<prop key="doSearch">doSearch</prop>
			</props>
		</property>
	</bean>
	
	<bean id="cMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver">
	</bean>
		
	<bean id="dMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
	    <property name="mappings">
	        <value>
	            /b/page.html=doSearch
	        </value>
	    </property>
	</bean>



定义Controller


	<!-- Controller Definition -->
	<bean id="bController" class="cn.iwoo.server.controller.BController">
    	<!-- <property name="methodNameResolver"><ref local="bMethodNameResolver"/></property> -->
    	<!-- <property name="methodNameResolver"><ref local="cMethodNameResolver"/></property> -->
    	<property name="methodNameResolver"><ref local="dMethodNameResolver"/></property>
    </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的前缀也需要写进去. 这是我测试的结果,不知是否必须这样.

猜你喜欢

转载自hackpro.iteye.com/blog/1028559
今日推荐