Struts2 控制文件上传下载功能实例代码

本文将详细讲解如何在 Struts2 Web 应用程序中实现文件上传下载功能,并配合两条示例代码进行演示。

1. 添加 Maven 依赖

在 pom.xml 文件中添加以下 Maven 依赖,用于支持文件上传下载功能。

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.4</version>
</dependency>
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.8.0</version>
</dependency>

2. 配置 Struts2 过滤器

在 web.xml 文件中添加 Struts2 过滤器,用于捕获文件上传下载请求。

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>
        org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
    </filter-class>
</filter>
<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

3. 实现文件上传功能

3.1 编写文件上传表单

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

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

3.2 处理文件上传请求

在 Struts2 控制器中处理文件上传请求,并将上传的文件保存到服务器。

public class FileUploadAction extends ActionSupport {
    private File file;
    private String fileContentType;
    private String fileFileName;

    public File getFile() {
        return file;
    }

    public void setFile(File file) {
        this.file = file;
    }

    public String getFileContentType() {
        return fileContentType;
    }

    public void setFileContentType(String fileContentType) {
        this.fileContentType = fileContentType;
    }

    public String getFileFileName() {
        return fileFileName;
    }

    public void setFileFileName(String fileFileName) {
        this.fileFileName = fileFileName;
    }

    public String execute() throws Exception {
        String basePath = ServletActionContext.getServletContext().getRealPath("/upload");
        File file = new File(basePath, fileFileName);
        FileUtils.copyFile(this.file, file);
        return SUCCESS;
    }
}

该控制器中包含文件类型的属性 fileContentType 和文件名的属性 fileFileName,用于处理上传的文件。

3.3 配置上传文件大小限制

在 struts.xml 文件中添加以下配置,用于限制上传文件的大小。

<constant name="struts.multipart.maxSize" value="2097152" />

其中 2097152 表示上传文件最大为 2 MB。

4. 实现文件下载功能

4.1 处理文件下载请求

在 Struts2 控制器中处理文件下载请求,并将服务器上的文件发送至客户端。

public class FileDownloadAction extends ActionSupport {
    private String fileName;

    public String getFileName() {
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }

    public InputStream getInputStream() throws Exception {
        String basePath = ServletActionContext.getServletContext().getRealPath("/upload");
        File file = new File(basePath, fileName);
        return new FileInputStream(file);
    }

    public String execute() throws Exception {
        return SUCCESS;
    }
}

该控制器包含文件名的属性 fileName 和输入流的方法 getInputStream,用于处理文件下载请求。

4.2 编写文件下载链接

在 JSP 页面中添加文件下载链接,点击链接可下载服务端的文件。

<s:a href="%{fileName}" download="%{fileName}">%{fileName}</s:a>

该链接使用 Struts2 的标签库 <s:a>,链接地址为文件名,且在下载文件时使用了 download 属性,设置下载时显示的文件名。

以上便是 Struts2 控制文件上传下载功能的完整攻略,下面将通过两个示例进一步说明控制器的具体用法。

示例1:文件上传

  1. 创建 JSP 页面 upload.jsp,并添加文件上传表单。
<form action="upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="submit" value="上传文件" />
</form>
  1. 创建 Struts2 控制器 FileUploadAction,用于处理文件上传请求。
public class FileUploadAction extends ActionSupport {
    private File file;
    private String fileContentType;
    private String fileFileName;

    public File getFile() {
        return file;
    }

    public void setFile(File file) {
        this.file = file;
    }

    public String getFileContentType() {
        return fileContentType;
    }

    public void setFileContentType(String fileContentType) {
        this.fileContentType = fileContentType;
    }

    public String getFileFileName() {
        return fileFileName;
    }

    public void setFileFileName(String fileFileName) {
        this.fileFileName = fileFileName;
    }

    public String execute() throws Exception {
        String basePath = ServletActionContext.getServletContext().getRealPath("/upload");
        File file = new File(basePath, fileFileName);
        FileUtils.copyFile(this.file, file);
        return SUCCESS;
    }
}
  1. 在 struts.xml 文件中添加以下配置,用于将请求映射到控制器。
<package name="default" namespace="/" extends="struts-default">
    <action name="upload" class="com.example.FileUploadAction" method="execute">
        <result name="success">/success.jsp</result>
        <result name="input">/upload.jsp</result>
    </action>
</package>
  1. 在 web.xml 文件中添加 Struts2 过滤器,用于捕获文件上传请求。
<filter>
    <filter-name>struts2</filter-name>
    <filter-class>
        org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
    </filter-class>
</filter>
<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
  1. 启动应用程序,上传文件并查看文件是否成功保存到 /upload 目录下。

示例2:文件下载

  1. 创建 JSP 页面 download.jsp,并添加文件下载链接。
<s:a href="download?fileName=test.txt" download="test.txt">下载文件</s:a>

其中 fileName 参数为服务器上的文件名。

  1. 创建 Struts2 控制器 FileDownloadAction,用于处理文件下载请求。
