SpringMVC MultiActionController的使用-最簡(jiǎn)化教程
Posted on 2006-08-31 13:39 zeroblue 閱讀(10052) 評(píng)論(3) 編輯 收藏 所屬分類: SpringStep 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/開(kāi)頭的url請(qǐng)求都會(huì)被spring 的DispatcherServlet處理轉(zhuǎn)發(fā)。默認(rèn)情況下DispatcherServlet會(huì)讀取<servlet-name>-servlet.xml文件的配置信息初始化,該文件中urlMapping的定義決定當(dāng)前請(qǐng)求轉(zhuǎn)發(fā)給哪個(gè)controller來(lái)處理。
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/開(kāi)頭的url請(qǐng)求由名字為controller的控制器來(lái)處理,因?yàn)槭嵌鄤?dòng)作處理器,所以要定義MethodNameResolver來(lái)告訴springMVC應(yīng)該調(diào)用controller的哪個(gè)方法,這里用的是InternalPathMethodNameResolver,該方法名解釋器會(huì)把整個(gè)URL中最后一個(gè)"/"和最后一個(gè)"."之間的部分作為要調(diào)用的方法名。
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",?"你調(diào)用的是方法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",?"你調(diào)用的是方法2");
????????return?new?ModelAndView("/index.jsp",?"model",?model);
????}
}

通過(guò)配置文件,訪問(wèn)上面這個(gè)controller中某個(gè)方法的url即為:localhost:8080/page/controller/方法名
Step4:/index.jsp
localhost:8080/page/controller/method1.jsp
或
localhost:8080/page/controller/method2.html
很爽吧,和真實(shí)的URL地址一樣。
另:開(kāi)發(fā)環(huán)境:MyEclipse5.0M2+tomcat5.5
需要用到spring.jar和jstl.jar兩個(gè)包。
附:源代碼下載























Step2:定義/WEB-INF/springMVC-servlet.xml
?
































Step3:定義controller類并繼承MultiActionController?




































通過(guò)配置文件,訪問(wèn)上面這個(gè)controller中某個(gè)方法的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>
因?yàn)?font color="#0000ff">InternalPathMethodNameResolver方法名解釋器會(huì)把整個(gè)URL中最后一個(gè)"/"和最后一個(gè)"."之間的部分作為要調(diào)用的方法名,所以你可以在這個(gè)URL后面加任意文件格式的后綴,比如:<%@?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>
localhost:8080/page/controller/method1.jsp
或
localhost:8080/page/controller/method2.html
很爽吧,和真實(shí)的URL地址一樣。
另:開(kāi)發(fā)環(huán)境:MyEclipse5.0M2+tomcat5.5
需要用到spring.jar和jstl.jar兩個(gè)包。
附:源代碼下載