SpringMVC框架。用银行示例介绍如何建模和构建简单的应用程序。示例应用程序包含了已经学过的一些技术(例如依赖注入),但是主要演示SpringMVC的特性。
在开始之前,请下载这篇文章的源代码。请参阅参考资料访问Spring框架和Tom
cat5.0,运行示例需要它们。
SpringMVC框架
Spring框架提供了构建Web应用程序的全功能MVC模块。使用Spring可插入的MVC架构,可以选择是使用内置的SpringWeb框架还是Struts这样的Web框架。通过策略接口,Spring框架是高度可配置的,而且包含多种视图技术,例如JavaServerPages(JSP)技术、Velocity、Tiles、iText和POI。SpringMVC框架并不知道使用的视图,所以不会强迫您只使用JSP技术。SpringMVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
Spring的WebMVC框架是围绕DispatcherServlet设计的,它把请求分派给处理程序,同时带有可配置的处理程序映射、视图解析、本地语言、主题解析以及上载文件支持。默认的处理程序是非常简单的Controller接口,只有一个方法ModelAndViewhandleRequest(request,response)。Spring提供了一个控制器层次结构,可以派生子类。如果应用程序需要处理用户输入表单,那么可以继承AbstractFormController。如果需要把多页输入处理到一个表单,那么可以继承AbstractWizardFormController。
示例应用程序有助于直观地学习这些特性。银行应用程序允许用户检索他们的帐户信息。在构建银行应用程序的过程中,可以学到如何配置SpringMVC框架和实现框架的视图层,视图层包括JSTL标记(用于显示输出的数据)和JavaServerPages技术。
配置SpringMVC
要开始构建示例应用程序,请配置SpringMVC的DispatcherServlet。请在web.xml文件中注册所有配置。清单1显示了如何配置sampleBankingServlet。
清单1.配置SpringMVCDispatcherServlet
<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>
装入配置文件
下面,装入配置文件。为了做到这点,请为Servlet2.3规范注册ContextLoaderListener或为Servlet2.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>标记中用逗号作分隔符。
SpringMVC示例
示例银行应用程序允许用户根据惟一的ID和口令查看帐户信息。虽然SpringMVC提供了其他选项,但是我将采用JSP技术作为视图页面。这个简单的应用程序包含一个视图页用于用户输入(ID和口令),另一页显示用户的帐户信息。
我从LoginBankController开始,它扩展了SpringMVC的SimpleFormController。SimpleFormContoller提供了显示从HTTPGET请求接收到的表单的功能,以及处理从HTTPPOST接收到的相同表单数据的功能。LoginBankController用AuthenticationService和AccountServices服务进行验证,并执行帐户活动。“配置视图属性”一节中的清单5描述了如何把AuthenticationService和AccountServices连接到LoginBankController。清单4显示了LoginBankController的代码。
配置视图属性
下面,我必须注册在接收到HTTPGET请求时显示的页面。我在Spring配置中用formView属性注册这个页面,如清单5所示。sucessView属性代表表单数据提交而且doSubmitAction()方法中的逻辑成功执行之后显示的页面。formView和sucessView属性都代表被定义的视图的逻辑名称,逻辑名称映射到实际的视图页面。
清单5.注册LoginBankController
<beanid="loginBankController"
class="springexample.controller.LoginBankController">
<propertyname="sessionForm"><value>true</value></property>
<propertyname="commandName"><value>loginCommand</value></property>
<propertyname="commandClass">
<value>springexample.commands.LoginCommand</value>
</property>
<propertyname="authenticationService">
<refbean="authenticationService"/>
</property>
<propertyname="accountServices">
<refbean="accountServices"/>
</property>
<propertyname="formView">
<value>login</value>
</property>
<propertyname="successView">
<value>accountdetail</value>
</property>
</bean>
commandClass和commandName标记决定将在视图页面中活动的bean。例如,可以通过login.jsp页面访问loginCommandbean,这个页面是应用程序的登录页面。一旦用户提交了登录页面,应用程序就可以从LoginBankController的onSubmit()方法中的命令对象检索出表单数据。
视图解析器
SpringMVC的视图解析器把每个逻辑名称解析成实际的资源,即包含帐户信息的JSP文件。我用的是Spring的InternalResourceViewResolver,如清单6所示。
因为我在JSP页面中使用了JSTL标记,所以用户的登录名称解析成资源/jsp/login.jsp,而viewClass成为JstlView。
验证和帐户服务
就像前面提到的,LoginBankController内部连接了Spring的AccountServices和AuthenticationService。AuthenticationService类处理银行应用程序的验证。AccountServices类处理典型的银行服务,例如查找交易和电汇。清单7显示了银行应用程序的验证和帐户服务的配置。
清单7.配置验证和帐户服务
<beans>
<beanid="accountServices"
class="springexample.services.AccountServices">
</bean>
<beanid="authenticationService"
class="springexample.services.AuthenticationService">
</bean>
</beans>
以上服务在sampleBanking-services.xml中注册,然后装入web.xml文件中,就像前面讨论的那样。控制器和服务配置好后,这个简单的应用程序就完成了。现在我们来看看部署和测试它时会发生什么!
部署应用程序
我把示例应用程序部署在Tomcatservlet容器中。Tomcat是JavaServlet和JavaServerPagest技术的官方参考实现中使用的servlet容器。如果以前没这么做过,请下载jakarta-tomcat-5.0.28.exe并运行它把Tomcat安装到自己喜欢的任何位置,例如c:\tomcat5.0。
接下来,下载示例代码并释放到驱动器(例如c:\)上。创建了Spring项目的文件夹之后,打开它并把spring-banking子文件夹拷贝到c:\tomvat5.0\webapps。spring-banking文件夹是一个Web档案,里面包含SpringMVC示例应用程序。lib文件夹包含应用程序需要的Spring框架、与Spring相关的MVC库以及JSTL标记库和jar文件。
要启动Tomcat服务器,请使用以下命令:
cdbinC:\Tomcat5.0\bin>catalina.batstart
Tomcat应当启动并部署SpringMVC示例应用程序。
测试应用程序
要测试应用程序,请打开Web浏览器,指向
http://localhost:tomcatport/springbanking并用Tomcat服务器实际运行的端口替换tomcatport。应当看到图1所示的登录屏幕。输入用户ID“admin”和口令“password”,并按下登录按钮。其他用户ID或口令会造成来自验证服务的错误。
图1.SpringMVC示例登录屏幕

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

