介绍
通过指定参数值,就能够指定方法。
该方式一般让类继承MultiActionController来实现Handler。
如:
http://localhost:8080/SpringMVC/adminManager.action?ref=showTime,制定了执行showTime方法。
实践
开发Handler:
public class ItemMultiContorller extends MultiActionController{
/*
* 这里面的请求方法书写规范:
* 1.只有两个参数,第一个为HttpServletRequest,第二个为HttpServletResponse。有顺序要求!!!
* 2.返回值没有要求,可以为空,也可以返回ModelAndView。
* 3.方法名不能为handleRequest
* 4.请求url根据方法名请求!!!
*/
public void showTime(HttpServletRequest request,HttpServletResponse response){
System.out.println(new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss").format(new Date()));
}
public ModelAndView helloWorld(HttpServletRequest request,HttpServletResponse response){
System.out.println("Hello 程序世界!!");
return null;
}
}
配置Handler,让Spring进行管理对象:
<bean id="itemMultiController0x" class="cn.domarvel.controller.ItemMultiContorller">
<property name="methodNameResolver">
<bean class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<!-- 有两种配置方式:
一:注入paramName的参数,只能注入一个特定的参数名,通过参数名来获取方法值,来执行方法。默认为action参数名
二:配置methodParamNames,能注入多个参数名作为方法进行访问。
不懂上面这段话直接看效果。
通过参数名获取方法序优先级为:methodParamNames > paramName
-->
<property name="paramName" value="ref"/>
</bean>
</property>
</bean>
配置处理器映射器:
<!-- ##################################配置处理器映射器##################################### -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="adminManager.action">itemMultiController0x</prop>
</props>
</property>
</bean>
<!-- ################################################################################## -->
我的当前项目名为,SpringMVC所以,我的访问路径为:
http://localhost:8080/SpringMVC/adminManager.action?ref=showTime
http://localhost:8080/SpringMVC/adminManager.action?ref=helloWorld
第二种配置代码演示:
修改Handler输出:
public class ItemMultiContorller extends MultiActionController{
/*
* 这里面的请求方法书写规范:
* 1.只有两个参数,第一个为HttpServletRequest,第二个为HttpServletResponse。有顺序要求!!!
* 2.返回值没有要求,可以为空,也可以返回ModelAndView。
* 3.方法名不能为handleRequest
* 4.请求url根据方法名请求!!!
*/
public void showTime(HttpServletRequest request,HttpServletResponse response){
System.out.println(new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss").format(new Date()));
}
public ModelAndView helloWorld(HttpServletRequest request,HttpServletResponse response){
System.out.println("|"+request.getParameter("helloWorld")+"|");//为空字符串,并不为null
System.out.println("Hello 程序世界!!");
return null;
}
}
配置Handler让Spring进行管理:
<bean id="itemMultiController0x" class="cn.domarvel.controller.ItemMultiContorller">
<property name="methodNameResolver">
<bean class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<!-- 有两种配置方式:
一:注入paramName的参数,只能注入一个特定的参数名,通过参数名来获取方法值,来执行方法。默认为action参数名
二:配置methodParamNames,能注入多个参数名作为方法进行访问。
不懂上面这段话直接看效果。
通过参数名获取方法序优先级为:methodParamNames > paramName
-->
<property name="methodParamNames">
<array>
<value>showTime</value>
<value>helloWorld</value>
</array>
</property>
</bean>
</property>
</bean>
配置处理器映射器:
<!-- ##################################配置处理器映射器##################################### -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="adminManager.action">itemMultiController0x</prop>
</props>
</property>
</bean>
<!-- ################################################################################## -->
访问网址:
http://localhost:8080/SpringMVC/adminManager.action?helloWorld
http://localhost:8080/SpringMVC/adminManager.action?showTime