public class FileDownloadAction extends ActionSupport {
    private String fileName;

    public String getFileName() {
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }

    public InputStream getInputStream() throws Exception {
        String basePath = ServletActionContext.getServletContext().getRealPath("/upload");
        File file = new File(basePath, fileName);
        return new FileInputStream(file);
    }

    public String execute() throws Exception {
        return SUCCESS;
    }
}
  1. 在 struts.xml 文件中添加以下配置,用于将请求映射到控制器。
<package name="default" namespace="/" extends="struts-default">
    <action name="download" class="com.example.FileDownloadAction" method="execute">
        <result name="success" type="stream">
            <param name="contentType">application/octet-stream</param>
            <param name="contentDisposition">attachment;filename=${fileName}</param>
            <param name="bufferSize">1024</param>
        </result>
    </action>
</package>
  1. 在 web.xml 文件中添加 Struts2 过滤器,用于捕获文件下载请求。
<filter>
    <filter-name>struts2</filter-name>
    <filter-class>
        org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
    </filter-class>
</filter>
<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
  1. 启动应用程序,点击链接下载文件并查看是否成功下载。

以上便是本文所讲述的 Struts2 控制文件上传下载功能的完整攻略和示例代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Struts2 控制文件上传下载功能实例代码 - Python技术站

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

相关文章

  • Java之键盘输入语句Scanner解读

    Java之键盘输入语句Scanner解读 在Java中,键盘输入是通过java.util.Scanner实现的。Scanner可以从各种输入源读取数据,比如键盘输入、文件输入等等。本文将重点介绍如何通过Scanner实现键盘输入,并提供两个示例说明。 Scanner的使用 Java中官方提供的标准输入对象是System.in(是一个InputStream对象…

    Java 2023年5月27日
    00
  • Bootstrap Table 搜索框和查询功能

    Bootstrap Table 是一款基于Bootstrap的响应式表格插件,可以快速创建漂亮、强大的表格,并提供了丰富的配置选项和API接口。 搜索框和查询功能是Bootstrap Table的重要特性之一,可以帮助用户快速定位和过滤所需数据。下面是搜索框和查询功能的完整攻略: 1. 搜索框 搜索框是Bootstrap Table的常用特性之一,可以帮助用…

    Java 2023年6月16日
    00
  • 用jsp页面生成随机的验证数字码示例

    下面我将详细讲解使用JSP页面生成随机验证数字码的完整攻略。 首先,我们可以使用Java的Random类生成随机数。为了方便,我们也可以借助第三方库,如Apache Commons Lang库中的RandomStringUtils类。 示例1: 使用Java原生API代码实现: <% int length = 6; // 设置验证码的长度 Random…

    Java 2023年6月15日
    00
  • java二分查找插入法

    当需要在已排序数组中查找元素时,可以使用二分查找算法。如果需要向已排序数组中插入元素,可以使用二分查找插入法。 二分查找插入法的主要思路是通过二分查找找到需要插入的元素在数组中的位置,然后将该元素插入到该位置中。以下是具体的步骤: 首先,定义需要查询的元素 target 和已排序的数组 nums,同时记录数组的左右端点 left 和 right。 计算需要查…

    Java 2023年5月19日
    00
  • Java数组的遍历与求和知识点

    下面是“Java数组的遍历与求和知识点”的完整攻略。 什么是Java数组? Java数组是一种容器,用来存储多个相同类型的数据值。数组是一个固定长度的容器,它包含的元素数量是在创建数组时确定的,而且这个长度在数组的整个生命周期中保持不变。 Java数组的遍历 遍历数组就是依次访问数组内的所有元素。在Java中,常用的遍历数组的方法有以下几种: 1. for循…

    Java 2023年5月26日
    00
  • java MyBatis拦截器Inteceptor详细介绍

    Java MyBatis拦截器Inteceptor详细介绍 什么是MyBatis拦截器Inteceptor MyBatis拦截器Inteceptor是MyBatis中的一个重要组件,使用拦截器可以实现对MyBatis的许多事务进行拦截和控制,比如SQL执行、查询结果处理等等。MyBatis拦截器Inteceptor主要由两部分组成:拦截器接口和拦截对象。 如…

    Java 2023年5月20日
    00
  • 详解Spring Boot使用Maven自定义打包方式

    下面是详解Spring Boot使用Maven自定义打包方式的攻略: 1. 配置打包插件 在pom.xml文件中添加如下插件和依赖: <build> <plugins> <!– 配置打包插件 –> <plugin> <groupId>org.springframework.boot</gr…

    Java 2023年5月20日
    00
  • java eclipse 中文件的上传和下载示例解析

    Java Eclipse 文件上传和下载说明文档 介绍 在Java程序中,文件的上传和下载是一项重要的功能。Eclipse提供了简单而强大的方式来实现这两个功能。本文将介绍Eclipse中如何通过Java编写代码来实现文件上传和下载,并提供两个示例来帮助您更好地理解这些功能。 文件上传 在Eclipse中,文件上传可以使用Apache Commons Fil…

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