方法调用PPT学习课件_第1页
方法调用PPT学习课件_第2页
方法调用PPT学习课件_第3页
方法调用PPT学习课件_第4页
方法调用PPT学习课件_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、方法调用,本讲要点与教学目标,【教学要点】 1、动态方法调用 2、定义与使用逻辑Action 3、在Action中使用通配符,2,让Action处理多个请求,【问题的提出】 每个Action只处理一种特定业务,这种方式会导致Action过多且不易管理。在实际的应用开发中,存在着大量相似业务处理,它们要处理的信息是相似的(如:用户登录、用户注册、用户信息修改等都是对用户信息的处理),如果能将这些处理集中在一个Action中,可以使这些业务处理能够共享Web资源信息,同时也便于Action的管理。 Struts2框架允许一个Action内包含多个请求处理,其实现的方法有三种: 1. 动态方法调用(

2、DMI) 2. 定义逻辑Action 3. 使用通配符,3,动态方法调用(DMI),【动态方法调用】 DMI- Dynamic Method Invocation :允许一个Action中处理多个相关的业务,要实现DMI则需要注意以下三点: 1、Action定义,主要是业务方法的定义 2、Action请求,请求Action中特定的业务方法 3、struts.xml配置,设置框架允许动态方法调用,4,动态方法调用(DMI),【1、Action定义】 在Action中可以不用execute()方法处理业务,而使用自定义方法,其格式如下: public String methodName() thr

3、ows Exception . 说明:methodName是任意合法的方法名,在一个Action中可以定义多个这样的方法,以处理不同的业务,5,动态方法调用(DMI),【2、Action请求】,对Action请求时不仅包括Action的名称,还包含Action中指定的方法,格式如下: 或: 说明:Action名与方法名之间用“!”分隔,6,动态方法调用(DMI),【3、struts.xml配置】,在框架的配置文件struts.xml中,必须允许框架使用动态方法调用,通过如下配置项实现: 说明:以上配置缺省时为“true”,但从blank项目拷贝时,此项设置为false,因此要想使用DMI,要么

4、把false改为true,要么把此配置项删除,7,Action处理多个请求(登录/注册),【案例要求】 使用同一个Action完成用户登录和用户注册业务 【基本思路】 1、定义UserAction,Action中定义两个方法login和regist,分别用来处理登录和注册业务,使用基于模型驱动的方式获取请求参数。 2、定义登录页login.jsp,其form的action设置为user!login 3、定义注册页regist.jsp,其form的action设置为user!regist 4、分别定义登录成功log_succ.jsp和注册成功页reg_succ.jsp 5、struts.xml中

5、允许使用动态方法调用,8,Action处理多个请求(登录/注册),1、定义数据模型User,用于获取请求参数(略) 2、定义UserAction,实现ModelDriven、SessionAware接口(登录成功时把用户信息写到session中),9,Action处理多个请求(登录/注册),10,Action处理多个请求(登录/注册),用户登录login.jsp,11,Action处理多个请求(登录/注册),用户注册regist.jsp,12,Action处理多个请求(登录/注册),登录成功log_succ.jsp,13,Action处理多个请求(登录/注册),14,Action处理多个请求(

6、登录/注册),struts.xml配置, /log_succ.jsp /login.jsp /reg_succ.jsp /regist.jsp ,15,定义逻辑Action,【问题】虽然多个请求可以共用同一个Action类,但 1、在请求Action的指定方法时必须使用actionName!methodName的形式,个性化的东西往往给人带来麻烦,我们追求的是“通用性” 2、对于不同业务方法返回的字符串不能相同,如“log_succ”、“reg_succ” 【解决方案】定义逻辑Action,即针对一个Action类的每一个业务方法在struts.xml定义一个独立的Action,由于配置文件的

7、这种Action定义不对应一个独立的Action类,因此称为逻辑定义。,16,定义逻辑Action,【如何定义逻辑Action?】 1、struts.xml定义一组name不同、class相同的action,每个action对应一个业务方法 2、action定义时设置method属性,其值为Action类中对应的业务方法名,17,逻辑Action定义,1、仅修改上一个案例的struts.xml文件, /log_succ.jsp /login.jsp /reg_succ.jsp /regist.jsp ,18,逻辑Action定义,用户登录 ,用户注册 ,19,逻辑Action定义,【说明】 如

8、果使用逻辑Action定义,在Action类的不同业务方法中可以返回相同的值。,20,逻辑Action定义,配置文件可对应修改如下 :,21,在配置文件中使用通配符,【问题】 如果针对一个Action类定义多个逻辑Action,会使配置文件看起来很臃肿 【解决方法】 Struts2框架的配置文件中支持通配符的使用。 【使用通配符】 在的name属性中使用*作通配符,它可以匹配任意一个字符串,在元素的其它属性中,其内部的元素中都可以使用n与其呼应,其中n是表示匹配name中第几个*的一个整数 如果有一个请求匹配了“*”,则其后的n将被自动替换。,22,案例3:使用通配符,1、为了使用通配符,将上例中reg_succ.jsp的文件名改为regist_succ.jsp,将log_succ.jsp文件名改为login_succ.jsp 2、Action配置进行如下修改:, /1_succ.jsp /1.jsp ,23,案例3:使用通配符,通配符的匹配过程分析 1、请求action 2、首先在配置文件中找全名匹配的 3、如果未找到,则顺序查找包含“*”的action进行匹配 4、如果找到匹配的action,则将其后配置中的n用匹配的字符串进行自动替换。,24,使用通配符,【团队开发中“约定优于配置”原则】 约定项目名、Action类名、JSP文件名、变量名、方法名等等,约定做的好

温馨提示

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

评论

0/150

提交评论