最新struts应用技术深入(2(共24张ppt课件).pptx

上传人:豆**** 文档编号:27188587 上传时间:2022-07-23 格式:PPTX 页数:24 大小:4.62MB
返回 下载 相关 举报
最新struts应用技术深入(2(共24张ppt课件).pptx_第1页
第1页 / 共24页
最新struts应用技术深入(2(共24张ppt课件).pptx_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《最新struts应用技术深入(2(共24张ppt课件).pptx》由会员分享,可在线阅读,更多相关《最新struts应用技术深入(2(共24张ppt课件).pptx(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、在本讲您能了解如下知识点在本讲您能了解如下知识点q扩展扩展StrutsStruts以开发以开发StrutsStruts的插件的插件q多个表单对应一个多个表单对应一个ActionFormActionForm类类 qDynaActionFormDynaActionForm类技术类技术q对对DynaActionFormDynaActionForm类进行定制类进行定制q如何处理包含日期类型表单如何处理包含日期类型表单qStrutsStruts中的异常处理机制中的异常处理机制(jzh)(jzh)qDispatchActionDispatchAction类的使用类的使用StrustStrust应用应用(y

2、ngyng)(yngyng)技术深入(技术深入(2 2) 第一页,共二十四页。1 1、扩展、扩展(kuzhn)(kuzhn)StrutsStruts系统系统 (1 1)StrutsStruts的可扩展性的可扩展性由于在实际应用中,一定会有一些特定的应用需求是框架的设计由于在实际应用中,一定会有一些特定的应用需求是框架的设计者们无法预见到的,因此框架的设计者则应该允许框架使用者对框架者们无法预见到的,因此框架的设计者则应该允许框架使用者对框架进行扩展进行扩展(2 2)扩展)扩展StrutsStruts系统系统(xtng)(xtng)的几种方式的几种方式qPlugInPlugIn技术:如果我们想在

3、技术:如果我们想在WebWeb应用启动或终止的时候做一些应用启动或终止的时候做一些业务逻辑的话,那就创建我们自己的业务逻辑的话,那就创建我们自己的PlugInPlugIn类。类。q继承继承RequestProcessorRequestProcessor类类可以实现对可以实现对请求进行请求进行验证验证(ynzhng)(ynzhng),从而可以从而可以代替代替FilterFilter的的功能功能第二页,共二十四页。p 继承继承(jchng)(jchng)ActionServletActionServlet类类2 2、开发、开发(kif)(kif)StrutsStruts的插件实现扩展的插件实现扩展

4、StrutsStruts(1 1)StrutsStruts插件插件 Struts Struts提供了一个提供了一个PlugInPlugIn接口,利用用它来创建在接口,利用用它来创建在WebWeb应用启应用启动时就需要的初始化定制动时就需要的初始化定制(dn zh)(dn zh)服务。服务。(2 2)应用的场合)应用的场合 当希望所扩展的功能能够与当希望所扩展的功能能够与StrutsStruts系统平台融合在一起,并系统平台融合在一起,并且在容器启动时就希望加载该扩展的组件且在容器启动时就希望加载该扩展的组件可以实现对请求进行可以实现对请求进行一般的转换,从一般的转换,从而也可以代替而也可以代替

5、FilterFilter的功能的功能第三页,共二十四页。(3 3)StrutsStruts插件的类型插件的类型(lixng)(lixng)q第三方的第三方的StrutsStruts插件插件q用户用户(yngh)(yngh)自定义的自定义的 Struts Struts插件插件第四页,共二十四页。(4 4)PluginPlugin接口说明接口说明(shumng)(shumng)-init() -init() 和和destory()destory()方法方法 (5 5)插件的生命周期方法的执行过程)插件的生命周期方法的执行过程q在在strutsstruts应用程序启动的时候应用程序启动的时候(sh

6、hou)(sh hou),ActionServletActionServlet通过通过init()init()方方法实例每一个法实例每一个PluginPlugin。q可以在可以在init()init()方法中放一些需要初始化的东西。方法中放一些需要初始化的东西。q对于对于destory()destory()方法它将在你的应用程序结束时调用方法它将在你的应用程序结束时调用第五页,共二十四页。(6 6)编程)编程StrutsStruts插件的插件的JavaJava类步骤类步骤(bzhu)(bzhu)q编程编程JavaJava类类-请见文档示例请见文档示例q在在struts-config.xmlst

7、ruts-config.xml中部署该中部署该pluginplugin插件插件 set-property property=INF/userdatabase.xml(7 7)标签中的标签中的子标签子标签q通过使用通过使用StrutsStruts的另外一个特征,即的另外一个特征,即set-propertyset-property元素,你可以元素,你可以将特殊的信息传递将特殊的信息传递(chund)(chund)到到plug-inplug-in中。中。q这种能力增强了这些类的灵活性这种能力增强了这些类的灵活性(8 8)PluginPlugin插件的应用实例插件的应用实例(shl)(shl):在在W

8、ebWeb应用中的公共参数的问题,应用中的公共参数的问题,详细的实现细节详细的实现细节请见文档。请见文档。第六页,共二十四页。2 2、创建和多个、创建和多个(du )(du )表单相对应的表单相对应的ActionForm ActionForm (2 2)目的)目的 减少减少ActionForm ActionForm 组件的个数,从而避免重复单调地编程;因为多个组件的个数,从而避免重复单调地编程;因为多个表单可能会有重复的数据项目表单可能会有重复的数据项目-如在用户登录表单和注册表单中都包如在用户登录表单和注册表单中都包含有含有“用户名称用户名称”和和“密码项目密码项目”。(3 3)所应该解决)

9、所应该解决(jiju)(jiju)的问题的问题如何在如何在ActionFormActionForm组件中识别当前是那个表单在产生提交,组件中识别当前是那个表单在产生提交,从而对与该表单相对应的数据项目进行从而对与该表单相对应的数据项目进行validate()validate()操作。操作。(1 1)页面中的)页面中的FormForm表单与表单与ActionFormActionForm之间的对应关系之间的对应关系q一般可以为每个表单提供一个一般可以为每个表单提供一个ActionFormActionForm(一对一)(一对一)q当然也可以为多个当然也可以为多个(du )(du )不同的表单提供一个

