Struts1框架知识和实战讲解_第1页
Struts1框架知识和实战讲解_第2页
Struts1框架知识和实战讲解_第3页
Struts1框架知识和实战讲解_第4页
Struts1框架知识和实战讲解_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Struts1框架知识和实战讲解,单玉玲 2013年7月26日,海外事业一部 单玉玲 经历项目: IYOYO投票系统 宏赡FTS系统 电子病历系统 中外运UC工作流系统 智能养老系统 长城租赁项目,该门课程教学方式 (0.5天) PPT+实例+练习+随堂考试,单玉玲 海外事业一部 项目经理 shan_yling 经历项目: IYOYO投票系统 宏赡FTS系统 电子病历系统 中外运UC工作流系统 智能养老系统 长城租赁项目,目录,1. Struts1 概述,目录,5. Struts1 异常处理,7. 课程总结,8. 作业,1. Struts1 概述,Struts是Apache软件基金会(ASF)

2、赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用JavaServlet/JSP技术,实现了基于Java EEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。 Struts是开源软件,使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,Struts是一个不错的选择。,1. Struts1 概述,Struts实现MVC设计模式 (1)Struts实质上就是在JSPModel2的基础上实现一个MVC框架。 模型

3、:由实现业务逻辑的JavaBean或EJB组件构成 ; 控制器:由ActionServlet和Action来实现 ; 视图:由一组JSP文件构成 。,1. Struts1 概述,(2)实现的MVC框架:,2. Struts1 构成,1、Struts运行需要的jar包: (1)commons-digester.jar 用于解析配置文件 (2)commons-fileupload.jar 用于实现文件上传(进行了进一步的封装) (3)commons-logging.jar 用于日志处理 (4)commons-beanutils.jar 用于POJO的属性赋值、拷贝等 (5)commons-vali

4、dator.jar 用于表单验证,2. Struts1 构成,2、 struts标记库文件(tld): (1)struts-bean.tld (2)struts-html.tld (3)struts-logic.tld (4)struts-nested.tld (5)struts-tiles.tld,2. Struts1 构成,3、配置文件struts-config.xml,2. Struts1 构成,3. Struts1 核心控制流程,1、主要组件: (1)ActionServlet组件:充当Struts框架的中央控制器 ; (2)RequestProcessor组件:充当每个子应用模块的请

5、求处理器 ; (3)Action组件:负责处理一项具体的业务。 2、ActionServlet (1)Struts的启动通常从加载ActionServlet开始(如果没有其他Servlet的加载优先级比它高)。 (2)ActionServlet在应用一加载时即会被实例化并调用其init方法。 init方法所做的主要工作有: 加载struts配置文件,并创建用于封装配置信息的ModuleConfig对象; 加载资源文件,并创建用于封装资源文件的MessageResources对象; 如果有相应配置的话,init方法还将初始化数据源和PlugIn。 注意: 如果web.xml有多模块配置,将创建多

6、个ModuleConfig对象和 MessageResources对象分别用于封装各个模块的struts配置文件和资源件。,3. Struts1 核心控制流程, config /WEB-INF/struts-config.xml config/ma /WEB-INF/ma/struts-config.xml ,3. Struts1 核心控制流程,(3)ActionServlet的process()方法的主要工作有: 根据请求信息获知所请求的模块名称,从ServletContext中获得与请求模块对应的的ModuleConfig对象,并存储到request中。 根据模块信息获得相应的Reques

7、tProcessor对象,一个模块对应一个RequestProcessor对象,RequestProcessor对象将关联与所属模块对应的ModuleConfig对象。 调用RequestProcessor对象的process方法,将request和response作为参数传递给它。,3. Struts1 核心控制流程,3、RequestProcessor类 (1)Struts框架只允许应用中存在一个ActionServlet类,但每个应用程序模块都有 各自的RequestProcessor类实例。 (2)RequestProcessor对象的process方法的主要工作: 调用自己的 pro

8、cessPreprocess(request, response)方法,该方法不进行任何操作,用于 子类重写扩展其功能。 获得与请求地址所匹配的ActionMapping对象,ActionMapping对象用于封装一个特定action的配置信息。 根据ActionMapping中的配置信息获得ActionForm对象(该对象将缓存到request 或session中),并将表单数据填充到ActionForm中,然后根据ActionMapping的配置决 定是否验证ActionForm,如果验证,将调用ActionForm的validate方法,若其返回的 ActionErros对象中包含Act

9、ionMessage对象则表示验证失败,将转向action配置信息input 属性所指示的地址。,3. Struts1 核心控制流程,如果ActionForm无需验证或验证通过将创建并缓存与请求地址匹配的Action对象, 将ActionMapping对象、ActionForm对象、request和response作为参数调用其方法。 根据Action对象的方法返回的ActionForward对象,将请求转发或重定向到该ActionForward所封装的地址。,3. Struts1 核心控制流程,4、Action类 (1)Action类是用户请求和业务逻辑之间的桥梁 (2)ActionServ

