基于Struts文件上传(FormFile)详解

基于Struts文件上传(FormFile)详解

1. 引入依赖

首先,需要在项目中引入struts-fileupload库。这个库是用来实现文件上传功能的。在项目的pom.xml文件中,添加以下依赖:

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.3</version>
</dependency>

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts-core</artifactId>
    <version>1.3.10</version>
</dependency>

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts-fileupload</artifactId>
    <version>1.3.10</version>
</dependency>

2. 创建表单页面

在页面中需要添加文件上传表单,创建方法如下:

<form action="uploadFile" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="Upload">
</form>

3. 创建Action

Action中创建对应的方法,来处理文件上传和后续操作。首先需要导入FormFile类,用于接收上传的文件。

import org.apache.struts.upload.FormFile;

然后在方法中定义FormFile类型的变量来接收文件:

public class FileUploadAction extends Action {
    private FormFile file;
    // getters and setters
}

处理文件上传的方法如下:

public ActionForward uploadFile(ActionMapping mapping, ActionForm form,
                             HttpServletRequest request, HttpServletResponse response)
    throws Exception {

    FileUploadAction formBean = (FileUploadAction) form;
    FormFile file = formBean.getFile();

    if (file != null && file.getFileName() != null && file.getFileName().length() > 0) {
        // Save file to local file system
        String pathToSave = "C:\\uploads\\" + file.getFileName();
        System.out.println(pathToSave);
        FileOutputStream outputStream = new FileOutputStream(pathToSave);
        outputStream.write(file.getFileData());
        outputStream.close();

        // Forward to success page
        return mapping.findForward("success");
    } else {
        // Forward to error page
        return mapping.findForward("error");
    }
}

在方法中,如果文件存在并接收成功,FileOutputStream将把文件保存到指定的本地文件系统路径中。如果文件上传失败,则转到错误页面。

示例1

以下示例演示了如何上传文件,并打印其名称:

public ActionForward uploadFile(ActionMapping mapping, ActionForm form,
                             HttpServletRequest request, HttpServletResponse response)
    throws Exception {

    FileUploadAction formBean = (FileUploadAction) form;
    FormFile file = formBean.getFile();

    if (file != null && file.getFileName() != null && file.getFileName().length() > 0) {

        // Print file name
        System.out.println("File name: " + file.getFileName());

        // Forward to success page
        return mapping.findForward("success");
    } else {
        // Forward to error page
        return mapping.findForward("error");
    }
}

示例2

以下示例演示了上传文件后,在JSP页面中显示上传的文件信息:

public ActionForward uploadFile(ActionMapping mapping, ActionForm form,
                             HttpServletRequest request, HttpServletResponse response)
    throws Exception {

    FileUploadAction formBean = (FileUploadAction) form;
    FormFile file = formBean.getFile();

    if (file != null && file.getFileName() != null && file.getFileName().length() > 0) {
        // Save file to local file system
        String pathToSave = "C:\\uploads\\" + file.getFileName();
        System.out.println(pathToSave);
        FileOutputStream outputStream = new FileOutputStream(pathToSave);
        outputStream.write(file.getFileData());
        outputStream.close();

        // Forward to success page with uploaded file details
        request.setAttribute("fileName", file.getFileName());
        request.setAttribute("fileType", file.getContentType());
        request.setAttribute("fileSize", file.getFileSize());
        return mapping.findForward("success");
    } else {
        // Forward to error page
        return mapping.findForward("error");
    }
}

在方法中,如果文件存在并接收成功,将文件信息设置为request对象中的属性。在成功页面中,通过以下方式,在JSP页面中显示上传的文件信息:

File name: ${fileName}<br>
File type: ${fileType}<br>
File size: ${fileSize}<br>

