1. 程式人生 > >springMVC(5) springMVC一個controller寫多個方法

springMVC(5) springMVC一個controller寫多個方法

上面的例子都是實現Controller,實現handleRequest方法,我們想像struts2那樣一個action裡有多個方法怎麼辦?

可以繼承MultiActionController類,在類裡寫多個方法。spring-servlet.xml裡需要配置ParameterMethodNameResolver

MultiController:

package com.xdy.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 MultiController extends MultiActionController{

	public ModelAndView add(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		System.out.println("---add---");
		return new ModelAndView("/welcome","method","add");
	}

	public ModelAndView update(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		System.out.println("---update---");
		return new ModelAndView("/welcome","method","update");
	}
}

spring-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
	<bean name="/multi" class="com.xdy.controller.MultiController">
		<property name="methodNameResolver" ref="parameterMethodNameResolver"></property>
	</bean>
	
	<bean id="parameterMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
		<property name="paramName" value="action"></property>
	</bean>
	
	<!-- 配置解析器 -->
	<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/"/>
		<property name="suffix" value=".jsp"/>
	</bean>
	
</beans>

welcome.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>springMVC中一個controller中寫多個方法</title>
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
  </head>
  <body>
    <h1>一個controller中寫多個方法</h1>
    	方法名稱是:${method }
  </body>
</html>