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日

相关文章

  • MyBatis中OGNL的使用教程详解

    下面我就详细讲解一下“MyBatis中OGNL的使用教程详解”。 什么是OGNL OGNL是Object Graph Navigation Language的缩写,用于操作对象图的导航语言。它是一个强大的表达式语言,可用于从Java对象图中提取和设置数据。在MyBatis中,OGNL被广泛地用于定义动态SQL语句中的参数映射、条件判断等。 OGNL的基本语法…

    Java 2023年5月19日
    00
  • 浅谈hibernate之映射文件VS映射注解

    如何选择使用Hibernate的映射文件或映射注解?这是Hibernate初学者常常疑惑的问题。本文将深入浅出地介绍这个话题,帮助读者更好地掌握Hibernate的使用方法。 什么是映射文件? Hibernate的映射文件定义了Java类和数据库表之间的映射关系。映射文件只是一个XML格式的文件,用于Hibernate根据属性及其映射关系创建数据表和对象。H…

    Java 2023年5月19日
    00
  • 用intellij Idea加载eclipse的maven项目全流程(图文)

    以下是详细讲解“用IntelliJ Idea加载Eclipse的Maven项目全流程”的完整攻略。 步骤1:安装IntelliJ Idea 首先,需要在本地安装IntelliJ Idea,如果还没有安装,请官网下载并安装。 步骤2:打开IntelliJ Idea 安装完成后,打开IntelliJ Idea,点击菜单中的“Import Project” 步骤3…

    Java 2023年5月20日
    00
  • SpringMVC接收与响应json数据的几种方式

    SpringMVC接收与响应json数据的几种方式 在SpringMVC中,我们可以使用多种方式来接收和响应JSON数据。本文将介绍其中的几种方式,并提供两个示例说明。 方式一:使用@RequestBody注解 使用@RequestBody注解可以将请求体中的JSON数据转换为Java对象。可以通过以下方式使用: @PostMapping("/us…

    Java 2023年5月17日
    00
  • 浅谈javap命令拆解字节码文件

    下面给出“浅谈javap命令拆解字节码文件”的完整攻略。 一、前言 javap是JDK自带的一款反编译工具,功能是用来对class文件进行反编译,可以输出反编译后的Java文件、字节码等信息。本文将从以下几个方面来介绍javap命令的使用。 二、 javap命令的基本使用 javap命令的基本格式如下所示: javap [ options ] [ class…

    Java 2023年5月26日
    00
  • 如何把JAR发布到maven中央仓库的几种方法

    下面是如何将JAR包发布到Maven中央仓库的几种方法的完整攻略: 方法一:使用Maven发布插件 首先,在你的项目中加入Maven发布插件: <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <art…

    Java 2023年5月20日
    00
  • JSP迅速入门

    以下是JSP迅速入门的完整攻略: JSP介绍 Java服务器页面(Java Server Pages,JSP)是一种动态网页技术,JSP和PHP、ASP相似,JSP由HTML、Java代码、JSP标签和表达式组成,它允许Java代码和命令直接插入HTML页面中。 JSP环境搭建 要使用JSP技术,需要一台运行Web应用程序的Web服务器,比如Tomcat、J…

    Java 2023年5月20日
    00
  • 使用JSP制作一个超简单的网页计算器的实例分享

    制作一个使用JSP制作一个超简单的网页计算器的实例方法如下: 第一步:新建一个JSP页面 首先,打开一个文本编辑器或者IDE,创建一个新文件,将文件的扩展名设置为 .jsp 即可。例如,我们新建一个 calculate.jsp 文件。 第二步:编写HTML代码 接下来,在新建的 calculate.jsp 文件中编写HTML代码,实现表单输入框和计算按钮。H…

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