10、共同的不同的表单提供一个共同的ActionFormActionForm组件组件(一对多)(一对多)第七页,共二十四页。(4 4)解决的方法)解决的方法(fngf)(fngf)通过在每个表单中放入一个通过在每个表单中放入一个hiddenhidden字段来标示字段来标示(5 5)该方法的基本原理)该方法的基本原理p在在htmlhtml的表单中提供的表单中提供(tgng)(tgng)了了控件,利用它控件,利用它进行传递数据;进行传递数据;p因为,每当表单进行提交时,其数据值也会传递到服务器端。这样因为,每当表单进行提交时,其数据值也会传递到服务器端。这样我们只需要识别该字段得我们只需要识别该字段得值

11、,也就了解了是那个表单提交值,也就了解了是那个表单提交您知道您知道(zh do)(zh do)该表单该表单域有什域有什么特点么特点吗?吗?第八页,共二十四页。3 3、DynaActionFormDynaActionForm类(虚拟类(虚拟(xn)(xn)ActionFormActionForm技术)技术)(1 1)ActionFormActionForm类的主要作用类的主要作用q利用利用ActionFormActionForm类来包装类来包装HTMLHTML表单中的数据,从而以面向对表单中的数据,从而以面向对象的方式象的方式(fngsh)(fngsh)进行表单的数据操作进行表单的数据操作q同时

12、还可以在同时还可以在ActionFormActionForm类中通过重写类中通过重写resetreset和和validatevalidate方法以实方法以实现对表示层表单中的用户输入的数据进行复位和验证现对表示层表单中的用户输入的数据进行复位和验证(2 2)ActionFormActionForm类及其所存在的问题类及其所存在的问题q对于大型的对于大型的Struts WebStruts Web应用项目应用项目(xingm)(xingm),由于有大量的表单存,由于有大量的表单存在,从而需要针对每一个表单设计出对应的在,从而需要针对每一个表单设计出对应的ActionFormActionForm类组

13、件类组件-最终会产生大量的表单对象!最终会产生大量的表单对象!q另外它与表单相绑定,因此如果在另外它与表单相绑定,因此如果在HTMLHTML表单中的某一字段发生变表单中的某一字段发生变化,则必须修改并重新编译对应的化,则必须修改并重新编译对应的ActionFormActionForm组件类。组件类。第九页,共二十四页。(3 3)解决的方法)解决的方法 为了减少编程实现所带来的不灵活性和减少表单与为了减少编程实现所带来的不灵活性和减少表单与ActionFormActionForm组件之间的藕合性,组件之间的藕合性,StrutsStruts系统系统(xtng)(xtng)中提供了中提供了DynaA

14、ctionFormDynaActionForm类技术类技术(4 4)DynaActionFormDynaActionForm类的基本原理类的基本原理qDynaActionFormDynaActionForm类(它是类(它是ActionFormActionForm类的子类),因此保留类的子类),因此保留了原来的了原来的ActionFormActionForm类的所有功能类的所有功能q创建的方法创建的方法 在在struts-config.xmlstruts-config.xml配置文件中针对每一个配置文件中针对每一个HTMLHTML表单以表单以配置的方式配置的方式(fngsh)(fngsh)配置出

