JavaEE中struts2实现文件上传下载功能实例解析

下面是JavaEE中struts2实现文件上传下载功能的完整攻略。

一、文件上传功能实现

1.1 在JSP页面上添加文件上传表单

在JSP页面上添加文件上传表单,可以使用form标签,并且指定enctype属性为"multipart/form-data",如下所示:

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

其中,form的action属性为上传文件的地址,这里我们传输到了uploadFile.action上。

1.2 在struts.xml中配置文件上传的相关参数

在struts.xml中配置文件上传的相关参数,包括文件大小限制、文件类型限制等,示例如下:

<bean type="org.apache.struts2.dispatcher.multipart.MultiPartRequest" name="jakarta"
          class="org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest">
          <param name="maximumSize">2097152</param>
          <param name="allowedTypes">image/png,image/gif,image/jpeg,application/zip,application/vnd.ms-excel,application/pdf</param>
        </bean>

<action name="uploadFile" class="com.example.UploadAction">
    <interceptor-ref name="fileUpload">
        <param name="allowedTypes">image/png,image/gif,image/jpeg,application/zip,application/vnd.ms-excel,application/pdf</param>
        <param name="maximumSize">2097152</param>
    </interceptor-ref>
    <result name="success">/success.jsp</result>
    <result name="error">/error.jsp</result>
</action>

这里需要注意,文件上传的拦截器需要配置在action前面,这样才能对文件进行处理。

1.3 编写UploadAction处理文件上传

在UploadAction中进行文件上传的处理,示例如下:

public class UploadAction extends ActionSupport {

    // 上传文件的文件名
    private String fileName;
    // 上传文件的MimeType
    private String contentType;
    // 上传文件的字节数组
    private byte[] file;

    // 文件上传处理函数
    public String execute() {
        try {
            InputStream inputStream = new ByteArrayInputStream(file);
            OutputStream outputStream = new FileOutputStream(new File("D:/upload/" + fileName));
            int bytesRead = 0;
            byte[] buffer = new byte[8192];
            while ((bytesRead = inputStream.read(buffer, 0, 8192)) != -1) {
                outputStream.write(buffer, 0, bytesRead);
            }
            outputStream.close();
            inputStream.close();
            return SUCCESS;
        } catch (Exception e) {
            e.printStackTrace();
            return ERROR;
        }
    }

    // 省略setter和getter方法
}

执行文件上传的函数中,通过指定文件名、文件类型和字节数组,可以将文件保存到指定的目录中。

二、文件下载功能实现

2.1 在JSP页面上添加文件下载链接

在JSP页面上添加文件下载链接,如下所示:

<a href="downloadFile.action?fileName=example.pdf">下载文件</a>

其中,downloadFile.action是文件下载的地址,fileName是需要下载的文件名称。

2.2 编写DownloadAction进行文件下载

在DownloadAction中进行文件下载的处理,示例如下:

public class DownloadAction extends ActionSupport {

    // 文件名
    private String fileName;

    // 文件下载处理函数
    public String execute() {
        try {
            HttpServletResponse response = ServletActionContext.getResponse();
            response.setContentType("application/octet-stream");
            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
            InputStream inputStream = new FileInputStream(new File("D:/upload/" + fileName));
            OutputStream outputStream = response.getOutputStream();
            int bytesRead = 0;
            byte[] buffer = new byte[8192];
            while ((bytesRead = inputStream.read(buffer, 0, 8192)) != -1) {
                outputStream.write(buffer, 0, bytesRead);
            }
            outputStream.close();
            inputStream.close();
            return null;
        } catch (Exception e) {
            e.printStackTrace();
            return ERROR;
        }
    }

    // 省略setter和getter方法
}

文件下载需要设置响应的Content-Type和Content-Disposition,在响应头中指定文件名,并将文件的字节数组输出给客户端。

