温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Struts2文件如何上传

发布时间:2022-09-29 11:23:36 来源:亿速云 阅读:99 作者:iii 栏目:开发技术

今天小编给大家分享一下Struts2文件如何上传的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

Struts 2 文件上传步骤

开发人员可以按照以下五个步骤创建 Struts 2 文件上传应用程序:

将所需的 commons-fileupload 和 commons-io 依赖项添加到Java Web 项目;

创建一个使用 Apache Struts 表单和文件自定义标签的 JSP;

使用映射到文件名的设置器编写一个 Struts 动作类,如表单的指定 s:file 标记;

在Struts动作类的execute方法中,使用标准Java IO包保存上传的文件;和

创建一个成功的 JSP,通知用户文件已成功上载。

包含创建HTML表单元素的特殊 Struts 标记的 JSP是 Apache 框架文件上传功能的关键。一个典型的 Struts 上传表单如下所示:

<%@ taglib prefix ="s" uri ="/struts-tags"%> <%@ page contentType ="text/html; charset =UTF-8"%> <html><正文>
  <s:form 
     action =" fileupload " 
    method ="post" 
    enctype ="multipart/form-data"> 
      <s:file name=" uploadFile " label ="File" /> 
      <s:submit />
  </s:form></body>
 </html>

从一个 Struts 文件上传表单到下一个,post 类型的方法和 mutlipart/form-data 的 enctype 将保持不变。action 属性必须映射到处理服务器上的请求的 Struts 操作类的映射名称,并且文件名必须映射到该操作类中声明的属性。

属性正确映射后,下一步就是编写相应的动作类。

Struts 2 文件上传动作类

上面 Struts上传表单中的文件名是uploadFile 。因此,支持这种形式的动作类必须有一个名为 setUploadedFile 的 setter 方法,它接受一个 java.io.File 对象作为参数,并且它还必须有一个名为 setUploadedFileFileName 的 setter 方法,它接受一个 String作为参数。Struts 框架会将上传的文件及其名称传递给这些方法,但开发人员应注意在动作中声明的属性不必精确映射到设置器名称这一事实。

包 com.mcnz.struts;
导入java.io.*;
导入 java.util.*;
导入 java.util.stream.*;
导入 org.apache.commons.io.*;
导入 org.apache.struts2.convention.annotation.*;
导入 com.opensymphony.xwork2.ActionSupport;@Action ("/fileupload") 
@Result (name = "success", location = "/results.jsp")
公共类 FileUploadAction 扩展 ActionSupport {
  私有文件上传文件;
  私有字符串上传文件名;
  私有字符串 localDirectory = "C:\\temp";
  公共无效setUploadedFile(文件文件){
    上传文件 = 文件;
  }
  公共无效 setUploadedFileFileName(字符串名称){
    上传文件名 = 名称;
  }
  公共字符串执行()抛出异常{
    文件本地文件=新文件(本地目录,上传文件名);
    FileUtils.copyFile(uploadedFile, localFile); 
    返回成功;
  }  /* 用于获取 JSP 显示的文件列表。*/
  public Set<String> getFileList() { 
    return Stream.of(new File(localDirectory).listFiles()) 
      .filter(file -> !file.isDirectory()) 
      .map(File::getName) 
      .collect(Collectors.设置()); 
  } 
}

在上述动作类中,execute 方法获取上传的文件并将其保存到 C:\temp 文件夹。

不需要名为 getFileList() 的辅助方法,但我添加了它以允许结果页面列出当前驻留在上传文件夹中的所有文件。

Struts 2 文件上传确认页面

操作成功调用的目标是 results.jsp。开发人员不需要使这个页面过于复杂。在调用此页面进行渲染时,文件将已成功上传。这是一个满足当前用例的简单 results.jsp:

<%@ taglib prefix="s" uri="/struts-tags"%><%@ page contentType="text/html; charset=UTF-8"%><html><正文><p> <s:property value="uploadedFileName"/> 上传成功。</p></正文></html>

文件上传Maven依赖

除了标准的 Struts 库之外,文件上传实用程序还需要 commons-io 和 commons-fileupload 工具。开发人员需要将以下Maven依赖项添加到您的应用程序中,以使 Struts 2 文件上传工具正常工作:

<依赖>
  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
  <版本>1.2.1</版本></依赖><依赖>
  <groupId>commons-io</groupId>
  <artifactId>commons-io</artifactId>
  <版本>1.3.2</版本></依赖>

以上就是“Struts2文件如何上传”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI