`

进入 Spring MVC

 
阅读更多

在 Spring 系列 的第 3 部分中,我介绍 Spring MVC 框架。就像在以前的文章中一样,我用银行示例介绍如何建模和构建简单的应用程序。示例应用程序包含了已经学过的一些技术(例如依赖注入),但是主要演示 Spring MVC 的特性。

在开始之前,请 下载这篇文章的源代码。请参阅 参考资料 访问 Spring 框架和 Tomcat 5.0,运行示例需要它们。

Spring MVC 框架

Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web 框架。通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和 POI。Spring MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

Spring 的 Web MVC 框架是围绕 DispatcherServlet 设计的,它把请求分派给处理程序,同时带有可配置的处理程序映射、视图解析、本地语言、主题解析以及上载文件支持。默认的处理程序是非常简单的 Controller 接口,只有一个方法 ModelAndView handleRequest(request, response)。Spring 提供了一个控制器层次结构,可以派生子类。如果应用程序需要处理用户输入表单,那么可以继承 AbstractFormController。如果需要把多页输入处理到一个表单,那么可以继承 AbstractWizardFormController

示例应用程序有助于直观地学习这些特性。银行应用程序允许用户检索他们的帐户信息。在构建银行应用程序的过程中,可以学到如何配置 Spring MVC 框架和实现框架的视图层,视图层包括 JSTL 标记(用于显示输出的数据)和JavaServer Pages 技术。

 

配置 Spring MVC

要开始构建示例应用程序,请配置 Spring MVC 的 DispatcherServlet。请在 web.xml 文件中注册所有配置。清单 1 显示了如何配置sampleBankingServlet


清单 1. 配置 Spring MVC DispatcherServlet

				
<servlet>
   <servlet-name>sampleBankingServlet</servlet-name>  
   <servlet-class>
      org.springframework.we.servlet.DispatcherServlet
   <servlet-class>
   <load-on-startup>1<load-on-startup>
<servlet>        

 

DispatcherServlet 从一个 XML 文件装入 Spring 应用程序上下文,XML 文件的名称是 servlet 的名称后面加上 -servlet 。在这个示例中,DispatcherServlet 会从 sampleBankingServlet-servlet.xml 文件装入应用程序上下文。

配置应用程序的 URL

下一步是配置想让 sampleBankingServlet 处理的 URL。同样,还是要在 web.xml 中注册所有这些信息。


清单 2. 配置想要处理的 URL

				
<servlet-mapping>
<servlet-name> sampleBankingServlet<servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>

 

装入配置文件

下面,装入配置文件。为了做到这点,请为 Servlet 2.3 规范注册 ContextLoaderListener 或为 Servlet 2.2 及以下的容器注册ContextLoaderServlet。为了保障后向兼容性,请用 ContextLoaderServlet。在启动 Web 应用程序时,ContextLoaderServlet 会装入 Spring 配置文件。清单 3 注册了 ContextLoaderServlet


清单 3. 注册 ContextLoaderServlet

				
<servlet>
  <servlet-name>context>servlet-name>
  <servlet-class>
     org.springframework.web.context.ContextLoaderServlet
  </servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

 

contextConfigLocation 参数定义了要装入的 Spring 配置文件,如下面的 servlet 上下文所示。

<context-param>
<param-value>contextConfigLocation</param-value>
<param-value>/WEB-INF/sampleBanking-services.xml</param-value>
</context-param>

 

sampleBanking-services.xml 文件代表示例银行应用程序服务的配置和 bean 配置。如果想装入多个配置文件,可以在 <param-value> 标记中用逗号作分隔符。

 

Spring MVC 示例

示例银行应用程序允许用户根据惟一的 ID 和口令查看帐户信息。虽然 Spring MVC 提供了其他选项,但是我将采用 JSP 技术作为视图页面。这个简单的应用程序包含一个视图页用于用户输入(ID 和口令),另一页显示用户的帐户信息。

我从 LoginBankController 开始,它扩展了 Spring MVC 的 SimpleFormControllerSimpleFormContoller 提供了显示从 HTTP GET 请求接收到的表单的功能,以及处理从 HTTP POST 接收到的相同表单数据的功能。LoginBankController 用 AuthenticationService 和AccountServices 服务进行验证,并执行帐户活动。“ 配置视图属性 ”一节中的 清单 5 描述了如何把 AuthenticationService 和AccountServices 连接到 LoginBankController。 清单 4 显示了 LoginBankController 的代码。

配置视图属性

下面,我必须注册在接收到 HTTP GET 请求时显示的页面。我在 Spring 配置中用 formView 属性注册这个页面,如清单 5 所示。sucessView 属性代表表单数据提交而且 doSubmitAction() 方法中的逻辑成功执行之后显示的页面。formView 和 sucessView 属性都代表被定义的视图的逻辑名称,逻辑名称映射到实际的视图页面。


清单 5. 注册 LoginBankController

				  
   <bean id="loginBankController"
         class="springexample.controller.LoginBankController">
      <property name="sessionForm"><value>true</value></property>
   <property name="commandName"><value>loginCommand</value></property>
   <property name="commandClass">
      <value>springexample.commands.LoginCommand</value>
   </property>
      <property name="authenticationService">
         <ref bean="authenticationService" />
      </property>
      <property name="accountServices">
         <ref bean="accountServices" />
      </property>
      <property name="formView">
         <value>login</value>
      </property>
      <property name="successView">
         <value>accountdetail</value>
      </property>
   </bean>

 

commandClass 和 commandName 标记决定将在视图页面中活动的 bean。例如,可以通过 login.jsp 页面访问 loginCommand bean,这个页面是应用程序的登录页面。一旦用户提交了登录页面,应用程序就可以从 LoginBankController 的 onSubmit() 方法中的命令对象检索出表单数据。

视图解析器

Spring MVC 的 视图解析器 把每个逻辑名称解析成实际的资源,即包含帐户信息的 JSP 文件。我用的是 Spring 的InternalResourceViewResolver,如 清单 6 所示。

因为我在 JSP 页面中使用了 JSTL 标记,所以用户的登录名称解析成资源 /jsp/login.jsp,而 viewClass 成为 JstlView

验证和帐户服务

就像前面提到的,LoginBankController 内部连接了 Spring 的 AccountServices 和AuthenticationServiceAuthenticationService 类处理银行应用程序的验证。AccountServices 类处理典型的银行服务,例如查找交易和电汇。清单 7 显示了银行应用程序的验证和帐户服务的配置。


清单 7. 配置验证和帐户服务

				
<beans>
   <bean id="accountServices" 
      class="springexample.services.AccountServices">
   </bean>
   <bean id="authenticationService" 
      class="springexample.services.AuthenticationService">
   </bean>
</beans>

 

以上服务在 sampleBanking-services.xml 中注册,然后装入 web.xml 文件中,就像 前面讨论的那样。控制器和服务配置好后,这个简单的应用程序就完成了。现在我们来看看部署和测试它时会发生什么!

 

部署应用程序

我把示例应用程序部署在 Tomcat servlet 容器中。Tomcat 是 Java Servlet 和 Java ServerPagest 技术的官方参考实现中使用的 servlet 容器。如果以前没这么做过,请 下载 jakarta-tomcat-5.0.28.exe 并运行它把 Tomcat 安装到自己喜欢的任何位置,例如c:\tomcat5.0

接下来,下载示例代码 并释放到驱动器(例如 c:\ )上。创建了 Spring 项目的文件夹之后,打开它并把 spring-banking 子文件夹拷贝到 c:\tomvat5.0\webapps。spring-banking 文件夹是一个 Web 档案,里面包含 Spring MVC 示例应用程序。lib 文件夹包含应用程序需要的 Spring 框架、与Spring 相关的 MVC 库以及 JSTL 标记库和 jar 文件。

要启动 Tomcat 服务器,请使用以下命令:

cd bin C:\Tomcat 5.0\bin> catalina.bat start

Tomcat 应当启动并部署 Spring MVC 示例应用程序。

 

测试应用程序

要测试应用程序,请打开 Web 浏览器,指向 http://localhost:tomcatport/springbanking 并用 Tomcat 服务器实际运行的端口替换tomcatport。应当看到图 1 所示的登录屏幕。输入用户 ID “admin”和口令“password”,并按下登录按钮。其他用户 ID 或口令会造成来自验证服务的错误。


图 1. Spring MVC 示例登录屏幕
Spring MVC 示例登录屏幕的截屏 

登录成功之后,会看到图 2 所示的帐户细节页面。


图 2. Spring MVC 示例帐户细节页面
Spring MVC 示例帐户细节页面的截屏 

 

结束语

在三部分的 Spring 系列 的第三篇文章中,我介绍了 Spring MVC 框架的特性。我演示了如何配置和开发 Spring MVC 应用程序、如何配置 Spring MVC 控制器和向其中插入依赖项、如何用 JavaServer Pages 技术开发应用程序视图,以及如何把自己的页面与 Spring MVC 的视图层集成。总结这篇文章时,我演示了如何在 Tomcat servlet 容器中部署应用程序以及如何在浏览器中测试它。

请继续关注 Spring 系列 的下一篇文章。在下一篇文章中,我将介绍如何把基于 JMS 的应用程序与 Spring 框架集成。同时,请参阅参考资料 学习更多有关 Spring 框架和 Spring MVC 的内容。

分享到:
评论

相关推荐

    spring MVC测试实例

    首先,DispatcherServlet是Spring MVC的前端控制器,它是所有请求进入Spring MVC应用的入口点。DispatcherServlet负责拦截来自客户端的HTTP请求,然后根据请求信息(如URL、请求方法等)进行调度,将请求分发到合适...

    spring mvc

    ### Spring MVC 教程知识点详解 #### 一、Spring MVC 概述 Spring MVC 是 Spring 框架的一部分,主要用于构建基于 Java 的 Web 应用程序。它是一种模型-视图-控制器(Model-View-Controller,MVC)设计模式的实现...

    Spring MVC 4 Quickstart Maven Archetype

    Spring MVC 4 Quickstart Maven Archetype 是一个快速启动模板,专为构建基于Spring MVC 4的无XML(no-xml)Web应用程序而设计。这个模板简化了开发过程,通过Maven构建工具帮助开发者快速搭建一个功能完备的Web应用...

    spring MVC 配置文档

    所有进入Spring Web 的 Request 都经过 DispatcherServlet 需要在 web.xml 中注册 DispatcherServlet &lt;servlet&gt; &lt;servlet-name&gt;dispatherContext&lt;/servlet-name&gt; &lt;servlet-class&gt; org.springframework.web....

    IDEA 搭建Spring MVC环境示例1

    在本文中,我们将详细探讨如何使用IntelliJ IDEA(简称IDEA)搭建Spring MVC环境,以便开始进行Web应用程序开发。Spring MVC是Spring框架的一部分,它为构建基于模型-视图-控制器(MVC)架构的Web应用提供了强大的...

    【BAT必备】spring面试题,spring MVC面试题,spring boot面试题,spring cloud面试题

    对于准备进入BAT等大厂的开发者来说,掌握Spring框架的核心知识是非常必要的。不仅需要了解基本的概念,还需要深入学习其实现原理,这样才能在实际项目中更加灵活地运用这些技术。希望本文能够帮助大家更好地理解和...

    学生籍贯管理系统,基于Java SSM框架开发(spring、 spring mvc、 mybatis)

    本文将深入探讨一个基于Java SSM框架(Spring、Spring MVC、MyBatis)开发的学生籍贯管理系统,理解其设计原理、核心功能及实现技术。 首先,SSM框架是Java Web开发中的主流选择,它由Spring、Spring MVC和MyBatis...

    spring mvc的配置文件详解

    Spring MVC 的核心组件之一就是 DispatcherServlet,它作为整个框架的入口,负责处理所有进入 Spring Web 应用程序的请求。为了使 DispatcherServlet 正常工作,我们需要在 web.xml 文件中对其进行注册。 ##### ...

    Spring-MVC处理XSS、SQL注入攻击的方法总结

    ### Spring MVC 处理 XSS 和 SQL 注入攻击的方法总结 #### 一、引言 在 Web 开发领域,特别是基于 Java 的应用开发中,Spring MVC 框架因其灵活高效的特点而被广泛采用。然而,随着互联网技术的发展,网络安全问题...

    图书管理系统(Spring + Spring MVC + MyBatis).zip

    基于Spring Spring MVC MyBatis的图书馆管理系统,使用Maven进行包管理。主要功能包括:图书查询、图书管理、图书编辑、读者管理、图书的借阅与归还以及借还日志记录等。 环境配置 开发环境:Windows 10,IntelliJ ...

    Spring MVC基本概念

    对于初学者而言,了解Spring MVC的基本概念是进入Java Web开发领域的第一步。 #### Spring MVC框架简介 Spring MVC框架是Spring框架的一个模块,它提供了处理HTTP请求的标准方法。通过将业务逻辑与用户界面分离,...

    spring mvc中文教程

    ### Spring MVC中文教程知识点解析 #### 一、Spring MVC简介 Spring MVC 是 Spring 框架的一个重要组成部分,主要用于构建 Web 应用程序。它遵循 Model-View-Controller(MVC)架构模式,有助于分离业务逻辑和用户...

    spring mvc 自学教程

    1. **DispatcherServlet**:它是整个 Spring MVC 框架的核心,作为前端控制器,它负责拦截所有进入的 HTTP 请求,根据请求信息调用对应的处理器方法。 2. **HandlerMapping**:处理器映射器,用于将请求映射到具体的...

    Spring Mvc(1)Spring MVC 校验

    Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一部分,主要负责处理 HTTP 请求和响应,实现模型-视图-控制器(MVC)的设计模式。在实际开发中,数据校验是必不可少的一个环节,用于确保...

    Spring mvc with Web Flow

    ### Spring MVC 与 Web Flow 技术详解 #### 引言 随着软件开发技术的不断发展,Web 应用程序的需求日益复杂。为了更好地管理和控制这些应用程序的流程,Spring 框架提供了强大的支持。其中,Spring MVC 和 Spring ...

    Spring-mvc+mybatis+shiro学习demo

    具体实现时,通常会在Spring MVC的配置文件中添加Shiro的Filter,如DelegatingFilterProxy,以便在请求进入控制器之前进行安全检查。同时,会创建一个Shiro配置类,定义Realm(域),将用户、角色和权限关联起来。...

    Spring MVC 到 Spring Boot 的简化之路.docx

    Spring MVC 到 Spring Boot 的简化之路,这是一段旨在提高开发效率和降低复杂性的旅程。...在这条简化之路上,Spring Boot成为了一种高效且现代化的开发工具,引领着开发者进入更加高效和便捷的开发时代。

    spring getting started

    Spring框架是Java企业级应用程序开发的事实上的标准,尤其在构建基于Web的应用程序时。...通过阅读优秀的入门文章和实践,初学者可以迅速地进入Spring MVC的开发世界,并掌握构建现代化Web应用程序的技能。

    兼容IE6的spring mvc框架

    Spring MVC是一个流行的Java web开发框架,它主要用于构建RESTful服务和MVC模式的应用。在这个场景中,"兼容IE6的spring mvc框架"意味着我们需要确保在使用Spring MVC 3.2版本开发的Web应用能够在IE6上正常运行。 *...

Global site tag (gtag.js) - Google Analytics