| 
 | 
 
 
发表于 2007-5-15 16:45:24
|
显示全部楼层
 
 
 
<?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两个包。 
 
我也不太熟悉,转个,你看看 |   
 
 
 
 |