RAD课件-第8章-Struts框架_第1页
RAD课件-第8章-Struts框架_第2页
RAD课件-第8章-Struts框架_第3页
RAD课件-第8章-Struts框架_第4页
RAD课件-第8章-Struts框架_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1J2EE应用开发实例精解(RAD+WAS)第8章Struts架构1J2EE应用开发实例精解(RAD+WAS)第8章Stru28.1Struts简介8.2Struts流程8.3Struts的核心API8.4RAD中构建基于Struts架构的Web应用程序内容提要28.1Struts简介内容提要3学习要点重点内容Struts架构的基本概念、流程以及核心APIRAD中创建基于Struts架构的Web应用程序3学习要点重点内容48.1Struts简介Struts的体系结构48.1Struts简介Struts的体系结构58.2Struts流程Struts时序图58.2Struts流程Struts时序图68.3Struts的核心APIStruts框架中的组件组件用途Struts-config.xml配置文件ActionServlet控制器ActionClass包含事务逻辑ActionMapping帮助控制器将请求映射到操作ActionFormbean保存数据ActionForward用来指示操作转移的对象错误处理用来存储和回收错误Struts标记库可以减轻开发显示层次的工作68.3Struts的核心APIStruts框架中的组件78.3Struts的核心API(cont.)Struts配置文件Struts配置文件(struts-config.xml)负责将Struts中各组件结合在一起默认保存在“动态Web应用程序”的“WEB-INF”下配置文件可定义全局转发、ActionMapping类、ActionFormbean、JDBC数据源78.3Struts的核心API(cont.)Strut88.3Struts的核心API(cont.)配置全局转发全局转发用来在JSP页之间创建逻辑名称映射,转发都可以通过对调用操作映射的实例来获得actionMappingInstace.findForward(“logicalName”);<global-forwards><forwardname="bookCreated"path="/BookView.jsp"/></global-forwards>属性描述Name全局转发的名字Path与目标URL的相对路径88.3Struts的核心API(cont.)配置全局转98.3Struts的核心API(cont.)配置ActionMappingActionMapping对象帮助进行框架内部的流程控制,可将请求URI映射到Action类,将Action类与ActionFormbean相关联ActionServlet在内部使用这些映射,并将控制转移到特定Action类的实例所有Action类使用perform()方法实现特定应用程序代码,返回一个ActionForward对象,其中包括响应转发的目标资源名称98.3Struts的核心API(cont.)配置Act108.3Struts的核心API(cont.)配置ActionFormBeanActionServlet使用ActionForm来保存请求的参数,这些bean的属性名称与HTTP请求参数中的名称相对应控制器将请求参数传递到ActionFormbean的实例,然后将这个实例传送到Action类108.3Struts的核心API(cont.)配置Ac118.3Struts的核心API(cont.)配置JDBC数据源用<data-sources>元素可以定义多个数据源,属性如下:KeyAction类使用这个名称来寻找连接

Type实现JDBC接口的类的名称

