java

位置:IT落伍者 >> java >> 浏览文章

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


发布日期:2022年12月05日
 
用 Spring MVC 轻松进行应用程序开发(图)

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

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

Spring MVC 框架

Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块使用 Spring 可插入的 MVC 架构可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web 框架通过策略接口Spring 框架是高度可配置的而且包含多种视图技术例如 JavaServer Pages(JSP)技术VelocityTilesiText 和 POISpring 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请在 webxml 文件中注册所有配置清单 显示了如何配置 sampleBankingServlet

清单 配置 Spring MVC DispatcherServlet

<servlet>

<servletname>sampleBankingServlet</servletname>

<servletclass>

orgspringframeworkweservletDispatcherServlet

<servletclass>

<loadonstartup><loadonstartup>

<servlet>

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

配置应用程序的 URL

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

清单 配置想要处理的 URL

<servletmapping>

<servletname> sampleBankingServlet<servletname>

<urlpattern>*jsp</urlpattern>

</servletmapping>

装入配置文件

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

清单 注册 ContextLoaderServlet

<servlet>

<servletname>context>servletname>

<servletclass>

orgsprntextContextLoaderServlet

</servletclass>

<loadonstartup></loadonstartup>

</servlet>

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

<contextparam>

<paramvalue>contextConfigLocation</paramvalue>

<paramvalue>/WEBINF/sampleBankingservicesxml</paramvalue>

</contextparam>

sampleBankingservicesxml 文件代表示例银行应用程序服务的配置和 bean 配置如果想装入多个配置文件可以在 <paramvalue> 标记中用逗号作分隔符

Spring MVC 示例

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

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

配置视图属性

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

清单 注册 LoginBankController

<bean id=loginBankController

class=ntrollerLoginBankController>

<property name=sessionForm><value>true</value></property>

<property name=commandName><value>loginCommand</value></property>

<property name=commandClass>

<value>mandsLoginCommand</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例如可以通过 loginjsp 页面访问 loginCommand bean这个页面是应用程序的登录页面一旦用户提交了登录页面应用程序就可以从 LoginBankController 的 onSubmit() 方法中的命令对象检索出表单数据

视图解析器

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

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

验证和帐户服务

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

清单 配置验证和帐户服务

<beans>

<bean id=accountServices

class=springexampleservicesAccountServices>

</bean>

<bean id=authenticationService

class=springexampleservicesAuthenticationService>

</bean>

</beans>

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

部署应用程序

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

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

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

cd bin C:\Tomcat \bin> catalinabat start

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

<

上一篇:Eclipse3.3下VSS的安装和使用步骤

下一篇:jboss下配置虚拟主机