springmvc:进入 Spring MVC来源: 发布时间:星期二, 2009年2月3日 浏览:13次 评论:0
Spring MVC 框架
Spring 框架提供了构建 Web 应用全功能 MVC 模块使用 Spring 可插入 MVC 架构可以选择是使用内置 Spring Web 框架还是 Struts 这样 Web 框架通过策略接口Spring 框架是高度可配置而且包含多种视图技术例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和 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请在 web.xml 文件中注册所有配置清单 1 显示了如何配置 sampleBankingServlet 清单 1. 配置 Spring MVC DispatcherServlet <servlet> DispatcherServlet 从个 XML 文件装入 Spring 应用上下文XML 文件名称是 servlet 名称后面加上 -servlet 在这个举例中DispatcherServlet 会从 sampleBankingServlet-servlet.xml 文件装入应用上下文 配置应用 URL 下步是配置想让 sampleBankingServlet 处理 URL同样还是要在 web.xml 中注册所有这些信息 清单 2. 配置想要处理 URL <servlet-mapping> 装入配置文件 下面装入配置文件为了做到这点请为 Servlet 2.3 规范标准注册 ContextLoaderListener 或为 Servlet 2.2 及以下容器注册 ContextLoaderServlet为了保障后向兼容性请用 ContextLoaderServlet在启动 Web 应用时ContextLoaderServlet 会装入 Spring 配置文件清单 3 注册了 ContextLoaderServlet 清单 3. 注册 ContextLoaderServlet <servlet> contextConfigLocation 参数定义了要装入 Spring 配置文件如下面 servlet 上下文所示 <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 代码 清单 4. LoginBankController 扩展 SimpleFormController public LoginBankController extends SimpleFormController { 配置视图属性 下面我必须注册在接收到 HTTP GET 请求时显示页面我在 Spring 配置中用 formView 属性注册这个页面如清单 5 所示sucessView 属性代表表单数据提交而且 doSubmitAction 思路方法中逻辑成功执行的后显示页面formView 和 sucessView 属性都代表被定义视图逻辑名称逻辑名称映射到实际视图页面 清单 5. 注册 LoginBankController <bean id="loginBankController" commandClass 和 commandName 标记决定将在视图页面中活动 bean例如可以通过 login.jsp 页面访问 loginCommand bean这个页面是应用登录页面旦用户提交了登录页面应用就可以从 LoginBankController _disibledevent=> ="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass"> <value>org.springframework.web.servlet.view.JstlView</value> </property> <property name="prefix"><value>/jsp/</value></property> <property name="suffix"><value>.jsp</value></property> </bean> 我在 JSP 页面中使用了 JSTL 标记所以用户登录名称解析成资源 /jsp/login.jsp而 viewClass 成为 JstlView 验证和帐户服务 就像前面提到LoginBankController 内部连接了 Spring AccountServices 和 AuthenticationServiceAuthenticationService 类处理银行应用验证AccountServices 类处理典型银行服务例如查找交易和电汇清单 7 显示了银行应用验证和帐户服务配置 清单 7. 配置验证和帐户服务 <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.0webappsspring-banking 文件夹是个 Web 档案里面包含 Spring MVC 举例应用lib 文件夹包含应用需要 Spring 框架、和Spring 相关 MVC 库以及 JSTL 标记库和 jar 文件 要启动 Tomcat 服务器请使用以下命令: cd bin C:Tomcat 5.0bin> catalina.bat start Tomcat 应当启动并部署 Spring MVC 举例应用 测试应用 要测试应用请打开 Web 浏览器指向 http://localhost:tomcatport/springbanking 并用 Tomcat 服务器实际运行端口替换 tomcatport应当看到图 1 所示登录屏幕输入用户 ID “admin”和口令“password”并按下登录按钮其他用户 ID 或口令会造成来自验证服务 图 1. Spring MVC 举例登录屏幕 登录成功的后会看到图 2 所示帐户细节页面 图 2. Spring MVC 举例帐户细节页面 结束语 在 3部分 Spring 系列 第 3篇文章中我介绍了 Spring MVC 框架特性我演示了如何配置和开发 Spring MVC 应用、如何配置 Spring MVC 控制器和向其中插入依赖项、如何用 JavaServer Pages 技术开发应用视图以及如何把自己页面和 Spring MVC 视图层集成整理总结这篇文章时我演示了如何在 Tomcat servlet 容器中部署应用以及如何在浏览器中测试它 0
相关文章
读者评论发表评论 |
|