以上就是使用FormFile实现文件上传的完整攻略,示例中演示了两种不同的应用场景。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于Struts文件上传(FormFile)详解 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • 深入理解Java中HashCode方法

    深入理解Java中HashCode方法 HashCode方法的概念和作用 HashCode是Java中的一个重要方法,它返回一个对象的hash值,即对象在内存中的地址的一个唯一标识符。在Java中,Hashtable、HashMap、HashSet等基于Hash算法实现的数据结构会使用对象的HashCode来确定对象在集合中的位置。因此,HashCode方法…

    Java 2023年5月26日
    00
  • Eclipse中配置Maven build打包的方法步骤

    下面是详细的攻略过程。 Eclipse中配置Maven Build打包的方法步骤 1. 配置Maven环境变量 在Windows系统中,需要将Maven安装路径中的bin目录添加到系统的Path环境变量中。打开控制面板,搜索“环境变量”,点击“编辑系统环境变量”,找到“Path”变量,点击“编辑”,在弹出的窗口中添加Maven的bin目录路径。Mac和Lin…

    Java 2023年5月20日
    00
  • java 8 lambda表达式中的异常处理操作

    下面是“Java 8 Lambda表达式中的异常处理操作”的详细攻略。 什么是Lambda表达式中的异常处理操作 在Java 8中,Lambda表达式是一种新的语言特性,可以将一个方法作为参数传递给另一个方法,从而实现更加简洁、灵活的编程方式。在使用Lambda表达式时,有时会出现异常问题,因此需要进行异常处理操作,以保证代码的健壮性。 Lambda表达式中…

    Java 2023年5月27日
    00
  • Java反射,泛型在Json中的运用

    【Java反射,泛型在Json中的运用】 1. Java反射在Json中的运用 1.1 什么是Java反射 Java反射是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法。对于任意一个对象,都能够调用它的任意方法和属性。这种动态获取对象信息以及动态调用对象方法的功能称为Java反射。 1.2 在Json中使用Java反射 在Java开发中,J…

    Java 2023年5月26日
    00
  • 详解IDEA中MAVEN项目打JAR包的简单方法

    下面我为您讲解详解IDEA中MAVEN项目打JAR包的简单方法,希望能帮助到您。 1. 前置条件 在进行MAVEN项目打JAR包前,需要满足以下前置条件: 安装好JDK和MAVEN; 使用IDEA开发工具。 2. 项目配置 2.1 配置pom.xml文件 在项目的pom.xml文件中,需要添加以下配置信息: <!– 打包方式为jar –> &…

    Java 2023年5月20日
    00
  • IDEA 非常重要的一些设置项(一连串的问题差点让我重新用回 Eclipse)

    下面是“IDEA 非常重要的一些设置项”的完整攻略。 1. 自动导入包的设置 开发中,我们需要使用很多的类。在使用类的时候,IDEA 会自动提示我们需要导入的包。但是,如果包的数量很多,我们可能会忘记导入某些包。 为了避免这种情况,我们可以设置 IDEA 在自动提示需要导入的包时,自动导入缺少的包。在 IDEA 的设置中,点击 Editor > Gen…

    Java 2023年5月20日
    00
  • 浅谈JackSon的几种用法

    浅谈Jackson的几种用法 什么是Jackson Jackson是一个Java库,用于将Java对象转换为JSON格式,或者将JSON格式转换为Java对象。它提供了一种简便的方法,用来处理序列化和反序列化的JSON数据。 Jackson使用方式 1. 序列化 序列化是将Java对象转换为JSON字符串的过程。在Jackson中,我们使用ObjectMap…

    Java 2023年5月26日
    00
  • Java BigDecimal除法精度和格式化输出方式

    下面为你详细讲解Java BigDecimal除法精度和格式化输出方式的完整攻略。 BigDecimal的除法精度 在使用BigDecimal进行除法运算时,需要确保除数不为0,并且设置正确的精度,否则将会导致运算结果不准确。下面是两个示例说明。 示例1 假设有两个数a=1.23456789和b=2,我们需要将a除以b并保留4位小数。代码如下: BigDec…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部