Spring Web Flow 2.0入门 : 配置 Spring Web MVC
 

2009-03-05 作者:吕焱飞 来源:developerWorks

 

内容摘要:本示例应用将采用 eclipse Dynamic Web Project 向导默认生成的目录结构,在 WEB-INF 目录下添加 config 和 flows 子目录,其中 config 子目录用来存放各种配置文件, flows 子目录下存放 Spring Web Flow 的定义文件。

Spring Web Flow 2.0 就是 Spring Web MVC 的一个扩展,如果粗略一些来讲,所谓 flow 就相当于 Spring Web MVC 中一种特殊的 controller ,这种 controller 可通过 XML 文件加以配置,因此在使用 Spring Web Flow 2.0 前须先对 Spring Web MVC进行配置,步骤如下:

创建 Web 应用的目录结构

在 /WEB-INF/lib 下导入相关类库

在 Web 应用部署描述符文件 web.xml 中声明 DispatcherServlet 并指定配置文件

添加 DispatcherServlet 映射

创建 web-application-config.xml 文件

创建 webmvc-config.xml 文件

创建 index.jsp

创建 Web 应用的目录结构

本示例应用将采用 eclipse Dynamic Web Project 向导默认生成的目录结构,在 WEB-INF 目录下添加 config 和 flows 子目录,其中 config 子目录用来存放各种配置文件, flows 子目录下存放 Spring Web Flow 的定义文件。最后目录如图3所示:

图 2 目录结构

在 /WEB-INF/lib 下导入相关类库

只需将以下几个 jar 包导入 /WEB-INF/lib 目录下就可以了:

commons-logging.jar

jstl.jar

standard.jar

spring-webmvc.jar

spring.jar

声明 DispatcherServlet 并指定配置文件

为使用 Spring Web MVC ,须在 web.xml 中声明 DispatcherServlet ,见清单3:

清单 3 声明 DispatcherServlet 和指定配置文件

<servlet>
 <servlet-name>CartServlet</servlet-name>
 <servlet-class>
 org.springframework.web.servlet.DispatcherServlet
 </servlet-class>
 <init-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
  /WEB-INF/config/web-application-config.xml
  </param-value>
 </init-param>
 <load-on-startup>1</load-on-startup>
</servlet>

添加 DispatcherServlet 映射

要让 DispatcherServlet 处理所有以 /spring/ 开头的请求,见清单 4:

清单 4 web.xml 中的 DispatcherServlet映射

<servlet-mapping>
<servlet-name>CartServlet</servlet-name>
<url-pattern>/spring/*</url-pattern>
</servlet-mapping>

创建 web-application-config.xml

开发基于 Spring Web Flow 的应用往往会有大量的配置,这些配置全放在一个文件中是不合适的。本示例参考 Spring Web Flow 2.0 自带示例,将不同功能的配置文件分开。其中 web-application-config.xml 用于配置与 Web 应用全局相关的内容, Spring Web MVC 的相关配置放在 webmvc-config.xml 中,教程后面要添加的 Spring Web Flow 的配置则放在 webflow-config.xml 中。在 web-application-config.xml 中用 import 元素导入其他的配置文件。 web-application-config.xml的内容见清单5:

清单 5 web-application-config.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"
 xmlns:context="http://www.springframework.org/schema/context"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  http://www.springframework.org/schema/context
  http://www.springframework.org/schema/context/spring-context-2.5.xsd">
  <!-- 搜索 samples.webflow 包里的 @Component 注解,并将其部署到容器中 -->
  <context:component-scan base-package="samples.webflow" />
  <!-- 启用基于注解的配置 -->
  <context:annotation-config />
  <import resource="webmvc-config.xml"/>
</beans>

加入注解功能是出于最后运行 Web Flow 示例的需要,在这里只要知道注解功能已被启用就可以了。

创建 webmvc-config.xml

webmvc-config.xml 主要用于配置 Spring Web MVC 。所要做的就是添加一个 view resolver (视图解析器),用于将视图名解析成真实的视图资源。另外,再配置好 URL 请求的 handler (处理器),用于将 URL 请求定向到某个控制器,在本例中,用到的是 UrlFilenameViewController。

清单 6 webmvc-config.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.xsd">
  <bean id="viewResolver"
   class="org.springframework.web.servlet.view.InternalResourceViewResolver">
   <property name="viewClass"
   value="org.springframework.web.servlet.view.JstlView"/>
   <property name="prefix" value="/WEB-INF/jsp/"/>
   <property name="suffix" value=".jsp"/>
  </bean>
  <bean id="viewMappings"
   class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
   <property name="defaultHandler">
   <!-- UrlFilenameViewController 会将 "/index" 这样的请求映射成名为 "index" 的视图 -->
   <bean class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />
  </property>
 </bean>
</beans>

创建 index.jsp

现在的 index.jsp 只是显示一行文字。

清单 7 index.jsp

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Cart Application</title>
 </head>
 <body>
  <h1>Hello!</h1>
 </body>
</html>

运行应用程序

将应用程序发布到 Tomcat 容器,再通过 http://localhost:8080/CartApp/spring/index.jsp 访问 index.jsp 页面(应用程序所在文件夹名是 CartApp ),测试 Spring Web MVC 配置是否正确。如果一切正常,可得到如下页面:

图 3 显示结果


火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。
资源网站: UML软件工程组织