软讯网络 > 编程语言 > Java > SpringMVC MultiActionController的使用-最简化教程
【标 题】:SpringMVC MultiActionController的使用-最简化教程
【关键字】:
SpringMVC,MultiActionController
【来 源】:http://www.blogjava.net/wangqi/archive/2006/08/31/66845.html
SpringMVC MultiActionController的使用-最简化教程

Step 1:配置web.xml
<?xml?version="1.0"?encoding="UTF-8"?>
<web-app?version="2.4"?xmlns="http://java.sun.com/xml/ns/j2ee"
????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
????xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee?
????http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

????<display-name>springapp</display-name>
????????
????<servlet>
????????<servlet-name>springMVC</servlet-name>
????????<servlet-class>
????????????org.springframework.web.servlet.DispatcherServlet
????????</servlet-class>
????????<load-on-startup>1</load-on-startup>
????</servlet>

????<servlet-mapping>
????????<servlet-name>springMVC</servlet-name>
????????<url-pattern>/page/*</url-pattern>
????</servlet-mapping>

</web-app>

servlet-mapping定义所有以/page/开头的url请求都会被spring 的DispatcherServlet处理转发。默认情况下DispatcherServlet会读取<servlet-name>-servlet.xml文件的配置信息初始化,该文件中urlMapping的定义决定当前请求转发给哪个controller来处理。
Step2:
定义/WEB-INF/springMVC-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?id="InternalPathMethodNameResolver"
????????class="org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver"?/>
????????
????<!--?视图解析器?-->
????<bean?id="viewResolver"
????????class="org.springframework.web.servlet.view.InternalResourceViewResolver">
????????<property?name="viewClass">
????????????<value>org.springframework.web.servlet.view.JstlView</value>
????????</property>
????</bean>
????
????<bean?id="controller"?class="com.controller.IndexController">
????????<property?name="methodNameResolver">
????????????<ref?bean="InternalPathMethodNameResolver"?/>
????????</property>
????</bean>

????<bean?id="urlMapping"
????????class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
????????<property?name="mappings">
????????????<props>
????????????????<prop?key="/controller/*">controller</prop>
????????????</props>
????????</property>
????</bean>
</beans>

urlMapping定义/controller/开头的url请求由名字为controller的控制器来处理,因为是多动作处理器,所以要定义MethodNameResolver来告诉springMVC应该调用controller的哪个方法,这里用的是InternalPathMethodNameResolver,该方法名解释器会把整个URL中最后一个"/"和最后一个"."之间的部分作为要调用的方法名。
Step3:
定义controller类并继承MultiActionController?
package?com.controller;

import?java.io.IOException;
import?java.util.HashMap;
import?java.util.Map;

import?javax.servlet.ServletException;
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?IndexController?extends?MultiActionController?
{
????
????public?ModelAndView?method1(HttpServletRequest?request,

????????????HttpServletResponse?respnose)?throws?ServletException,?IOException?
{
????????Map?model?=?new?HashMap();
????????model.put("message",?"你调用的是方法1");
????????return?new?ModelAndView("/index.jsp",?"model",?model);
????}
????
????public?ModelAndView?method2(HttpServletRequest?request,

????????????HttpServletResponse?respnose)?throws?ServletException,?IOException?
{
????????Map?model?=?new?HashMap();
????????model.put("message",?"你调用的是方法2");
????????return?new?ModelAndView("/index.jsp",?"model",?model);
????}
}

通过配置文件,访问上面这个controller中某个方法的url即为:localhost:8080/page/controller/方法名
Step4:/index.jsp
<%@?page?language="java"?pageEncoding="UTF-8"%>
<%@?taglib?prefix="c"?uri="http://java.sun.com/jstl/core_rt"?%>
<%@?taglib?prefix="fmt"?uri="http://java.sun.com/jstl/fmt"%>?
<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN">
<html>
<head></head>??
<body>
????<c:out?value="${model.message}"/>
</body>
</html>
因为InternalPathMethodNameResolver方法名解释器会把整个URL中最后一个"/"和最后一个"."之间的部分作为要调用的方法名,所以你可以在这个URL后面加任意文件格式的后缀,比如:
localhost:8080/page/controller/method1.jsp
或
localhost:8080/page/controller/method2.html
很爽吧,和真实的URL地址一样。另:开发环境:MyEclipse5.0M2+tomcat5.5
需要用到spring.jar和jstl.jar两个包。