15、所需的虚拟配置出所需的虚拟ActionFormActionForm组件组件第十页,共二十四页。(5 5)配置实现虚拟)配置实现虚拟ActionFormActionForm的主要的主要(zhyo)(zhyo)步骤步骤q配置一个配置一个标签元素并将其标签元素并将其typetype属性数值为属性数值为DynaActionFormDynaActionForm类或者它的某个子类类或者它的某个子类q在在标签元素内针对标签元素内针对HTMLHTML表单中的每个字段提供一个表单中的每个字段提供一个标签元素以声明该字段的名称和数据类型标签元素以声明该字段的名称和数据类型q通过在通过在标签中提供标签中提供init

16、ialinitial属性来为每个字段提属性来为每个字段提供初始值供初始值第十一页,共二十四页。(6 6)在)在ActionAction类中获得类中获得(hud)(hud)属性字段的值属性字段的值q与与ActionFormActionForm的访问方法不同点的访问方法不同点如果使用如果使用DynaActionFormDynaActionForm,系统将各个属性成员保存在一个,系统将各个属性成员保存在一个HashMapHashMap类对象中类对象中因此应该采用因此应该采用get(“name”)get(“name”)和和set(“name”)set(“name”)方法来访问成员属性方法来访问成员属性

17、(其中(其中(qzhng)(qzhng)参数参数namename是要访问的是要访问的HTMLHTML表单中的属性名)表单中的属性名)q示例示例(shl)(shl)代代码码第十二页,共二十四页。(1 1)技术背景)技术背景q采用了采用了DynaActionFormDynaActionForm类后,由于不再存在了具体的组件类代码,类后,由于不再存在了具体的组件类代码,因此也无法再提供因此也无法再提供reset()reset()和和validate()validate()方法方法q从而也丧失从而也丧失(sngsh)(sngsh)了原来在了原来在ActionFormActionForm中的对表单中的数

18、据提供的验中的对表单中的数据提供的验证手段证手段(2 2)解决的方法)解决的方法为了既能够减少对为了既能够减少对ActionFormActionForm组件的编程,同时也还能够继组件的编程,同时也还能够继续提供数据验证,可以采用对续提供数据验证,可以采用对DynaActionFormDynaActionForm类进行定制类进行定制4 4、对、对DynaActionFormDynaActionForm类进行类进行(jnxng)(jnxng)定制定制第十三页,共二十四页。(4 4)代码)代码(di m)(di m)示例示例(3 3)实现)实现(shxin)(shxin)的步骤的步骤q编程实现自己的

19、编程实现自己的DynaActionFormDynaActionForm类并重写类并重写resetreset方法方法q同时也重写同时也重写validate()validate()方法以编程实现数据验证方法以编程实现数据验证q在在struts-config.xmlstruts-config.xml文件中的文件中的标签中配置指定自己的标签中配置指定自己的DynaActionFormDynaActionForm类类(5 5)在)在struts-struts-config.xmlconfig.xml文文件中的件中的form-bean标签标签(bioqin)(bioqin)中配置中配置指定自己的指定自己的

20、DynaActionFormDynaActionForm类类第十四页,共二十四页。6 6、DispatchActionDispatchAction类的使用类的使用(1 1)其作用)其作用主要是用于分发的主要是用于分发的ActionAction;其主要的好处是把一些功能类似;其主要的好处是把一些功能类似(li s)(li s)的的ActionAction放到一个放到一个ActionAction类中,从而减少类中,从而减少ActionAction类的个数。类的个数。(2 2)org.apache.struts.actions.DispatchActionorg.apache.struts.acti

