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日

相关文章

  • 教你怎么在IDEA中创建java多模块项目

    下面是在IDEA中创建Java多模块项目的完整攻略: 1. 创建项目 首先,我们要打开IDEA,选择 “Create New Project”。然后,我们会看到一个对话框。 在对话框中,我们需要选择一个Maven项目类型,并确保我们勾选上了 “Create from archetype” 选项。然后点击 “Add archetype” 按钮,在弹出的对话框中…

    Java 2023年5月26日
    00
  • Struts 2中实现Ajax的三种方式

    Struts 2 是一个基于MVC设计模式的Web框架,既支持传统的同步请求,也可以通过 Ajax 技术实现异步请求。在 Struts 2 框架中,实现 Ajax 的方式有以下三种: 1. 使用Struts2提供的<s:url>标签 Struts 2 提供了 <s:url> 标签,该标签可以在页面中生成一个 URL 地址,当用户点击或…

    Java 2023年5月20日
    00
  • mybatis代码生成+自定义注解+自定义注释实例

    Mybatis代码生成器 Mybatis Generator是Mybatis提供的一个代码生成器,可以通过数据库中的表结构自动生成对应的Java、Mapper和XML文件。自动生成的代码基于Mybatis的最佳实践,可以大大减轻Java开发者的工作量,并且保证代码的规范性和正确性。 安装Mybatis Generator Mybatis Generator是…

    Java 2023年5月26日
    00
  • jsp中点击图片弹出文件上传界面及预览功能的实现

    要实现JSP中点击图片弹出文件上传界面及预览功能,可以采用以下步骤: 导入相关依赖库和设置表单 首先需要在JSP页面中导入相关的依赖库,比如jQuery、layer等,以及设置一个表单用于文件上传。示例代码如下: <head> <script src="https://cdn.bootcdn.net/ajax/libs/jquer…

    Java 2023年6月15日
    00
  • Spring-全面详解(学习总结)

    Spring-全面详解(学习总结) Spring是一个开源的Java框架,它提供了一种轻量级的、非侵入式的解决方案,用于构建企业级应用程序。本文将详细讲解Spring框架的各个方面,包括IoC容器、AOP、Spring MVC、Spring Boot等。 IoC容器 IoC(Inversion of Control)是Spring框架的核心,它通过IoC容器…

    Java 2023年5月15日
    00
  • 如何基于JWT实现接口的授权访问详解

    基于JWT实现接口的授权访问详解攻略如下。 JWT简介 JWT (JSON Web Token) 是一种用于进行身份认证的开放标准(RFC 7519)。JWT由三部分组成:Header、Payload 和 Signature。其中,Payload 用于存储要传递的信息,可以包括用户 ID、角色等信息。Header 使用 Base64 编码存储,表示使用的算法…

    Java 2023年5月20日
    00
  • WebClient抛UnsupportedMediaTypeException异常解决

    WebClient是Spring Framework中提供的提供一种简单的HTTP访问客户端的API,通过WebClient可以完成HTTP的GET、POST、PUT、DELETE等请求操作。在使用WebClient发送请求时,常常会遇到MediaType不支持的异常,本文将介绍如何解决这个异常。 1. 什么是UnsupportedMediaTypeExce…

    Java 2023年5月20日
    00
  • Java超详细讲解如何生成随机整数

    生成随机整数在Java中是一个非常主要和常见的任务,可以使用Java自带的数学随机数发生器类或者第三方库中的随机数工具类来实现。下面是Java超详细讲解如何生成随机整数的完整攻略: 一、使用Java自带的数学随机数发生器类 Java自带的数学随机数发生器类是 java.util.Random ,它可以用来生成伪随机数。下面是使用该类生成随机整数的代码示例: …

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