快速业务通道

Struts2中的参数传递 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
er1").getName());      // -> fff      logger.info("userMap.key = " + "user2" + " : " + "userMap.value(user2''s name) = " + userMap.get("user2").getName());      // -> [user3, user4]      logger.info("userMap2.key : " + userMap2.keySet());      // -> ggg      logger.info("userMap2.key = " + "user3" + " : " + "userMap.value(user3''s name) = " + ((User)userMap2.get("user3")).getName());      // -> hhh      logger.info("userMap2.key = " + "user4" + " : " + "userMap.value(user4''s name) = " + ((User)userMap2.get("user4")).getName());      return super.execute();    }    // setters and getters }

上面的代码中,我们可以看到,如果你使用泛型,那么你无需再使用任何额外的配置文件或者Annotation,XWork会把一切都为你准备好。如果你没有使用泛型,那么你可以使用Annotation来指定你需要进行转化的对象类型。其中,对Map对象使用Annotation时,Element中的value所对应的值,是Map中的value所对应的class。

由此可见,泛型和Annotation,在一定程度上,还是可以简化我们很多工作的。

文件上传 

文件上传其实也是参数传递的一种,所以从方案上来讲,Struts2同样使用了一个拦截器来处理。而这个拦截器,同样来自于原来的Webwork,基本上没有做什么很大的改变。有关这个拦截器的详细内容,我们也留一个悬念,在后续章节中详细讲解。目前,你只要知晓,这个拦截器能帮助你完成一切文件上传相关的机制。

早在2005年,Quake Wang就对Webwork的文件上传机制有了详细的讲解:http://www.javaeye.com/topic/10697

Struts2中的参数传递(6)

时间:2011-02-04

在这里我简单小结一下在进行文件上传时的三大要点:

1. 在配置文件上传时,拦截器的顺序非常关键

Xml代码

<interceptor-stack name="uploadStack">    <interceptor-ref name="upload"/>    <interceptor-ref name="defaultStack"/> </interceptor-stack>

具体来说,upload的拦截器,必须在params的拦截器之前

2. 拦截器额外提供了一些额外的文件信息

Quake Wang 写道

ContentType: 文件的ContentType(可以用在做download的时候)

FileName: 实际的文件名

在上面的action例子里, 那么有uploadFilesContentType和uploadFilesFileName这2个属性, 也能够被自动绑定

3. 拦截器提供的文件上传功能,你得到的是一个临时文件

robbin 写道

在webwork的file upload 拦截器功能中,它提供的File只是一个临时文件,Action执行之后就会被自动删除,因此你必须在Action中自己出来文件的存储问题,或者写到服务器的某个目录,或者保存到数据库中。如果你准备写到服务器的某个目录下面的话,你必须自己面临着处理文件同名的问题

而时代发展到Struts2的年代,对于文件上传的整体机制没有做什么改变。只是Struts2将apache的common-fileupload作为了其默认的文件上传的机制。

例子归例子,实际情况中,我们还是会遇到一些问题:

1. 默认实现中,文件和文件信息是分开表述的,对于后台处理来说,不是非常方便

2. common-fileupload的实现,虽然提供了文件上传的机制,也可以让你得到文件的一些属性信息,但是它无法得到客户端的上传路径

对于第一个问题,我们可以使用OGNL的特性,将这些文件和文件名等文件信息做封装:

Java代码

public clas

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号