SSH:Struts1框架(采用struts上传文件)

原创 2015年11月19日 15:54:11

使用Struts1实现文件上传(一)

      完成文件上传功能大致需要以下几个步骤:  

     (1)创建用于文件上传的JSP页面;

     (2)创建用于承载数据的ActionForm;

     (3)创建用于处理上传的Action;

     (4)配置文件上传大小;

     (5)配置从web.xml文件中读取文件存放路径;

 

步骤一:创建用于文件上传的JSP页面

Java代码
[java] view plaincopy
  1. <html:form enctype="multipart/form-data" action="/fileUpload" method="post">  
  2.           <html:file property="uploadFile"></html:file>  
  3.           <html:submit>Upload File</html:submit>  
  4. </html:form>   

步骤二:创建用于承载数据的ActionForm

      在项目中新建一个ActionForm的子类,如命名为:FileUploadForm.java,在其中新增一个FormFile类型的属性uploadFile,并设置getter、setter方法。

Java代码
[java] view plaincopy
  1. import org.apache.struts.upload.FormFile;  
  2.   
  3. private FormFile uploadFile;  
  4.           public FormFile getUploadFile() {  
  5.           return uploadFile;  
  6. }  
  7.           public void setUploadFile(FormFile uploadFile) {  
  8.           this.uploadFile = uploadFile;  
  9. }   

      在Struts中,一个FormFile类型的对象对应Form表单中创送的一个文件,Struts将上传的文件信息封装金FormFile中,通过FormFile提供的方法可以方便的进行文件的操作。其实FormFile是一个接口,位于 org.apache.struts.upload.FormFile 中,它定义了操作上传文件的基本方法。

      FormFile接口定义的常用方法:

      (1) getFileName()/setFileName()   //用于获取或设置文件名;

      (2) getFileSize() / setFileSize()      //用于获取或设置文件字节数;

      (3) getFileData()                           //用于获取文件的字节数组,用于小的文件;

      (4) getInputStream()                    //用于获取文件的输入流,用于较大的文件;

      (5) destory()                                 //销毁FromFile;

 

步骤三:创建用于处理上传的Action

 

      在项目中新建一个Action的子类,如命名为:FileUploadAction.java,在其execute方法中添加处理代码。

Java代码
[java] view plaincopy
  1. public ActionForward execute(ActionMapping mapping, ActionForm form,  
  2.         HttpServletRequest request, HttpServletResponse response) {  
  3.       
  4.     FileUploadForm fileUploadForm = (FileUploadForm) form;  
  5.     FormFile uploadFile = fileUploadForm.getUploadFile();  
  6.     try {  
  7.         FileOutputStream outer = new FileOutputStream("d:\\"+uploadFile.getFileName());  
  8.         byte[] buffer = uploadFile.getFileData();  
  9.         outer.write(buffer);  
  10.         outer.close();  
  11.         uploadFile.destroy();  
  12.     } catch (Exception e) {  
  13.         e.printStackTrace();  
  14.     }  
  15.     return null;  
  16.       
  17. }  

      在代码中可以看到,我们从FileUploadForm中找到了FormFile类型的属性,通过其提供的方法得到文件的信息,并将其存入服务器的磁盘中。在保存的过程中需要用到文件流的一些基本操作。

 

      到此为止,文件的上传已经基本成功,剩下的两步为配置文件上传大小和从web.xml文件中读取文件存放路径,可以选择学习。

 

步骤四:配置文件上传大小

 

      在Struts中可以配置上传文件的大小,以避免服务器的硬盘消化不良。

      打开项目中WebRoot\WEB-INF\struts-config.xml ,切换至源码视图,在其中添加如下节点信息,便可以控制上传文件的大小了。

