使用WEBWORK实现文件上传方法
WEBWORK是一个灵活功能强大的J2EE Web框架,它完全从web层脱离出来,致力于组件化和代码重用。除了常见的功能,WEBWORK还可以利用其简洁的设计来实现文件上传功能。
利用ognl实现资料绑定
WEBWORK利用ognl实现的资料绑定是非常实用的功能。它能够避免繁琐调用和对象setter,并且无需任何多余的配置文件。再加上转换器的功能,我们可以用一个业务对象从前台一直串到后台,无需考虑String转化、不需要DTO、不需要FormBean。
使用数据绑定实现文件上传
如果能把常见的文件上传也用数据绑定来实现,那就更加完美了。使用WEBWORK的文件上传拦截器,Action再也不需要了解任何web信息,只需要对具体的Object进行操作。需要对用户上传的文件进行操作时,只需调用getFile方法。
配置文件上传拦截器
在webwork2.1.5以前,已经有详细介绍文件上传问题的内容。在2.1.5以后的版本中,这个拦截器被加入了正式release版本里面,具体拦截器为。
示例代码
下面是一个使用WEBWORK实现文件上传的Action示例代码:
public class FileUploadAction extends ActionSupport { private File file; public void setFile(File file) { file; } public String execute() throws Exception { // 处理上传文件 return SUCCESS; } }
需要注意栏位名称和Action的属性同名即可。剩下的事情就是配置拦截器:
lt;interceptorsgt; lt;interceptor name"fileUpload" class""/gt; lt;interceptor-stack name"defaultStack"gt; lt;interceptor-ref name"fileUpload"/gt; lt;interceptor-ref name"defaultStack"/gt; lt;/interceptor-stackgt; lt;/interceptorsgt; lt;action name"fileUploadAction" class""gt; lt;result name"success"gt;success.jsplt;/resultgt; lt;/actiongt;
选择合适的文件上传lib
WEBWORK并没有自己实现文件上传功能,而是封装了几种通用的File Upload lib,包括pell、cos和apache common三种实现。
pell是oreilly的包,其功能最全面,也是许多人喜欢使用的文件上传lib。apache common是apache的common中的一个文件上传工具。webwork的封装提供了一个通用的访问接口,在中可以配置具体使用哪个lib。
推荐使用pell作为文件上传lib,因为它能正确获取中文文件名称。apache common会将中文文件名称改为,而cos会产生乱码。需要注意的是,webwork的封装丧失了cos的一些功能,所以如果需要使用cos的特殊功能,建议单独使用cos。
自定义文件存储方式
在WEBWORK的文件上传拦截器功能中,它提供的File只是一个临时文件,Action执行之后会被自动删除。因此,你必须在Action中自行处理文件的存储方式,可以选择保存到服务器的某个目录或者保存到数据库中。如果选择保存到服务器的目录,需要自己处理文件同名的问题,而cos包已经提供了文件重名的自动重命名规则。
总结来说,利用WEBWORK实现文件上传功能可以大大简化开发过程,通过合适的配置和选择合适的文件上传lib,可以轻松完成文件上传功能的开发。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。