SpringMVC学习之控制器—MultiActionController

MultiActionController这个控制器将多个请求处理方法合并在一个控制器里,这样可以把相关的功能组合在一起。

通过配置MethodNameResolver进行方法名的调用,

缺省的方法名解析器是InternalPathMethodNameResolver,根据url进行方法的划分。需要匹配<prop key="/hello/*.action">multiController</prop>

hello/index.action——index方法调用;

hello/onSubmit.action——onSubmit方法调用。

下面看一个简单的例子:

springmvc配置文件如下:

	<?xml version="1.0" encoding="UTF-8"?>
	<beans xmlns="http://www.springframework.org/schema/beans"
	        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
	        xmlns:context="http://www.springframework.org/schema/context"
	        xmlns:mvc="http://www.springframework.org/schema/mvc"
	        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
	        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
	        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
	
	        <!-- 简单url的映射处理器 -->
	        <bean id="simpleUrlHandlerMapping"
	                class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
	                <property name="mappings">
	                        <props>
	                                <prop key="/hello/*.action">multiController</prop>
	                        </props>
	                </property>
	                <!-- 设置优先级,值越小,优先级越高 -->
	                <property name="order" value="0" />
	        </bean>
	        
	        <!-- MethodNameResolver -->
	        <bean id="defaultResolver"
	                class="org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver"></bean>
	
	        <bean id="multiController" class="com.springmvc.controllers.MultiController">
	                <property name="MethodNameResolver" ref="defaultResolver"></property>
	        </bean>
	        
	        <!-- 视图解析器 -->
	        <bean id="jspViewResolver"
	                class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	                <!-- 前缀 -->
	                <property name="prefix" value="/WEB-INF/jsp/" />
	                <!-- 后缀 -->
	                <property name="suffix" value=".jsp" />
	        </bean>
	</beans>

对应 multiController 的控制器代码如下:

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 MultiController extends MultiActionController {
	
	public ModelAndView index(HttpServletRequest request,HttpServletResponse response) {
		System.out.println("**********index***********");
		return new ModelAndView("index");
	}
	
	public ModelAndView multi(HttpServletRequest request,HttpServletResponse response) {
		System.out.println("**********multi***********");
		String name = request.getParameter("name");
		int age = Integer.parseInt(request.getParameter("age"));
		System.out.println("name:"+name+"&age:"+age);
		ModelAndView mav = new ModelAndView();
		mav.setViewName("multi");
		mav.addObject("name",name);
		mav.addObject("age",age);
		return mav;
	}
}

前端jsp页面:

访问工程时,欢迎页面进行一个转发:

<%response.sendRedirect("/hello/index.action"); %>

这个转发会执行MultiController 控制器里的index方法,返回/WEB-INF/jsp/目录下的index.jsp页面,这个页面如下:

------------------MultiController------------------------
	<form action="multi.action" method="post">
		username:<input  name="name"/><br>
		age:<input name="age"/><br>
		<input type="submit" value="提交" />
</form>

提交表单后,执行 MultiController 控制器里的 multi 方法,返回 /WEB-INF/jsp/ 目录下的 multi.jsp 页面:

<h1>user:${name }</h1>
<h1>age:${age }</h1>


点击提交后,执行multi方法,返回前端页面:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值