《Struts培训文档》PPT课件.ppt

上传人:w****2 文档编号:14685641 上传时间:2020-07-28 格式:PPT 页数:44 大小:604.50KB
返回 下载 相关 举报
《Struts培训文档》PPT课件.ppt_第1页
第1页 / 共44页
《Struts培训文档》PPT课件.ppt_第2页
第2页 / 共44页
《Struts培训文档》PPT课件.ppt_第3页
第3页 / 共44页
点击查看更多>>
资源描述
Struts2 提高课程,2009年 对日BU岗位技能培训,Copyright 江蘇HopeRun,课程内容,Struts2介绍 Struts2体系结构 ActionMap ActionProxy Tag Subsystem(标签库) Interceptor(拦截器) Result Configuration(配置),Copyright 江蘇HopeRun,Struts2介绍,Struts2是以WebWork的设计思想为核心,吸收了Struts1的优点,是Struts1和WebWork结合的产物 Struts2是一个兼容Struts1和WebWork的MVC框架 虽然Struts2好处很多,但它在使用上和Struts1有着很大的不同,要想从Struts1跨越到Struts2,还需要进一步学习,Copyright 江蘇HopeRun,Struts2 vs. Struts1,主要区别,Copyright 江蘇HopeRun,一个小例子(HelloWorld),Action: package tutorial; import java.util.Date; import java.text.DateFormat; import com.opensymphony.xwork2.ActionSupport; public class HelloWorld extends ActionSupport private String message; public String getMessage() return message; public String execute() message = Hello World, Now is + DateFormat.getInstance().format(new Date(); return default ; ,Copyright 江蘇HopeRun,一个小例子(HelloWorld),Struts.xml: HelloWorld.jsp HelloWorld.jsp: Hello World! ,Copyright 江蘇HopeRun,一个小例子(HelloWorld),访问http:/loaclhost:8080/xxxx/HelloWorld.action :,Copyright 江蘇HopeRun,Struts2体系结构,Copyright 江蘇HopeRun,ActionMapper,ActionMapper决定应该调用一个Action ActionMapper用来负责在HTTP请求(URL)和action调用请求之间进行一个映射。当提供了一个 HttpServletRequest, ActionMapper会返回一个描述了一个action调用的ActionMapping。 ActionMapper没必要保证返回的ActionMapping是一个真正的action。,Copyright 江蘇HopeRun,DefaultActionMapper,默认情况下Struts2使用DefaultActionMapper作为ActionMapper DefaultActionMapper使用.ext(后缀)模式识别Action,默认后缀为.action。可以通过配置struts.properties中的struts.action.extension修改后缀。,Copyright 江蘇HopeRun,DefaultActionMapper,DefaultActionMapper还提供四种前缀 Method 前缀 Baz Action的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.jsp SCR030121_init SCR030122_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名 。 Result type有很多种,常用是上例那3种,默认是dispatcher方式, redirect-action方式不可以将本action的form值带到下个action的form中, chain则可以。 在配置action的时候,action的三个属性name、class和method都可以使用通配符 ,就如上图中的*跟1,Copyright 江蘇HopeRun,Tag Subsystem(标签库),要在JSP中使用Struts 2.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-Graph Navigation Language),OGNL是一种功能强大的表达式语言(EL),通过简单一致的表达式语法,可以实现存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,字段类型转化等功能。 OGNL可访问的数据对象 |-request |-application context map- |-OgnlValueStack(root) |-session |-attr |-parameters,Copyright 江蘇HopeRun,OGNL中#、%和$的用法,#: 访问OGNL上下文和Action上下文 用于过滤和投影集合 构造Map %: 在标志的属性为字符串类型时,计算OGNL表达式的值 $ : 用于在国际化资源文件中,引用OGNL表达式 在Struts 2配置文件中,引用OGNL表达式,Copyright 江蘇HopeRun,“#”使用实例,访问OGNL上下文和Action上下文 用于过滤和投影(projecting)集合 Books more than $35 35 - $ The price of Code Complete, Second Edition is: 构造Map The value of key foo1 is ,Copyright 江蘇HopeRun,“#”使用实例,访问根对象(OgnlValueStack)中的数据可以省略#号。 Action实例中的属性已存放在OgnlValueStack中,因此不需要用#号访问。 ,Copyright 江蘇HopeRun,“%”使用实例,Jsp代码: %的用途 效果:,Copyright 江蘇HopeRun,“$”使用实例,在Struts 2配置文件中,引用OGNL表达式 : ListPhotos.action?albumId=$albumId ,Copyright 江蘇HopeRun,典型应用,多行提交 ,Copyright 江蘇HopeRun,Interceptor(拦截器),拦截器,用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。 它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。同时也是提供了一种可以提取action中可重用的部分的方式。 拦截器链(Interceptor Chain,在Struts 2中称为拦截器栈Interceptor Stack)。拦截器链就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。,Copyright 江蘇HopeRun,拦截器实现原理,Copyright 江蘇HopeRun,拦截器使用说明,拦截器执行的顺序按照定义的顺序执行 可以为每个Action配置都需要的拦截器堆栈,当然也可以为某个Action单独配置一个拦截器 每一个拦截器都可以配置参数,有两种方式配置参数,一是针对每一个拦截器定义参数,二是针对一个拦截器堆栈统一定义所有的参数 注意:从体系结构图可以看出,拦截器的后半部分的执行结果无法反应到表现层,Copyright 江蘇HopeRun,Struts2拦截器例:File Upload Interceptor,在struts.xml文件中为某个Action配置FileUpload拦截器 20715200 /ShowUpload.jsp ,Copyright 江蘇HopeRun,拦截器栈,拦截器栈定义了需要执行哪些拦截器,以及拦截器的执行顺序。 可以定义全局的拦截器栈,也可以为每个Action定义或覆写拦截器栈,Copyright 江蘇HopeRun,拦截器栈,在struts.xml中定义全局拦截器栈 struts-default.xml 中提供了一些常用的拦截器栈,Copyright 江蘇HopeRun,拦截器栈,为Action单独定义拦截器栈 . 覆写拦截器栈参数 myMethod myMethod ,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.jsp Sturts根据Action执行后返回的字符串决定使用哪一个Result,Copyright 江蘇HopeRun,全局Result,多数情况下,每个Action需要定义自己的Result,但有时多个Action也需要公用同一个Result,比如错误处理页面。这时可以使用全局Result。 /Error.jsp 当Action返回字符串error时,struts首先在Action自身的Result中寻找数否有匹配的对象,如果没有找到,再查找全局Result对象。,Copyright 江蘇HopeRun,Result类型,Result类型决定了以何种形式呈现结果 foo.jsp Struts2已经提供了多种Result类型。目前常用的有以下几种: Chain Result - 用于 Action Chaining Dispatcher Result - 用于 JSP 整合 JasperReports Result - 用于 JasperReports 整合 Redirect Result - 用于直接跳转到例外的URL Redirect Action Result - 用于直接跳转到另外的action Stream Result - 用于向浏览器返回一个流 (一般用于文件下载) 这些类型定义在struts-default.xml 文件中,Copyright 江蘇HopeRun,Result举例(Stream Result ),Stream Result一般用于文件下载 image/jpeg download filename=$filename $size public class DownloadAction private InputStream download; /get, set . private long size; /get, set . private string filename; /get, set . public string execute .; return =“success”; ,Copyright 江蘇HopeRun,Chain Result与Redirect Action Result,Chain Result和Redirect Action Result 都是迁移到下一个Action进行处理 Chain Result是服务端迁移, Redirect Action Result是客户端迁移。 使用Redirect Action Result时,浏览器的URL会改变,使用Chain Result则不会。 使用Chain Result时,后画面能得到提交到前画面Request的值, Redirect Action Result则不能。,Copyright 江蘇HopeRun,Configuration(配置),struts.properties 用于Struts 2.0的运行时的配置,Copyright 江蘇HopeRun,struts.properties配置文件,struts.properties文件定义了Struts2框架的大量属性,可以通过改变这些属性来满足应用的需求 struts.properties文件是一个标准的Properties文件,该文件包含了系列的key-value对象,每个key就是一个Struts 2属性,该key对应的value就是一个Struts 2属性值 struts.properties文件通常放在Web应用的WEB-INF/classes路径下。实际上,只要将该文件放在Web应用的CLASSPATH路径下,Struts 2框架就可以加载该文件,Copyright 江蘇HopeRun,struts.properties常用配置,struts.i18n.encoding 指定Web应用的默认编码集,当设置该参数时,相当于调用HttpServletRequest的setCharacterEncoding方法 struts.multipart.saveDir该属性指定上传文件的临时保存路径,该属性的默认值是javax.servlet.context.tempdir struts.multipart.maxSize该属性指定Struts 2文件上传中整个请求内容允许的最大字节数 struts.action.extension该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts 2处理,我们通常都把这个属性改成do,即匹配*.do请求 struts.devMode该属性设置Struts 2应用是否使用开发模式。如果设置该属性为true,则可以在应用出错时显示更多、更友好的出错提示 struts.custom.i18n.resources该属性指定Struts 2应用所需要的国际化资源文件,
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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