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方法,返回前端頁面:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章