首页 课程 师资 教程 报名

Struts2文件上传示例

  • 2022-02-10 08:25:45
  • 678次 星辉

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</版本>
</依赖>

开发人员将这些依赖项添加到项目后,他们可以运行 Struts 2 文件上传应用程序,并观察每次用户单击文件上传按钮时临时目录填充资源的情况。如果大家想了解更多相关知识,不妨来关注一下星辉的Struts2视频教程,里面的课程内容由浅到深,通俗易懂,即使没有基础也可以听懂,希望对大家的学习能够有所帮助。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交