21、ons.DispatchAction类类注意注意(zh (zh y)y)它它也是从也是从ActionAction类继承类继承第十五页,共二十四页。(3 3)实现的方法实现的方法(fngf)(fngf)(参考(参考UserLoginUserLogin)q设计一个表示层页面设计一个表示层页面p设计完成设计完成(wn chng)(wn chng)上面的两个功能的上面的两个功能的DispatchActionDispatchAction类类第十六页,共二十四页。p在在struts-config.xmlstruts-config.xml文件中进行文件中进行(jnxng)(jnxng)DispatchAct

22、ionDispatchAction类的类的配置配置p执行执行(zhxng)(zhxng)该该WebWeb应用应用注意注意methodNamemethodName与前面的与前面的URLURL中的参数名称中的参数名称(mngchng)(mngchng)相相同同第十七页,共二十四页。7 7、StrutsStruts中的异常处理中的异常处理(chl)(chl)机制和技术机制和技术 (1 1)JavaJava语言中的异常处理语言中的异常处理q系统级异常系统级异常-与应用的逻辑无关,需要由系统平台提供商的开发与应用的逻辑无关,需要由系统平台提供商的开发者来处理该类异常者来处理该类异常q应用级异常应用级异常

23、-由于用户违背由于用户违背(wibi)(wibi)了商业业务逻辑而导致的错了商业业务逻辑而导致的错误,这种错误一般不是致命的误,这种错误一般不是致命的(2 2)异常处理异常处理(chl)(chl)的基本原的基本原则则q要注意不要要注意不要让用户看到让用户看到原始的原始的JavaJava异常信息异常信息对此原则在对此原则在前面的前面的WebWeb编程编程技术时技术时也已经也已经提及!提及!第十八页,共二十四页。q 可以将原始可以将原始(yunsh)(yunsh)的的JavaJava异常信息记录到日志文件中异常信息记录到日志文件中q在控制层或者在控制层或者(huzh)(huzh)表示层的组件中捕获

24、用户自定义的异常表示层的组件中捕获用户自定义的异常您觉得这样的方式您觉得这样的方式(fngsh)(fngsh)有什么问有什么问题吗?题吗?第十九页,共二十四页。(3 3)在)在StrutsStruts的的WebWeb系统中异常处理的方式系统中异常处理的方式q编程方式进行异常处理编程方式进行异常处理对于异常的处理,主要是采用对于异常的处理,主要是采用try/catchtry/catch等等捕获异等等捕获异常,然后定制常,然后定制(dn zh)(dn zh)个性化的比较详细的错误信息放个性化的比较详细的错误信息放进进ActionErrorActionError中,然后在具体的返回页面中把这些中,然

25、后在具体的返回页面中把这些错误信息反馈给用户(包括开发员)。错误信息反馈给用户(包括开发员)。不可不可避避免免地地会会产产生生硬硬编编码码(bi(bin n m)m)的的后后果,果,增增强强了了与与错错误误信信息息的的藕藕合合度度p以配置的方式进行异常处理以配置的方式进行异常处理要定义应用程序的逻辑流程,成熟的经验是推荐在代码之外,要定义应用程序的逻辑流程,成熟的经验是推荐在代码之外,用配置的方法来实现,而不是硬编码地方式写死在程序代码中用配置的方法来实现,而不是硬编码地方式写死在程序代码中的的此种方法在对错误的信息、跳转的目标地址此种方法在对错误的信息、跳转的目标地址(dzh)(dzh)和错

26、误处理和错误处理的页面等方面都具有较好的灵活度的页面等方面都具有较好的灵活度第二十页,共二十四页。(4 4)创建用户的自己)创建用户的自己(zj)(zj)异常处理类异常处理类q目的:定制个性化的比较详细的错误信息目的:定制个性化的比较详细的错误信息(5 5)与异常设置)与异常设置(shzh)(shzh)相关的标签相关的标签-全局异常的设置全局异常的设置(shzh)(shzh)对所有的对所有的ActionAction都可以适用都可以适用p示例示例(shl)(shl)代码:请见代码:请见文档文档第二十一页,共二十四页。(6 6)与异常设置相关)与异常设置相关(xinggun)(xinggun)的标

27、签的标签-局部异常的设置局部异常的设置 只对本只对本ActionAction适用适用指定错误提示文字指定错误提示文字的资源字符串文的资源字符串文件中的件中的keykey名称名称第二十二页,共二十四页。1 1、子曰:、子曰:“学而不思则罔,思而不学则殆。学而不思则罔,思而不学则殆。” “学而时习之学而时习之” 2 2、子曰:子曰:“知之者不如知之者不如(br)(br)好之者好之者, ,好之者不如好之者不如(br)(br)乐之者乐之者”3 3、子曰:、子曰:“三人行三人行, ,必有我师焉必有我师焉”4 4、子曰:子曰:“我非生而知之我非生而知之(shng r zh zh)(shng r zh zh

28、)者者, ,好古好古, ,敏以求之敏以求之者也者也”5 5、师者:师者:“传道传道(chundo)(chundo)、授业和、授业和解惑解惑”努力学习以实现自己的人生理想和目标努力学习以实现自己的人生理想和目标第二十三页,共二十四页。内容(nirng)总结在本讲您能了解如下知识点。(5)插件的生命周期方法的执行过程。(8)Plugin插件的应用实例:在Web应用中的公共参数的问题,详细的实现细节请见文档。其主要的好处是把一些功能类似的Action放到一个Action类中,从而减少Action类的个数。设计完成上面的两个功能的DispatchAction类。此种方法在对错误的信息(xnx)、跳转的目标地址和错误处理的页面等方面都具有较好的灵活度第二十四页,共二十四页。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > pptx模板 > 企业培训

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