结束语
在三部分的Spring系列的第三篇文章中,我介绍了SpringMVC框架的特性。我演示了如何配置和开发SpringMVC应用程序、如何配置SpringMVC控制器和向其中插入依赖项、如何用JavaServerPages技术开发应用程序视图,以及如何把自己的页面与SpringMVC的视图层集成。总结这篇文章时,我演示了如何在Tomcatservlet容器中部署应用程序以及如何在浏览器中测试它。
分享到:
相关推荐
本书的核心在于深入浅出地介绍如何使用Java EE技术栈,特别是Spring、Spring MVC和MyBatis这三个关键框架,来构建高效、可维护的Web应用程序。 Java EE(Enterprise Edition)是Java平台的一个版本,主要用于开发和...
Spring MVC是Spring框架的一部分,专门用于构建Web应用程序的Model-View-Controller(MVC)架构。它提供了一个灵活的模型绑定机制,可以将HTTP请求参数与Java对象字段对应起来,同时支持多种视图技术,如JSP、...
Spring MVC是Spring框架的一个核心模块,专为构建Web应用程序而设计。它提供了模型-视图-控制器(MVC)架构,使开发者能够有效地分离业务逻辑、数据处理和用户界面。在"Spring MVC 4.2.3"版本中,我们看到了一系列的...
Spring MVC是Spring框架的一个模块,它提供了模型-视图-控制器(MVC)的架构模式来组织Web应用程序。Spring MVC的核心组件包括DispatcherServlet、Controller、ViewResolver和ModelAndView等。DispatcherServlet...
Spring MVC 是一个基于 Java 的轻量级Web应用框架,它为构建模型-视图-控制器(MVC)架构的应用程序提供了强大的支持。在本压缩包中包含了一系列与Spring MVC相关的jar文件,这些文件是构建和运行Spring MVC项目所...
Spring MVC 是一个强大的Java Web开发框架,它是Spring框架的一部分,专为构建高度可扩展和模块化的Web应用程序而设计。在2015年的版本中,Spring MVC 4已经相当成熟,提供了许多特性来简化开发流程并提高开发效率。...
在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第十部分将聚焦于实际应用中的细节和优化,旨在帮助开发者构建高效、可维护的Java Web应用程序...
而Spring MVC是Spring框架的一部分,用于构建高性能、灵活的Web应用程序。 【描述】"使用MAVEN 结合SPRING DWR hiberante validation"提到了另外三个技术:DWR(Direct Web Remoting)、Hibernate和Validation。DWR...
总的来说,Spring MVC 提供了一种结构化的 web 应用开发方式,结合 Eclipse 的强大支持,可以让开发者高效地构建健壮的、可扩展的应用程序。通过实践和理解这个基础应用,你可以进一步掌握 Spring MVC 的高级特性,...
Spring MVC 是一个基于 Java 的 Web 框架,它提供了一种灵活、可扩展、Easy-to-use 的 Web 应用程序开发方式。Spring MVC 是 Spring 框架的一部分,提供了一个强大、灵活、可扩展的 MVC 框架。 在 Spring MVC 中,...
Spring MVC是Spring框架的一个核心组件,专注于构建Web应用程序。它提供了模型-视图-控制器(MVC)架构,帮助开发者组织和分离应用的业务逻辑、数据处理以及用户界面。Spring MVC 4.2.4.RELEASE虽然不是一个正式版本...
Spring MVC 是一个强大的Java Web开发框架,用于构建高效、可维护的Web应用程序。"helloworld spring mvc"项目是入门Spring MVC的典型示例,它帮助开发者了解如何配置和运行一个基本的Spring MVC应用。 首先,...
Spring Web MVC 是 Spring Framework 的一个重要组成部分,主要用于构建基于 Java 的 Web 应用程序。它提供了一个灵活且强大的 MVC 实现,使得开发者能够轻松地开发出复杂的 Web 应用。 #### Spring Web MVC 的新...
Spring MVC 是一个强大的Java框架,用于构建Web应用程序,特别是对于基于模型-视图-控制器(MVC)架构的应用。在本文中,我们将深入探讨如何利用Spring MVC创建RESTful服务,这些服务可以处理字符串、JSON和XML数据...
13. **异常处理**: 通过@ControllerAdvice和@ExceptionHandler,可以全局捕获并处理应用程序中的异常,提供统一的错误页面或JSON响应。 14. **Internationalization (i18n) & Localization (l10n)**: Spring MVC ...
Spring MVC是Spring框架的一个模块,专为构建Web应用程序而设计,以其灵活性、高效性和可扩展性受到广大开发者的青睐。下面我们将详细探讨Spring MVC的核心概念和技术点。 1. **Spring MVC架构** Spring MVC采用...
Spring MVC是Spring框架的一个核心模块,它为Java应用程序提供了模型-视图-控制器(MVC)架构模式的实现。在本资源中,你将找到构建基于Spring MVC的应用所需的各种依赖包,这使得开发者能够快速而高效地搭建项目...
Spring MVC 是一个基于Java的轻量级Web应用框架,它是Spring框架的重要组成部分,主要用于构建Web应用程序的后端控制器。这个"Spring MVC 基础实例源码01"的资源很可能是为了帮助初学者理解Spring MVC的核心概念和...
Spring MVC 是 Spring 框架的一部分,它是一个用于构建 Web 应用程序的模型-视图-控制器(MVC)框架。Spring MVC 提供了处理HTTP请求、数据绑定、异常处理、视图渲染等功能,帮助开发者构建松散耦合、可测试和可维护...