《Struts培训文档》PPT课件.ppt_第1页
《Struts培训文档》PPT课件.ppt_第2页
《Struts培训文档》PPT课件.ppt_第3页
《Struts培训文档》PPT课件.ppt_第4页
《Struts培训文档》PPT课件.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

Struts2提高课程,2009年对日BU岗位技能培训,Copyright江蘇HopeRun,课程内容,Struts2介绍Struts2体系结构ActionMapActionProxyTagSubsystem(标签库)Interceptor(拦截器)ResultConfiguration(配置),Copyright江蘇HopeRun,Struts2介绍,Struts2是以WebWork的设计思想为核心,吸收了Struts1的优点,是Struts1和WebWork结合的产物Struts2是一个兼容Struts1和WebWork的MVC框架虽然Struts2好处很多,但它在使用上和Struts1有着很大的不同,要想从Struts1跨越到Struts2,还需要进一步学习,Copyright江蘇HopeRun,Struts2vs.Struts1,主要区别,Copyright江蘇HopeRun,一个小例子(HelloWorld),Action:packagetutorial;importjava.util.Date;importjava.text.DateFormat;importcom.opensymphony.xwork2.ActionSupport;publicclassHelloWorldextendsActionSupportprivateStringmessage;publicStringgetMessage()returnmessage;publicStringexecute()message=HelloWorld,Nowis+DateFormat.getInstance().format(newDate();returndefault;,Copyright江蘇HopeRun,一个小例子(HelloWorld),Struts.xml:HelloWorld.jspHelloWorld.jsp:HelloWorld!,Copyright江蘇HopeRun,一个小例子(HelloWorld),访问http:/loaclhost:8080/xxxx/HelloWorld.action:,Copyright江蘇HopeRun,Struts2体系结构,Copyright江蘇HopeRun,ActionMapper,ActionMapper决定应该调用一个ActionActionMapper用来负责在HTTP请求(URL)和action调用请求之间进行一个映射。当提供了一个HttpServletRequest,ActionMapper会返回一个描述了一个action调用的ActionMapping。ActionMapper没必要保证返回的ActionMapping是一个真正的action。,Copyright江蘇HopeRun,DefaultActionMapper,默认情况下Struts2使用DefaultActionMapper作为ActionMapperDefaultActionMapper使用.ext(后缀)模式识别Action,默认后缀为.action。可以通过配置perties中的struts.action.extension修改后缀。,Copyright江蘇HopeRun,DefaultActionMapper,DefaultActionMapper还提供四种前缀Method前缀BazAction的anotherMethod()方法被调用Action前缀anotherAction的execute()方法被调用,Copyright江蘇HopeRun,DefaultActionMapper,Redirect前缀迁移到URL:Redirect-action前缀迁移到URL:./dashboard.action,Copyright江蘇HopeRun,ActionProxy,ActionProxy根据struts.xml文件里的配置信息创建Action及其拦截器的实例,并调应指定的Action中的方法。,Copyright江蘇HopeRun,struts.xml配置文件,struts.xml是Struts框架的核心配置文件,该文件主要负责管理Struts2框架的业控制器Action,以及该Action包含的Result定义等在默认情况下,框架会自动加载放在WEB-INF/classes路径下的struts.xml文件,Copyright江蘇HopeRun,一个典型的struts.xml配置文件,SCR030120.jspSCR030121_initSCR030122_init,Copyright江蘇HopeRun,(struts.xml用法讲解),为了避免struts.xml配置文件过于庞大,提高struts.xml文件的可读性,我们可以将一个struts.xml配置文件分解成多个配置文件,然后在struts.xml文件中通过include导入其他配置文件,通过这种方式就可以将struts2的Action按模块配置在多个配置文件中。package的name是可以虚构的,并不一定要在classes目录下要有一个与这个name名对应的包名;像上面的配置文件中的name=“customer”可以随便改成name=“aaa”等是不影响结果的,只不过这个package名可以使得多个action聚合在一起,对大型的模块设计的时候是很有帮助的。package可以扩展,当一个package扩展自另一个package时该package会在本身配置的基础上加入扩展的package的配置,父package必须在子package前配置,extends后接父package名。Resulttype有很多种,常用是上例那3种,默认是dispatcher方式,redirect-action方式不可以将本action的form值带到下个action的form中,chain则可以。在配置action的时候,action的三个属性name、class和method都可以使用通配符,就如上图中的*跟1,Copyright江蘇HopeRun,TagSubsystem(标签库),要在JSP中使用Struts2.0标签,先要指明标签的引入。通过在JSP的代码的顶部加入以下代码可以做到这点。标签分类1.非UI标签(非用户界面标签)2.UI标签(用户界面标签),Copyright江蘇HopeRun,非UI标签,常用:property、if、elseif、else、iterator等,Copyright江蘇HopeRun,UI标签,常用:textfield、textarea、hidden、file、select、radio、checkboxlist、checkbox等,Copyright江蘇HopeRun,OGNL(Object-GraphNavigationLanguage),OGNL是一种功能强大的表达式语言(EL),通过简单一致的表达式语法,可以实现存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,字段类型转化等功能。OGNL可访问的数据对象|-request|-applicationcontextmap-|-OgnlValueStack(root)|-session|-attr|-parameters,Copyright江蘇HopeRun,OGNL中#、%和$的用法,#:访问OGNL上下文和Action上下文用于过滤和投影集合构造Map%:在标志的属性为字符串类型时,计算OGNL表达式的值$:用于在国际化资源文件中,引用OGNL表达式在Struts2配置文件中,引用OGNL表达式,Copyright江蘇HopeRun,“#”使用实例,访问OGNL上下文和Action上下文用于过滤和投影(projecting)集合Booksmorethan$3535-$ThepriceofCodeComplete,SecondEditionis:构造MapThevalueofkeyfoo1is,Copyright江蘇HopeRun,“#”使用实例,访问根对象(OgnlValueStack)中的数据可以省略#号。Action实例中的属性已存放在OgnlValueStack中,因此不需要用#号访问。,Copyright江蘇HopeRun,“%”使用实例,Jsp代码:%的用途效果:,Copyright江蘇HopeRun,“$”使用实例,在Struts2配置文件中,引用OGNL表达式:ListPhotos.action?albumId=$albumId,Copyright江蘇HopeRun,典型应用,多行提交,Copyright江蘇HopeRun,Interceptor(拦截器),拦截器,用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。同时也是提供了一种可以提取action中可重用的部分的方式。拦截器链(InterceptorChain,在Struts2中称为拦截器栈InterceptorStack)。拦截器链就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。,Copyright江蘇HopeRun,拦截器实现原理,Copyright江蘇HopeRun,拦截器使用说明,拦截器执行的顺序按照定义的顺序执行可以为每个Action配置都需要的拦截器堆栈,当然也可以为某个Action单独配置一个拦截器每一个拦截器都可以配置参数,有两种方式配置参数,一是针对每一个拦截器定义参数,二是针对一个拦截器堆栈统一定义所有的参数注意:从体系结构图可以看出,拦截器的后半部分的执行结果无法反应到表现层,Copyright江蘇HopeRun,Struts2拦截器例:FileUploadInterceptor,在struts.xml文件中为某个Action配置FileUpload拦截器20715200/ShowUpload.jsp,Copyright江蘇HopeRun,拦截器栈,拦截器栈定义了需要执行哪些拦截器,以及拦截器的执行顺序。可以定义全局的拦截器栈,也可以为每个Action定义或覆写拦截器栈,Copyright江蘇HopeRun,拦截器栈,在struts.xml中定义全局拦截器栈struts-default.xml中提供了一些常用的拦截器栈,Copyright江蘇HopeRun,拦截器栈,为Action单独定义拦截器栈.覆写拦截器栈参数myMethodmyMethod,Copyright江蘇HopeRun,自定义拦截器,自定义一个拦截器需要三步:1.自定义一个实现Interceptor接口(或者继承自AbstractInterceptor)的类。2.在strutx.xml中注册上一步中定义的拦截器。3.在需要使用的Action中引用上述定义的拦截器,为了方便也可将拦截器定义为默认的拦截器,这样在不加特殊声明的情况下所有的Action都被这个拦截器拦截,Copyright江蘇HopeRun,自定义拦截器实例(MessageInterceptor),功能:清除之前action的message并加入本action产生的message实现1.实装继承自AbstractInterceptor的类:MessageInterceptor.java(略)2.在struts.xml中注册及使用注册:使用:default,Copyright江蘇HopeRun,自定义拦截器实例(MessageInterceptor),流程:,Copyright江蘇HopeRun,Result,Result是在Action执行完成之后,生成返回结果的组件。各Result在struts.xml中进行配置foo.jsp/error.jspSturts根据Action执行后返回的字符串决定使用哪一个Result,Copyright江蘇HopeRun,全局Result,多数情况下,每个Action需要定义自己的Result,但有时多个Action也需要公用同一个Result,比如错误处理页面。这时可以使用全局Result。/Error.jsp当Action返回字符串error时,struts首先在Action自身的Result中寻找数否有匹配的对象,如果没有找到,再查找全局Result对象。,Copyright江蘇HopeRun,Result类型,Result类型决定了以何种形式呈现结果foo.jspStruts2已经提供了多种Result类型。目前常用的有以下几种:ChainResult-用于ActionChainingDispatcherResult-用于JSP整合JasperReportsResult-用于JasperReports整合RedirectResult-用于直接跳转到例外的URLRedirectActionResult-用于直接跳转到另外的actionStreamResult-用于向浏览器返回一个流(一般用于文件下载)这些类型定义在struts-default.xml文件中,Copyright江蘇HopeRun,Result举例(StreamResult),StreamResult一般用于文件下载image/jpegdownloadfilename=$filename$sizepublicclassDownloadActionprivateInputStreamdownload;/get,set.privatelongsize;/get,set.privatestringfilename;/get,set.publicstringexecute.;return=“success”;,Copyright江蘇HopeRun,ChainResult与RedirectActionResult,ChainResult和RedirectActionResult都是迁移到下一个Action进行处理ChainResult是服务端迁移,RedirectActionResult是客户端迁移。使用RedirectActionResult时,浏览器的URL会改变,使用ChainResult则不会。使用ChainResult时,后画面能得到提交到前画面Request的值,RedirectActionResult则不能。,Copyright江蘇HopeRun,Configuration(配置),perties用于Struts2.0的运行时的配置,Copyright江蘇HopeRun,perties配置文件,perties文件定义了Struts2框架的大量属性,可以通过改变这些属性来满足应用的需求per

温馨提示

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

评论

0/150

提交评论