至此,JavaEE中struts2实现文件上传下载功能已经完成,能够帮助用户快速完成在网站中的实现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaEE中struts2实现文件上传下载功能实例解析 - Python技术站

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

相关文章

  • springboot结合maven实现多模块打包

    “springboot结合maven实现多模块打包”的步骤如下: 创建父项目 首先要创建一个父项目,作为多模块项目的管理者。在父项目的pom中引入多个子项目,并且添加<modules>标签,用于指定子项目的路径。 创建子项目 创建子项目时,需要在子项目的pom.xml中继承父项目(<parent>标签),同时需要指定打包方式,如:ja…

    Java 2023年6月2日
    00
  • Java 发送http请求上传文件功能实例

    以下是Java发送HTTP请求上传文件的完整攻略,包含示例代码、步骤以及解释。 1. 前置准备 在进行Java发送HTTP请求上传文件之前,我们需要先做一些前置准备,具体如下: 下载安装Java开发环境。 学习Java基础知识,如I/O流、网络编程等。 学习使用Java HttpURLConnection类发送HTTP请求。 2. 发送HTTP请求上传文件的…

    Java 2023年5月19日
    00
  • 浅析Java中对象的创建与对象的数据类型转换

    这里是“浅析Java中对象的创建与对象的数据类型转换”的攻略。 1. 对象的创建 Java中的对象可以由new关键字创建,一个对象的创建需要以下步骤: 分配对象的内存空间:在堆内存中为新对象分配一片连续的空间,这个空间的大小由对象的数据类型和属性决定。 执行构造函数:在分配好内存空间之后,JVM会执行对象的构造函数,初始化对象的属性值等。 将对象的引用返回给…

    Java 2023年5月26日
    00
  • 使用JSP读取客户端信息

    使用JSP读取客户端信息需要用到内置对象request,通过request对象的方法获取到客户端的相关信息。 以下是具体的步骤: 在JSP页面中,使用内置对象request获取客户端信息前,需要获取参数request对象。获取的方式是: <% request = request.getRequest(); %> 获取客户端IP地址 <% S…

    Java 2023年6月15日
    00
  • jsp网页实现贪吃蛇小游戏

    关于JSP网页实现贪吃蛇小游戏,我们可以分为以下几个步骤: 1. 设计页面 首先,我们要设计一个页面来展示贪吃蛇游戏。可以在页面中设置游戏区域、得分区域等。可以使用HTML和CSS来完成这个页面的设计。 以下是一个简单的示例代码: <!DOCTYPE html> <html> <head> <meta charset…

    Java 2023年6月15日
    00
  • JSP连接SQL Server 2000系统配置

    JSP连接SQL Server 2000需要进行以下步骤: 环境准备 安装JDBC驱动:在JSP项目中引入SQL Server JDBC驱动包,通常是一个jar文件。可以从官方网站下载(https://docs.microsoft.com/zh-cn/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sq…

    Java 2023年6月15日
    00
  • java实战小技巧之字符串与容器互转详解

    Java实战小技巧之字符串与容器互转详解 1. 前言 在Java编程中,我们常常需要将字符串(String)与容器(List、Set、Map)进行转化。本文将详细讲解如何使用Java提供的工具类来实现两者之间的互转。 本文的代码示例基于Java 8及以上版本。 2. 字符串转容器 2.1 字符串转List 2.1.1 普通字符串转List 普通字符串转Lis…

    Java 2023年5月27日
    00
  • 如何实现线程安全的集合?

    以下是关于如何实现线程安全的集合的完整使用攻略: 什么是线程安全的集合? 线程安全的集合是指多个线程可以同时访问的集合,而不会出现数据不一致或程序崩溃等问题。在多线程编程中,线程安全的集合是非常重要的,因为多个线程同时访问集合,会出现线程间争用的问题,导致数据不一致或程序崩溃。 如何实现线程安全的集合? 为了现线程安全的集合,需要使用同步机制来保证多个线程对…

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