第一个Spring MVC程序

     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
程序代码 程序代码

<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

<bean id="viewResolver"
  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix">
   <value>/WEB-INF/jsp/</value>
  </property>
  <property name="suffix">
   <value>.jsp</value>
  </property>
</bean>

<bean name="/hello.do"
  class="cn.startfromzero.spring.mvc.controller.HelloController">
  <property name="viewPage">
   <value>hello</value>
  </property>
</bean>

</beans>

上面这段话的意思是将会把名为[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

posted on 2009-05-21 14:04 vivian 阅读(427) 评论(0)  编辑  收藏 所属分类: Spring

<2025年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

统计

留言簿(1)

文章分类

文章档案

搜索

最新评论