前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Struts2应用实战 - 文件上传下载

Struts2应用实战 - 文件上传下载

作者头像
王也518
发布2023-12-21 08:33:46
1280
发布2023-12-21 08:33:46
举报
文章被收录于专栏:吴第广吴第广

简介

文件上传和下载是Web应用程序中常见的功能之一。Struts2作为一个优秀的Java Web框架,提供了便捷的方式来实现文件上传和下载功能。本文将以实战为主,介绍如何在Struts2应用中实现文件上传和下载功能。

文件上传

文件上传是指将本地计算机上的文件传输到服务器端。在Struts2中,你可以使用<s:file>标签来实现文件上传功能。

步骤1:创建表单页面

首先,创建一个表单页面,用于接收用户上传的文件。在该页面中使用<s:file>标签来创建文件上传表单。

代码语言:javascript
复制
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
    <title>文件上传</title>
</head>
<body>
    <s:form action="uploadFile" method="post" enctype="multipart/form-data">
        <s:file name="file" label="选择文件" />
        <s:submit value="上传文件" />
    </s:form>
</body>
</html>
步骤2:创建Action类

接下来,创建一个Action类,用于处理文件上传逻辑。在Action类中,使用File类型的字段来接收上传的文件。

代码语言:javascript
复制
import com.opensymphony.xwork2.ActionSupport;
import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;

public class FileUploadAction extends ActionSupport {

    private File file;
    private String fileFileName;
    private String fileContentType;

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

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

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

    public String execute() {
        try {
            File destFile = new File("upload", fileFileName);
            FileUtils.copyFile(file, destFile);
            return SUCCESS;
        } catch (IOException e) {
            e.printStackTrace();
            return ERROR;
        }
    }
}

在上述代码中,setFilesetFileFileNamesetFileContentType方法用于接收上传的文件、文件名和文件类型。

步骤3:配置Struts2配置文件

最后,在Struts2的配置文件struts.xml中配置Action映射。

代码语言:javascript
复制
<struts>
    <package name="default" namespace="/" extends="struts-default">
        <action name="uploadFile" class="com.example.FileUploadAction">
            <result name="success">/success.jsp</result>
            <result name="error">/error.jsp</result>
        </action>
    </package>
</struts>

文件下载

文件下载是指将服务器上的文件传输到客户端。在Struts2中,你可以使用<s:a>标签来生成下载链接。

步骤1:创建Action类

首先,创建一个Action类,用于处理文件下载逻辑。在Action类中,通过设置InputStream类型的字段来传递文件流。

代码语言:javascript
复制
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext;

import java.io.InputStream;

public class FileDownloadAction extends ActionSupport {

    private InputStream fileStream;
    private String fileName;

    public InputStream getFileStream() {
        return fileStream;
    }

    public String getFileName() {
        return fileName;
    }

    public String execute() {
        fileName = "example.txt";  // 文件名
        fileStream = ServletActionContext.getServletContext().getResourceAsStream("/files/" + fileName);
        return SUCCESS;
    }
}

在上述代码中,fileStream字段用于存储文件流,fileName字段用于设置下载时的文件名。

步骤2:创建下载链接

接下来,在JSP页面中使用<s:a>标签生成文件下载链接。

代码语言:javascript
复制
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
    <title>文件下载</title>
</head>
<body>
    <s:a action="downloadFile">下载文件</s:a>
</body>
</html>
步骤3:配置Struts2配置文件

最后,在Struts2的配置文件struts.xml中配置Action映射。

代码语言:javascript
复制
<struts>
    <package name="default" namespace="/" extends="struts-default">
        <action name="downloadFile" class="com.example.FileDownloadAction">
            <result type="stream">
                <param name="contentType">application/octet-stream</param>
                <param name="inputName">fileStream</param>
                <param name="contentDisposition">attachment;filename=${fileName}</param>
            </result>
        </action>
    </package>
</struts>

总结

在本文中,我们以实际示例介绍了如何在Struts2应用中实现文件上传和下载功能。通过<s:file>标签实现文件上传,通过<s:a>标签生成文件下载链接。同时,我们还展示了如何在Action类中处理文件上传和下载逻辑,并在Struts2配置文件中配置Action映射。

文件上传和下载是Web应用中常见的功能,它们在实际项目中有着广泛的应用。通过掌握Struts2的文件上传下载技巧,你可以为你的应用增加更多的功能和便利性。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 文件上传
    • 步骤1:创建表单页面
      • 步骤2:创建Action类
        • 步骤3:配置Struts2配置文件
        • 文件下载
          • 步骤1:创建Action类
            • 步骤2:创建下载链接
              • 步骤3:配置Struts2配置文件
              • 总结
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档