WebMVC架构是长久以来开发WEB应用程序时,受多数开发人员所推荐的架构,现如今有许多的开放源代码项目的WEB
MVC柜架,Spring也有着
自己的一套MVC柜架解决方案,并同时结合了Spring的IOC容器功能,在许多功能的整合上显得更为方便,除了Spring提供的MVC框架之
外,Spring还提供了一个完善的CONTROLLER继承架构,让您可以依自己的需求使用适当的Controller类.
下面我将通过一个简单的小例子来演示一下Spring MVC的工作流程:
我们以Eclipse为开发工具进行讲解,由于本文不是对Spring开发的入门教程,因此会简略掉一些基础内容,如果您对Spring基本内容还不是很了解,很参看本站的另一篇教程,Spring柜架入门教程。
首
先,我们用myeclipse工具新建WEB工程,项目名字叫做 springMVC ,然后引入spring 的相关包,既然是spring mvc
框架,顾名思义要用spring来控制业务流程,既然要控制就首先需要拦截住用户的每个请求信息,因此我们需要在web.xml中添加下面这段内容:

程序代码
......
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/mvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
......
上面的配置的意思是所有
*.do的请求都会交给org.springframework.web.servlet.DispatcherServlet 类来处理,
contextConfigLocation配置的是bean定义文件,如果不设置这个属性那么默认的将是"servlet-servlet.xml"这个文件名。
其次我们需要定义一个自己的controller类

程序代码
package cn.startfromzero.spring.mvc.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class HelloController implements Controller {
private String viewPage;
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
String user = request.getParameter("user");
System.out.println("user: " + user);
return new ModelAndView(viewPage,"user",user);
}
public String getViewPage() {
return viewPage;
}
public void setViewPage(String viewPage) {
this.viewPage = viewPage;
}
}
在
这个Controller中,取得了来自页面的user请求参数,并设定在ModelAndView的实例中,构建一个ModelAndView类有多种
构造方法,在这个例子中,第一个变量是跳转页面的名字(对这个名字是有要求的,请继续看下去),第二个变量是保存这个Model的KEY,第三个变量是这
个给View层的Model对象。接下来利用spring 的ioc 容器来 配置spring bean.xml文件
spring-mvc.xml
上面这段话的意思是将会把名为[color=Red
]/hello.do[/color]
的请求交给cn.startfromzero.spring.mvc.controller.HelloController类来处理,并返回
ModelAndView类,InternalResourceViewResolver的 "prefix","suffix" 属性会与
ModelAndView 返回的路径接合,例如若返回的路径信息为"hello"字符串,则与以上的例子设定的结合,实际的路径就是
/WEB-INF/jsp/hello.jsp。
最后我们在/WEB-INF/jsp/中写一个测试页面 hello.jsp

程序代码
<%@page contentType="text/html;charset=gbk"%>
<html>
<head>
<title>第一个Spring mvc的例子</title>
</head>
<body>
<h1>
欢迎你来到从零开始网学习Spring MVC教程,${user } !!
</h1>
</body>
</html>
一切搞定之后,部署到我们的WEB容器中,然后启动容器服务,在浏览器地址处输入:
http://localhost:8080/springMVC/hello.do?user=www.wozaishuo.com.cn
效果应该是:
你在部署成功这个项目之后也许会发生下面这样的问题:

程序代码
INFO: Deploying web application archive GRCC.war
Sep 14, 2007 13:22:18 AM org.apache.catalina.util.ExtensionValidator validateManifestResources
INFO: ExtensionValidator[/GRCC][commons-attributes-api.jar]: Required extension "ant" not found.
Sep 14, 2007 13:22:18 AM org.apache.catalina.util.ExtensionValidator validateManifestResources
INFO: ExtensionValidator[/GRCC][commons-attributes-compiler.jar]: Required extension "ant" not found.
Sep 14, 2007 13:22:18 AM org.apache.catalina.util.ExtensionValidator validateManifestResources
INFO: ExtensionValidator[/GRCC][commons-attributes-compiler.jar]: Required extension "javadoc" not found.
Sep 14, 2007 13:22:18 AM org.apache.catalina.util.ExtensionValidator validateManifestResources
INFO: ExtensionValidator[/GRCC]: Failure to find 3 required extension(s).
Sep 14, 2007 13:22:18 AM org.apache.catalina.core.StandardContext start
SEVERE: Error getConfigured
Sep 14, 2007 13:22:18 AM org.apache.catalina.core.StandardContext start
SEVERE: Context [/GRCC startup failed due to previous errors
Sep 14, 2007 13:22:18 AM org.apache.catalina.core.StandardContext stop
INFO: Container org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/GRCC] has not been started