118.3Struts的核心API(cont.)配置JD128.3Struts的核心API(cont.)ActionServlet类在web.xml中声明ActionServlet,将它配置成启动时进行加载第一次收到特定请求的URI时,ActionServlet将适当的Action类进行实例化,然后ActionServlet在Action类实例中以servlet为变量名存储一个引用被实例化后,Action类会被暂存以备再用ActinServlet提供了一组能够被Action对象使用的方法,可使用destroy()方法结束ActionServlet,也可使用reload()方法从Struts配置文件将信息重新加载128.3Struts的核心API(cont.)Acti138.3Struts的核心API(cont.)ActionMapping类特定请求映射到特定Action的相关信息存储在ActionMapping中ActionServelt将ActionMapping传送到Action类的perform()方法,Action将使用ActionMapping的findForward()方法,此方法返回一个指定名称的ActionForward,这样Action就完成了本地转发若没有找到具体的ActionForward,就返回一个null138.3Struts的核心API(cont.)Acti148.3Struts的核心API(cont.)Action类用于实现应用程序的事务逻辑,负责处理请求收到请求后,ActionServlet会为这个请求选择适当的Action,如果需要,创建Action的一个实例,调用Action的perform()方法。如果ActionServlet不能找到有效的映射,它会调用默认的Action类,如果找到了,ActionServlet将适当的ActionMapping类转发给Action,这个Action使用ActionMapping找到本地转发,然后获得并设置ActionMapping属性根据servlet环境和被覆盖的perform()方法签名,ActionServlet也会传送ServletRequest对象或HttpServletRequest对象。所有Action类都扩展org.apache.struts.action.Action类,并且覆盖类中定义的某一个perform()方法148.3Struts的核心API(cont.)Acti158.3Struts的核心API(cont.)ActionForm类在应用程序中为每个表单都创建了一个ActionFormbean,对于每个在struts-config.xml文件中定义的bean,框架在调用Action类的perform()方法之前会进行以下操作:在相关联的关键字下,它检查用于适当类的bean实例的用户会话,如果在会话中没有可用的bean,它就会自动创建一个新的bean并添加到用户的会话中对于请求中每个与bean属性名称对应的参数,Action调用相应的设置方法。当Actionperform()被调用时,最新的ActionFormbean传送给它,参数值就可以立即使用了158.3Struts的核心API(cont.)Acti168.3Struts的核心API(cont.)ActionForward类将Action类的处理结果转发至目的地Action类获得ActionForward实例的句柄,然后返回到ActionServlet。有以下两种使用方法:ActionServlet根据名称获取一个全局转发,ActionMappin实例被传送到perform()方法,并根据名称找到一个本地转发另一种是调用下面的一个构造器来创建它们自己的一个实例168.3Struts的核心API(cont.)Acti178.3Struts的核心API(cont.)错误处理Struts提供了两个类来处理错误:ActionErrors和ActionErrorActionErrors保存着ActionError对象的集合,其中每一个代表了独立的错误信息每个ActionError都包含了关键字,能够映射到资源文件中存储的错误信息,而这个资源文件是在ActionServlet初始化参数中指定的178.3Struts的核心API(cont.)错误处理188.4RAD中构建基于Struts架构的Web应用程序在RAD的Web透视图中,选择“文件>新建>项目”,打开“新建项目”窗口在“新建项目”窗口中选择“动态Web项目”,选择“下一步”,打开“新建Web项目”窗口188.4RAD中构建基于Struts架构的Web应用程序198.4RAD中构建基于Struts架构的Web应用程序(cont.)在“新建Web项目”窗口中,输入名称FirstStruts,然后选择“下一步”选择“Struts”和“JSP标记库”选项,然后选择“完成”创建动态Web项目198.4RAD中构建基于Struts架构的Web应用程序208.4RAD中构建基于Struts架构的Web应用程序(cont.)在“项目资源管理器”视图中,选择“动态Web项目>FirstStruts>Web图”,双击左键,打开“Web图编辑器”视图从“选用板”中选取“Web页面”、“操作映射”、“表单Bean”,拖拽到“Web图编辑器”视图中,并分别命名为index.jsp、computeDay、output.jsp和dateData208.4RAD中构建基于Struts架构的Web应用程序218.4RAD中构建基于Struts架构的Web应用程序(cont.)在“Web图编辑器”视图中,选择“index.jsp”,单击右键,在弹出窗口中选择“连接”,并将箭头指向“computeDay”;选择“computeDay”,单击右键,在弹出窗口中选择“连接”,并将箭头指向“index.jsp”,在弹出的“选择连接”窗口中选择“全局转发”,然后选择“确定”,并将连接名称改为“failure”;同样,建立从“computeDay”到“output.jsp”的连接,在“选择连接”窗口中选择“局部转发”,然后选择“确定”,并将连接名称改为“success”;最后,建立从“computeDay”到“dateData”的连接,并选择保存218.4RAD中构建基于Struts架构的Web应用程序228.4RAD中构建基于Struts架构的Web应用程序(cont.)在“Web图编辑器”视图中,选择“dateData”,单击右键,在弹出窗口中选择“创建表单Bean”,打开“新建Form-Bean”窗口在“新建Form-Bean”窗口中,选择“下一步”;选中“FirstStruts”复选框,再选择“下一步”;在打开的“创建新字段”窗口中添加新字段month、day、year和dayofWeek,类型分别为int、int、int和String;然后选择“下一步”,输入Java包的名称“com.ibm.dayofweek”,再选择“完成”228.4RAD中构建基于Struts架构的Web应用程序238.4RAD中构建基于Struts架构的Web应用程序(cont.)在“编辑器”视图中打开“动态Web项目>FirstStruts>JavaResources>JavaSource>firststruts.forms>DateData.java”文件,在ActionErrorserrors=newActionErrors();代码行的下面增加如下代码:if(year<1582){ errors.add("year",neworg.apache.struts.action.ActionError("pre_gregorian"));

}238.4RAD中构建基于Struts架构的Web应用程序248.4RAD中构建基于Struts架构的Web应用程序(cont.)在“编辑器”视图中打开“动态Web项目>FirstStruts>JavaResources>JavaSource>firststruts.resources>ApplicationRperties”,增加如下代码:pre_gregorian=<li>Dateisbefore1582,theyeartheGregoriancalendarbegan</li>248.4RAD中构建基于Struts架构的Web应用程序258.4RAD中构建基于Struts架构的Web应用程序(cont.)在“Web图编辑器”视图中,选择“/computeDay”,双击左键,打开“新建操作映像”窗口,选择“下一步”;输入Java包的名称“com.ibm.dayofweek”,然后选择“完成”258.4RAD中构建基于Struts架构的Web应用程序268.4RAD中构建基于Struts架构的Web应用程序(cont.)在“编辑器”视图中打开“动态Web项目>FirstStruts>JavaResources>JavaSource>firststruts.actions>ComputeDayAction.java”文件,更改代码(书P114~P115)268.4RAD中构建基于Struts架构的Web应用程序278.4RAD中构建基于Struts架构的Web应用程序(cont.)在“Web图编辑器”视图中,选择“index.jsp”,双击左键,打开“新建JSP文件”窗口,在“模型”下拉菜单中选择StrutsJSP,选择“配置高级选项”复选框,然后选择“下一步”;在接下来的“标记库”页面、“JSP文件”页面继续选择“下一步”,直到出现“表单字段选择”页面,在“表单bean条目”下拉菜单中选择“d

温馨提示

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

评论

0/150

提交评论