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日

相关文章

  • SpringMvc实现简易计算器功能

    下面是“SpringMvc实现简易计算器功能”的完整攻略。 1. 前置知识 在实现这一功能之前,需要掌握以下技术: SpringMvc框架基础知识 Maven项目管理工具基础知识 JSP页面基础知识 控制器中方法参数的绑定、视图解析器、转发和重定向 2. 创建Maven项目 首先,需要使用Maven创建一个新的SpringMvc项目。可以使用以下Maven命…

    Java 2023年6月15日
    00
  • Java 实战范例之线上新闻平台系统的实现

    Java 实战范例之线上新闻平台系统的实现 目录 概述 技术选型 系统架构 实现步骤 1. 创建数据库和表 2. 用户注册和登录功能的实现 3. 新闻分类和展示功能的实现 4. 新闻发布和编辑功能的实现 结语 概述 本篇文档是针对实现一个线上新闻平台系统的完整攻略。该系统包括用户注册和登录,新闻分类和展示,新闻发布和编辑等功能。 技术选型 本系统使用的技术包…

    Java 2023年5月19日
    00
  • SpringBoot整合Tomcat连接池的使用

    下面是完整攻略: 什么是Tomcat连接池 Tomcat连接池是Tomcat中的一个JDBC连接池。它可以帮助我们在Java应用程序中管理数据库连接,优化数据库性能,提高系统的稳定性。 SpringBoot整合Tomcat连接池的基本步骤 修改pom文件,引入Tomcat连接池的依赖 xml <dependency> <groupId&gt…

    Java 2023年5月19日
    00
  • Java日常练习题,每天进步一点点(16)

    让我来为你详细讲解“Java日常练习题,每天进步一点点(16)”的完整攻略吧。 首先,这个练习题是一道比较典型的算法练习题,旨在让练习者熟悉并掌握常见的算法思想以及数据结构基本操作。下面我们将对这个练习题进行分析。 题目描述 给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。 示例说明 例如,输入s=”rabbbit”,t=”r…

    Java 2023年5月19日
    00
  • springmvc 传递和接收数组参数的实例

    SpringMVC传递和接收数组参数的实例 在SpringMVC中,我们可以使用@RequestParam注解来传递和接收数组参数。下面是一个示例代码,演示如何传递和接收数组参数。 示例代码 @RestController @RequestMapping("/api") public class MyController { @GetMa…

    Java 2023年5月18日
    00
  • JavaEE开发基于Eclipse的环境搭建以及Maven Web App的创建

    JavaEE是一种为企业应用而建的标准,它包含了很多技术(JSP、Servlet、Java Bean等)和规范(J2EE规范)的集合。而Eclipse是一个著名的Java IDE工具,通过它可以方便地进行JavaEE开发。下面将详细讲解如何基于Eclipse搭建JavaEE开发环境,并创建一个Maven Web App。 环境搭建 JDK安装及环境变量配置 …

    Java 2023年5月19日
    00
  • Java 入门图形用户界面设计之列表框JList

    下面我将详细讲解Java入门图形用户界面设计之列表框JList的完整攻略,包含以下几个方面: 列表框JList的介绍 列表框JList的基本使用方式 列表框JList的高级使用方式 示例说明 注意事项 1. 列表框JList的介绍 列表框JList是Swing组件库中的一种用于显示列表项的组件,它可以显示一个或多个列表项,并且支持单选、多选等不同的选择模式。…

    Java 2023年5月26日
    00
  • SpringBoot返回统一的JSON标准格式实现步骤

    下面是“SpringBoot返回统一的JSON标准格式实现步骤”的完整攻略: 1. 为什么需要统一的JSON标准格式 在Web开发中,经常需要通过API接口返回JSON格式的数据,在返回JSON数据时大家的实现方式可能会有所不同,这就导致在调用不同接口时,返回的JSON格式可能会存在不同的字段、不同的格式等情况,这也会增加前端开发人员的工作难度。因此,为了简…

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