Struts1框架知识和实战讲解优质PPT.ppt
《Struts1框架知识和实战讲解优质PPT.ppt》由会员分享,可在线阅读,更多相关《Struts1框架知识和实战讲解优质PPT.ppt(39页珍藏版)》请在冰豆网上搜索。
![Struts1框架知识和实战讲解优质PPT.ppt](https://file1.bdocx.com/fileroot1/2022-10/7/fd9ce08a-a25d-49a6-a46a-3cedc628d5a9/fd9ce08a-a25d-49a6-a46a-3cedc628d5a91.gif)
由实现业务逻辑的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-validator.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组件:
充当每个子应用模块的请求处理器;
(3)Action组件:
负责处理一项具体的业务。
2、ActionServlet
(1)Struts的启动通常从加载ActionServlet开始(如果没有其他Servlet的加载优先级比它高)。
(2)ActionServlet在应用一加载时即会被实例化并调用其init方法。
init方法所做的主要工作有:
加载struts配置文件,并创建用于封装配置信息的ModuleConfig对象;
加载资源文件,并创建用于封装资源文件的MessageResources对象;
如果有相应配置的话,init方法还将初始化数据源和PlugIn。
注意:
如果web.xml有多模块配置,将创建多个ModuleConfig对象和MessageResources对象分别用于封装各个模块的struts配置文件和资源件。
3.Struts1核心控制流程,config/WEB-INF/struts-config.xmlconfig/ma/WEB-INF/ma/struts-config.xml,3.Struts1核心控制流程,(3)ActionServlet的process()方法的主要工作有:
根据请求信息获知所请求的模块名称,从ServletContext中获得与请求模块对应的的ModuleConfig对象,并存储到request中。
根据模块信息获得相应的RequestProcessor对象,一个模块对应一个RequestProcessor对象,RequestProcessor对象将关联与所属模块对应的ModuleConfig对象。
调用RequestProcessor对象的process方法,将request和response作为参数传递给它。
3.Struts1核心控制流程,3、RequestProcessor类
(1)Struts框架只允许应用中存在一个ActionServlet类,但每个应用程序模块都有各自的RequestProcessor类实例。
(2)RequestProcessor对象的process方法的主要工作:
调用自己的processPreprocess(request,response)方法,该方法不进行任何操作,用于子类重写扩展其功能。
获得与请求地址所匹配的ActionMapping对象,ActionMapping对象用于封装一个特定action的配置信息。
根据ActionMapping中的配置信息获得ActionForm对象(该对象将缓存到request或session中),并将表单数据填充到ActionForm中,然后根据ActionMapping的配置决定是否验证ActionForm,如果验证,将调用ActionForm的validate方法,若其返回的ActionErros对象中包含ActionMessage对象则表示验证失败,将转向action配置信息input属性所指示的地址。
3.Struts1核心控制流程,如果ActionForm无需验证或验证通过将创建并缓存与请求地址匹配的Action对象,将ActionMapping对象、ActionForm对象、request和response作为参数调用其方法。
根据Action对象的方法返回的ActionForward对象,将请求转发或重定向到该ActionForward所封装的地址。
3.Struts1核心控制流程,4、Action类
(1)Action类是用户请求和业务逻辑之间的桥梁
(2)ActionServlet对所有的请求作集中的统一处理,每个不同的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=”是一个附加的属性,对于不同的Action可能有不同的意义,4.Struts1ActionForm,1、为什么使用form?
(1)用户提交的数据封装成对象;
(2)表单数据的缓存;
(3)表单信息验证(服务器端验证).2、ActionForm的生命周期
(1)ActionFormBean有两种存在范围:
request和session1)如果存在于request范围,它仅在当前的请求/响应生命周期中有效;
2)如果存在于session范围,同一个ActionForm实例在整个Http会话中有效。
在struts配置文件中,元素的scope属性用来设置ActionForm的范围,默认值为session。
4.Struts1ActionForm,5.Struts1异常处理,1、处理流程:
(1)ActionthrowException
(2)ActionServletExceptionHandler(3)ExceptionHandler处理ExceptionExceptionHandler会读配置文件ActionMessage-requestAttributeActionForward(4)ActionServletActionForward,5.Struts1异常处理,2、配置struts的异常处理全局的异常处理:
在exception标签中的key,也就是在出现异常时会封装在ActionErrors中,也就是可以在页面中使用。
ActionError(Stringkey,Objectvalue0),可以通过在构造ActionError时,指定不同的key值来对异常进行分类,并且在html:
error标签的自己构造ActionErrors并使用下面的方法发送voidsaveErrors(HttpServletRequestrequest,ActionErrorserrors)这个方法用以把封装了异常的ActionErrors的key存储到request中。
6.Struts1标签库,Struts提供了五个标签库,即:
HTML、Bean、Logic、Template和Nested。
HTML标签:
用来创建能够和Struts框架和其他相应的HTML标签交互的HTML输入表单;
Bean标签:
在访问JavaBeans及其属性,以及定义一个新的bean时使用;
Logic标签:
管理条件产生的输出和对象集产生的循环;
Template标签:
随着Tiles框架包的出现,此标记已开始减少使用;
Nested标签:
增强对其他的Struts标签的嵌套使用的能力。
6.Struts1标签库,标签的公共特征:
styleId:
命名自定义标签创建时的脚本变量名。
name:
指出关键字值,在该关键字下可以找到一个存在的bean。
如果给出了scope属性,则仅仅在scope中查找。
否则,根据标准的顺序在各种scope中查找。
标准顺序为(page,request,session,application)。
property:
指出bean中的某个属性,可以在其中检索值。
如果没有标明,则使用对象本身的值。
标签、标签、标签、标签、标签、标签、标签都有一个property属性,最后会被转换成HTML中的name属性。
scope:
定义了Bean在哪个范围(page,request,session,orapplication)中被查找。
如果没有标明按顺序查找。
6.Struts1标签库,1.HTML标签a)用于生成基本的HTML元素的标签标签用于生成HTML的元素b)用于显示错误或正常消息的标签:
用于显示错误消息:
用于显示正常消息,6.Struts1标签库,c)用于生成HTML表单的标签数据输入标签,提交按钮标签,6.Struts1标签库,2.bean标签a)用于访问HTTP请求信息或JSP隐含对象b)用于访问Web应用资源:
用于显示ResourceBundle中的消息。
用来从指定的locale中取回国际化的消息并输出。
这个过程可以传递5个以内的参数。
Message标签有两种指定messagekey的方式,一是通过key属性直接指定;
二是通过name和property属性间接的指定,其中messagekey是在messageresources文件中定义的。
如:
6.Struts1标签库,c)用于定义或输出JavaBean的Bean标签bean:
write(输出)d)name,在scope范围找到变量等价于e)filterfilter(true,false),默认是true,true按原样输出,false格式化输出。
f)propertyg)format,6.Struts1标签库,3.logic标签a)进行比较运算的Logic标签b)进行字符串匹配的Logic标签c)判断指定内容是否存在的Logic标签和和和,6.Struts1标签库,d)进行循环遍历的Logic标签e)进行请求转发或重定向的Logic标签4.