




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第23章 Spring的Web架构 同Struts 2框架一样,Spring也可以给Web开发者提供 一个MVC框架。虽然Web框架只是Spring的一个模 块,但是它却应用的非常广泛。本章结合实例分析 Spring Web框架的使用方法、各个组件的作用。 23.1 第一个Spring MVC例子 在讲解Spring的MVC框架的各个组件之前,先通过 一个例子来体会一下其流程。 23.1.1 配置web.xml文件 在ch23的WEB-INF目录下创建web.xml。在使用 Struts 2时,需要在web.xml文件配置FilterDispatcher ,在使用Spring的MVC框架时,也需要配置web.xml 文件。 23.1.2 编写用于输出的页面 在ch23文件夹下面创建sayHello.jsp,该页面用来被 Spring的控制器调用向页面上输出一个字符串。 23.1.3 创建控制器 Spring的MVC框架也有充当控制器的组件。下面先 在ch23中创建一个package:com.examp.ch23,然后 在其中添加HelloWorldAction.java类,用于调用 sayHello.jsp去显示字符串。 23.1.4 创建Spring的配置文件 在前面讲Struts 2时,配置文件struts.xml主要用来对 Action类进行配置,下面看Spring的配置文件是如何 配置的。 23.1.5 运行Spring MVC示例 在Eclipse中启动Tomcat,在浏览器中输入 http:/localhost:8080/ch23/helloWorld.do,可以访问到 sayHello.jsp。 23.1.6 使用JSTL视图技术 JSTL(JSP Standard Tag Library,JSP标准标签库) 是一个不断完善的开放源代码的JSP标签库,是由 apache的jakarta小组来维护的。使用JSTL可以实现迭 代和条件判断、数据管理格式化、XML操作以及数 据库访问等操作。可以使用JSTL技术去实现 sayHello.jsp。 23.2 Spring MVC的控制器 和Struts 2一样,Spring MVC框架的控制器也用来建 立视图层和模型层的联系,Spring的控制器可以通过 继承一些接口来实现,下面进行讲解。 23.2.1 核心控制器 DispatcherServlet DispatcherServlet是Spring MVC的核心控制器,其作用相当于Struts 2的 FilterDispatcher,负责对客户端的请求进行分发,把满足特定格式的请求 交给业务控制器去处理。 1DispatcherServlet的配置 2DispatcherServlet的工作流程 当DispatcherServlet接收到用户请求后,按照如下步骤进行处理。 (1)搜索封装配置文件信息的WebApplicationContext,并将它作为一个 属性存储在请求对象中,这样DispatcherServlet就可以使用 WebApplicationContext调用配置文件中定义的 资源。 (2)把本地化信息、主体信息也存储到请求对象上。 (3)根据配置文件搜索合适的业务处理器,并准备用于返回的 ModelAndView。 (4)当业务处理器处理完业务逻辑后,根据WebApplicationContext中绑 定的视图信息显示对应的视图。 23.2.2 控制器接口Controller Controller接口是所有控制器接口的父类,所有Spring 框架提供的控制器,以及所有用户自定义的控制器 都得实现这个接口。 23.2.3 表单控制器 SimpleFormController SimpleFormController可以自动将用户从表单获取的 参数存入一个JavaBean的实例中,这样就不用逐一 调用request.getAttribute()方法去获取。 23.3 Spring MVC视图 Spring MVC框架主要以控制器和视图为核心,业务 控制器调用模型层完成请求处理后,试图层负责把 处理完后的数据显示出来。Spring MVC的试图层有 其自己的特点,如下所述。 使用ModelAndView类用来存储处理完后的结果数据 ,以及显示该数据的视图。 支持多种视图层技术,如JSP/Servlet、Jstl、Velocity 等,通过配置相应的视图解析器来实现。 23.3.1 模型视图类ModelAndView 从名字上看ModelAndView中的Model代表模型, View代表视图,这个名字就很好地解释了该类的作 用。业务处理器调用模型层处理完用户请求后,把 结果数据存储在该类的model属性中,把要返回的视 图信息存储在该类的view属性中,然后让该 ModelAndView返回该Spring MVC框架。框架通过调 用配置文件中定义的视图解析器,对该对象进行解 析,最后把结果数据显示在指定的页面上。 23.3.2 支持不同的视图 Spring MVC支持不同的视图技术,如JSP/Servlet、 Jstl、Velocity等。每种视图技术对应一个 XXXView.java类,它们都要实现View接口。例如, JSP/Servlet技术对应的类是InternalResourceView.java ;Jstl技术对应的类是JstlView.java;Velocity技术对 应的类是VelocityView.java。 23.4 使用拦截器 和Struts 2一样,Spring MVC也可以使用拦截器对请求进 行拦截处理,用户可以自定义拦截器来实现特定的功能 ,自定义的拦截器必须实现HandlerInterceptor接口。 下面对代码中的三个方法进行解释。 preHandle():这个方法在业务处理器处理请求之前被调用 ,在该方法中对用户请求request进行处理。如果程序员 决定该拦截器对请求进行拦截处理后还要调用其他的拦 截器,或者是业务处理器去进行处理,则返回true;如果 程序员决定不需要再调用其他的组件去处理请求,则返 回false。 postHandle():这个方法在业务处理器处理完请求后,但 是DispatcherServlet向客户端返回请求前被调用,在该方 法中对用户请求request进行处理。 afterCompletion():这个方法在DispatcherServlet完全处理 完请求后被调用,可以在该方法中进行一些资源清理的 操作。 23.5 数 据 验 证 在Spring MVC框架中,同样可以对表单数据进行验证,把错误信 息返回页面,提示用户重新输入。Spring MVC框架提供了 Validator接口,用户通过实现该接口来对数据进行研制,Validator 的代码如下: 01package org.springframework.validation; 02public interface Validator 03boolean supports(Class clazz); 04void validate(Object obj, Errors errors); 05 上面代码有两个方法,如下所述。 supports:用来判断参数clazz是否是要验证的Class类。 validate:用来对参数obj进行研制,并把错误信息存入errors对象。 23.6 Spring和Struts 2整合 Spring 和Struts 2都是应用非常广泛的J2EE应用程序 框架,Struts 2主要注重的是将视图层和控制层分开 ,但是不涉及对模型层的优化设计;而Spring除了实 现Struts 2的MVC功能外,还可以利用其控制反转的 思想实现对模型层的优化,从更深层次去降低应用 程序各个组件的耦合程度。本节将结合实例讲解如 何实现Spring框架和Struts 2框架的集成使用。 23.6.1 整合原理 Struts 2在发布的时候在其插件包struts-2.1.2lib中有 Struts 2-spring-plugin-2.1.2.jar,正是它实现了Struts 2 和Spring的整合。这个插件覆盖了Struts 2的 ObjectFactory,所以在Struts 2创建一个对象的时候, 例如Action类,它会先到Struts 2的配置文件去寻找类 的名字,然后转到Spring配置文件中去查找名字找到 该类。 23.6.2 整合步骤 Spring和Struts 2的整合其实很简单,下面是整合步 骤。 (1)复制jar文件。 (2)配置struts.objectFactory属性。 (3)配置Spring监听器。 (4)编写Spring配置文件。 (5)编写Struts 2配置文件。 23.7 一个Spring+Struts 2的开发实 例 下面通过一个实例来讲解如何实现Spring和Struts 2的 集成使用。 23.8 小 结 本章结
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 摇臂钻工基础知识培训
- 青海省海西州2024-2025学年七年级下学期期末语文试题(解析版)
- 摄影基本知识培训课件课程
- 山大电工技术试题及答案
- 2025餐厅员工聘用合同
- 2025电子厂临时员工劳动合同
- 材料科学领域物理专业面试题及经验分享
- 2025小区工作人员劳动合同模板
- 国企、民企行业新面试题
- 金融科技行业面试题库金融科技前沿动态
- 小学生必背古诗75首(注音版)
- 1输变电工程施工质量验收统一表式(线路工程)
- 学校安全“日管控、周排查、月总结”工作制度
- 机械原理课程设计15吨压片机设计
- 2023年五四青年节演讲比赛PPT担负青年使命弘扬五四精神PPT课件(带内容)
- 网络设备巡检报告
- 2023年义务教育音乐2022版新课程标准考试测试题及答案
- GB/T 4513.7-2017不定形耐火材料第7部分:预制件的测定
- 铁路职工政治理论应知应会题库
- 服装购销合同范本服装购销合同
- 科室随访系统-功能清单-DC20180129
评论
0/150
提交评论