10、let对所有的请求作集中的统一处理,每个不同的Action类具体处理不同的请求。,3. Struts1 核心控制流程,(4)struts-config.xml: attribute=” 缓存ActionForm对象的名称(key),不写key就是name的值”,3. Struts1 核心控制流程,scope=” 缓存ActionForm的范围(request|session)默认是session” validate=”是否要验证true|false” input=” 和validate=”true” 联用,表示验证失败后,FC把请求转向的地址 parameter=” 是一个附加的属性,对于不同

11、的Action可能有不同的意义 ,4. Struts1 Action Form,1、为什么使用form? (1)用户提交的数据封装成对象 ; (2)表单数据的缓存; (3)表单信息验证(服务器端验证) . 2、ActionForm的生命周期 (1)ActionForm Bean有两种存在范围:request和session 1)如果存在于request范围,它仅在当前的请求/响应生命周期中有效 ; 2)如果存在于session范围,同一个ActionForm实例在整个Http会话中有效。 注意:在struts配置文件中,元素的scope属性用来设置ActionForm的范围, 默认值为sess

12、ion。,4. Struts1 Action Form,5.Struts1 异常处理,1、处理流程: (1)Action throw Exception (2)Action Servlet ExceptionHandler (3)ExceptionHandler 处理Exception ExceptionHandler 会读配置文件 ActionMessage - request Attribute ActionForward (4)ActionServlet ActionForward,5.Struts1 异常处理,2、配置struts 的异常处理 全局的异常处理: 在exception 标

13、签中的key,也就是在出现异常时会封装在ActionErrors 中,也就是可以在页面中使用。 ActionError(String key, Object value0),可以通过在构造ActionError 时,指定不同的key 值来对异常进行分类,并且在html:error 标签的自己构造ActionErrors 并使用下面的方法发送void saveErrors(HttpServletRequest request,ActionErrors errors) 这个方法用以把封装了异常的ActionErrors 的key 存储到request 中。,6.Struts1 标签库,Struts

14、提供了五个标签库,即:HTML、Bean、Logic、Template和Nested。 HTML标签 : 用来创建能够和Struts 框架和其他相应的HTML 标签交互的 HTML 输入表单; Bean标签:在访问JavaBeans 及其属性,以及定义一个新的bean 时使 用; Logic标签:管理条件产生的输出和对象集产生的循环; Template标签:随着Tiles框架包的出现,此标记已开始减少使用; Nested标签:增强对其他的Struts 标签的嵌套使用的能力。,6.Struts1 标签库,标签的公共特征: styleId:命名自定义标签创建时的脚本变量名。 name :指出关键字

15、值,在该关键字下可以找到一个存在的bean 。如果给出了scope属性,则仅仅在scope中查找。否则,根据标准的顺序在各种scope中查找。标准顺序为 (page,request, session, application)。 property :指出bean 中的某个属性,可以在其中检索值。如果没有标明,则使用对象本身的值。标签、标签、标签、标签、标签、标签、标签都有一个property属性,最后会被转换成HTML中的name属性。 scope :定义了Bean在哪个范围(page, request, session, or application)中被查找。如果没有标明按顺序查找。,6.

16、Struts1 标签库,1.HTML标签 a)用于生成基本的HTML元素的标签 标签用于生成HTML的元素 b)用于显示错误或正常消息的标签 :用于显示错误消息 :用于显示正常消息,6.Struts1 标签库,c)用于生成HTML表单的标签 数据输入标签 ,提交按钮标签 ,6.Struts1 标签库,2.bean 标签 a)用于访问HTTP请求信息或JSP隐含对象 b)用于访问Web应用资源 :用于显示ResourceBundle 中的消息。用来从指定的locale中取回国际化的消息并输出。这个过程可以传递5个以内的参数。Message标签有两种指定message key的方式,一是通过key

17、属性直接指定;二是通过name和property属性间接的指定,其中message key是在message resources文件中定义的。 如: ,6.Struts1 标签库,c)用于定义或输出JavaBean的Bean标签 bean:write(输出) d)name,在scope范围找到变量 等价于 e)filter filter(true,false),默认是true,true按原样输出,false格式化输出。 f)property g)format ,6.Struts1 标签库,3.logic标签 a)进行比较运算的Logic标签 b)进行字符串匹配的Logic标签 c)判断指定内容是否存在的Logic标签 和 和 和,6.Struts1 标签库,d)进行循环遍历的Logic标签 e)进行请求转发或重定向的Logic标签 4.Nested标签,用于表达JavaBean嵌套关系及特定的嵌套级别提供等 5.Tiles标签,需要结合Tiles框架,7.课程总结,重点:Struts1 核心控制流程、Struts1 标签库,需参考实例理解 难点:Struts1 核心控制流程 参考资料:Struts1标签库.doc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论