用 Spring MVC 轻松进行应用程序开发

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容器中部署应用程序以及如何在浏览器中测试它。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值