热门关键字:  ubuntu  分区  函数  linux系统进程  Fedora

当前位置 :| 主页>Linux教程>编程开发>JAVA>

使用WEBWORK实现文件上传方法实例详解

来源: 作者: 时间:2007-10-16 Tag: 点击:

webwork利用ognl实现的资料绑定是非常实用的功能, 能够避免繁琐调用request.getParameter, object setter, 也不需要任何的多余配置文件, 再加上转换器的功能, 我们就可以用一个业务对象, 从前台一直串到后台, 再也不需要考虑String转化, 不需要DTO, 不需要FormBean了.

能够把web应用上常见的上传文件也用数据绑定来实现, 那么就是非常完美了: action再也不需要了解任何web信息, 需要对具体的Object进行操作, 就调用getObject, 需要对用户上传的文件进行操作, 就调用getFile.

在webwork2.1.5以前, wiki上有一篇文档: http://wiki.opensymphony.com/display/WW/File+Upload+Interceptor, 介绍了如何实现这种做法, 在2.1.5以后, 这个拦截器被加入了正式release版本里面: com.opensymphony.webwork.interceptor.FileUploadInterceptor

先来看一下我们的Action:

代码

public class Upload implements Action {        
    private File[] uploadFiles;     
    
    public String execute() throws Exception {     
        //store uploadFiles ...     
    }     
         
    public void setUploadFiles(File[] uploadFiles) {     
        this.uploadFiles = uploadFiles;     
    }         
}

我们可以看到这个Action相当的简单, 只要定义一个File类型的属性以及setter, 我们就可以用这个File对象来作任何事情了.

页面和普通的upload页面没有区别:

代码

<form .... enctype="multipart/form-data">     
    ....     
    File 1: <input type="file" name="uploadFiles">     
    File 2: <input type="file" name="uploadFiles">     
<form>

需要注意栏位名称和Action的属性同名就可以了, 剩下的事情就是配置拦截器:

xml 代码

<interceptors>    
  <interceptor name="upload"
class="com.opensymphony.webwork.interceptor.FileUploadInterceptor"/>    
             
  <interceptor-stack name="uploadStack">    
  <interceptor-ref name="upload"/>   
  <interceptor-ref name="defaultStack"/>    
    </interceptor-stack>                
</interceptors>    
         
<action name="doUpload" class="yourPackage.Upload">    
    <interceptor-ref name="uploadStack"/>    
    <result name="success">...</result>    
</action>

除此之外, 这个拦截器还提供了额外的信息: ContentType和FileName供我们使用:

[File Name]ContentType: 文件的ContentType(可以用在做download的时候)

[File Name]FileName: 实际的文件名

最新评论共有 4 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
栏目列表