java中Struts2 的文件上传和下载示例

Java中Struts2提供了方便的文件上传和下载的功能。下面将详细讲解文件上传和下载的示例。

文件上传示例

文件上传需要使用Struts2中的文件上传拦截器。详细步骤如下:

第一步:引入依赖

在项目的pom.xml文件中添加以下依赖:

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.5.22</version>
</dependency>

第二步:配置配置文件

在web.xml中添加过滤器:

<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>

添加struts.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
    <constant name="struts.multipart.maxSize" value="10485760" />
    <package name="default" extends="struts-default">
        <action name="upload" class="com.example.action.FileUploadAction">
            <result name="success">/success.jsp</result>
            <result name="input">/fileupload.jsp</result>
        </action>
    </package>
</struts>

配置文件中,struts.multipart.maxSize用于限制上传文件的大小。

第三步:编写Action

编写Action来处理上传文件:

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

    public File getFile() {
        return file;
    }
    public void setFile(File file) {
        this.file = file;
    }
    public String getFileFileName() {
        return fileFileName;
    }
    public void setFileFileName(String fileFileName) {
        this.fileFileName = fileFileName;
    }
    public String getFileContentType() {
        return fileContentType;
    }
    public void setFileContentType(String fileContentType) {
        this.fileContentType = fileContentType;
    }

    public String execute() throws Exception{
        // 保存上传文件逻辑处理
        return SUCCESS;
    }
}

第四步:编写JSP页面

编写JSP页面,用于上传文件:

<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title>Struts2文件上传示例</title>
</head>
<body>
    <s:form enctype="multipart/form-data" action="upload">
        <s:file name="file" label="请选择上传文件"></s:file><br/>
        <s:submit value="上传"></s:submit>
    </s:form>
</body>
</html>

第五步:运行示例

在浏览器中访问上传文件的JSP页面,选择一个文件,上传即可。

文件下载示例

文件下载需要在struts.xml中配置一个Action来进行文件下载。详细步骤如下:

第一步:引入依赖

在项目的pom.xml文件中添加以下依赖:

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

第二步:配置配置文件

在web.xml中添加过滤器:

<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>

添加struts.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
    <package name="default" extends="struts-default">
        <action name="download" class="com.example.action.FileDownloadAction">
            <param name="filePath">/tmp/foo.txt</param>
            <result name="success" type="stream">
                <param name="contentType">application/octet-stream</param>
                <param name="inputName">fileInputStream</param>
                <param name="contentDisposition">attachment;filename="${fileName}"</param>
                <param name="bufferSize">1024</param>
            </result>
        </action>
    </package>
</struts>

第三步:编写Action

编写Action来进行文件下载:

public class FileDownloadAction extends ActionSupport {
    private InputStream fileInputStream;
    private String fileName;
    private String filePath;

    public InputStream getFileInputStream() {
        return fileInputStream;
    }
    public void setFileInputStream(InputStream fileInputStream) {
        this.fileInputStream = fileInputStream;
    }
    public String getFileName() {
        return fileName;
    }
    public void setFileName(String fileName) {
        this.fileName = fileName;
    }
    public String getFilePath() {
        return filePath;
    }
    public void setFilePath(String filePath) {
        this.filePath = filePath;
    }

    public String execute() throws Exception {
        fileName = new File(filePath).getName();
        fileInputStream = new FileInputStream(new File(filePath));
        return SUCCESS;
    }
}

第四步:运行示例

在浏览器中访问下载文件的Action链接,即可下载对应的文件。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java中Struts2 的文件上传和下载示例 - Python技术站

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

相关文章

  • 最流行的java后台框架spring quartz定时任务

    下面是最流行的Java后台框架Spring Quartz定时任务的完整攻略: 什么是Spring Quartz定时任务 Spring Quartz定时任务是一款高性能,可靠的定时任务调度框架,并且它完全是在Java中实现的。通过使用Spring Quartz,我们可以轻松地实现各种复杂的任务调度,并且它还支持集群部署,具有很好的扩展性。 基本使用步骤 Spr…

    Java 2023年5月31日
    00
  • 用Java连接sqlserver数据库时候几个jar包的区别分析

    用Java编程语言连接SQL Server数据库时,需要使用特定的JDBC(Java数据库连接)驱动程序。在使用JDBC驱动程序时,需要引入相应的jar包。本文将为您介绍在连接SQL Server数据库时使用的几个jar包,并对它们的区别进行分析。 1. jtds.jar jtds.jar是连接SQL Server数据库时最常使用的jar包之一。它是一个纯J…

    Java 2023年5月20日
    00
  • Java十分钟精通类 封装 继承

    Java 十分钟精通类 封装 继承 Java 是面向对象编程语言,其中类、封装和继承是 OOP 的核心概念。在本文中,我们将介绍如何使用 Java 快速掌握这些概念。 类 在 Java 中,类是一种用于描述对象的结构。通过类定义,我们可以定义一个对象的属性和行为,从而为对象提供一个有意义的结构。Java 中的类定义如下: public class Class…

    Java 2023年5月26日
    00
  • Java @Autowired报错原因分析和4种解决方案

    下面是“Java @Autowired报错原因分析和4种解决方案”的完整攻略。 问题描述 在使用Spring框架进行Java开发时,有时候会使用到注解方式自动装配依赖。其中,@Autowired是最为常见的一种方式。但是,在使用@Autowired进行自动装配时,有时候会出现报错的情况。那么,造成报错的原因是什么呢?我们该如何解决这个问题呢? 原因分析 无法…

    Java 2023年5月25日
    00
  • MyBatis通过BATCH批量提交的方法

    MyBatis 提供了一个方便的批量操作接口 – Session#batch(), 可以用于执行批量插入(insert)、更新(update)或删除(delete)操作。在这个接口的帮助下,程序员可以很方便地将多个 SQL 语句并发提交到数据库,从而提高批量操作的效率。 MyBatis BATCH 批量操作的使用方法 在你的映射文件中,使用 insert、u…

    Java 2023年5月20日
    00
  • java压缩多个文件并且返回流示例

    下面为你详细讲解如何使用Java压缩多个文件并返回流,包含两条示例。 一、使用Java压缩多个文件 首先,我们需要使用Java提供的ZipOutputStream类来压缩多个文件。以下是一个示例代码: public static void compressFiles(List<File> files, OutputStream outputStr…

    Java 2023年5月20日
    00
  • springboot jpa分库分表项目实现过程详解

    那我就来详细讲解一下“springboot jpa分库分表项目实现过程详解”的完整攻略。 1. 什么是分库分表 分库分表是一种水平扩展数据库的方式。 在一个分库分表的架构中,一个应用的数据被分为多个库或表。 这些库或表通常基于某个可配置的关键字划分数据。 比如用户ID可以作为划分关键字,用户的数据会根据关键字散列到多个库或表中。 2. 分库分表的优缺点 2.…

    Java 2023年5月20日
    00
  • 使用jQuery.form.js/springmvc框架实现文件上传功能

    下面是关于“使用jQuery.form.js/SpringMVC框架实现文件上传功能”的完整攻略,包含两个示例说明。 使用jQuery.form.js/SpringMVC框架实现文件上传功能 在本文中,我们将介绍如何使用jQuery.form.js和SpringMVC框架实现文件上传功能。 步骤1:添加依赖 首先,我们需要在pom.xml中添加SpringM…

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