Xml代码
  1. <controller maxFileSize="8K"></controller>  

      其中maxFileSize属性的单位可以是K,也可以是M或G;Struts在写 FormFile类时借助的是fileupload中的API,设置的默认大小为250M

      注意:操作struts-config.xml文件时应当特别注意各个节点间的顺序,因为Struts要求配置文件的各个元素顺序有一定的要求,顺序一旦被打乱,也就意味着web容器即将进入瘫痪状态,因此在添加<controler>节点时,要将此节点添加在<action-mapping>和<message-resources>节点之间。

     附:Struts-config.xml配置文件各元素的顺序列表。

Xml代码
  1. The content of element type "struts-config" must match "(display-name?,description?,form-beans?,global-exceptions?,global-forwards?,action-mappings?,controller?,message-resources*,plug-in*)".  

 

 步骤五:配置从web.xml文件中读取文件存放路径

 

       在步骤三中的代码中我们已经看到,在保存文件时,我写的是一个固定的存放路径,有没有什么办法让它动态改变呢?答案是肯定的,Struts提供了一些方法可以读取web.xml中读取数据,那么我们可以把存放的路径存放在web.xml文件中,存储文件时再将路径读取出来。这样做的好处是,如果存放路径发生改变,我们只需要修改配置文件,而不需要改动代码。

 

       打开项目WebRoot\WEB-INF\web.xml , 找到一个servlet,在该servlet的节点下添加如下代码:

Xml代码
  1. <init-param>  
  2.   <param-name>path</param-name>  
  3.   <param-value>d:\uploadFolder\</param-value>  
  4. </init-param>  

       要想读取此节点的信息,在处理上传文件的Action代码中加入如下代码:

Java代码
[java] view plaincopy
  1. //以下两行代码任选其一;  
  2. String path = this.getServlet().getInitParameter("uploadpath");  
  3. String path = this.getServlet().getServletConfig().getInitParameter("uploadpath")  

       到此基于Struts的文件上传操作已经基本完成。

版权声明:本文为博主原创文章,未经博主允许不得转载。

笨鸟先飞之Java(一)--使用struts2框架实现文件上传

不管是.net还是Java,我们最常接触到的就是文件的上传和下载功能,在Java里要实现这两个常用功能会有很多种解决方式,但是struts2的框架却能给我们一个比较简单的方式,下面就一起来看吧:...
  • YSC1123
  • YSC1123
  • 2015年07月21日 20:22
  • 1795

【Struts2框架】第八节上传-利用struts2实现上传功能

Struts2的文件上传 将表单的method属性设置为post,将enctype设置为multipart/form-data。 将enctype设置为multippart/form-data,浏览...
  • u013517797
  • u013517797
  • 2015年08月03日 09:34
  • 1335

ssh框架 使用struts上传图片

使用ssh框架 struts 上传图片  使用相对路径 保存到
  • finality_000
  • finality_000
  • 2014年08月05日 10:29
  • 1949

Struts1框架四之文件上传

整理笔记四,利用struts1实现文件上传,我在这里做一个简短的讲解 首先,我们需要配置一个jsp页面,让用户可以选择上传的文件 这里需要注意几点 1、请求为post请求,否则会报Ele...
  • qq_17165717
  • qq_17165717
  • 2017年05月17日 20:37
  • 74

struts1文件上传的例子

  • 2009年08月26日 02:20
  • 2.54MB
  • 下载

struts1文件上传

  • 2012年02月12日 16:55
  • 4.32MB
  • 下载

struts1+swfuploadv2.2.0.1文件批量上传

  • 2012年09月07日 11:56
  • 1.44MB
  • 下载

struts1 + hibernate + spring 实现文件上传

  • 2010年03月24日 13:30
  • 1.46MB
  • 下载

struts1实现文件上传

  • 2013年08月01日 16:58
  • 4KB
  • 下载

struts1文件上传

  • 2012年05月07日 11:51
  • 62KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SSH:Struts1框架(采用struts上传文件)
举报原因:
原因补充:

(最多只允许输入30个字)