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

yizhihongxing

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日

相关文章

  • jsp实现页面实时显示当前系统时间的方法

    要实现页面实时显示当前系统时间,可以使用以下方法: 方法一:使用JavaScript实现 最简单的方法是使用JavaScript,这种方式可以通过浏览器直接获取当前时间,然后展示在页面上。具体实现如下: 在HTML页面中引入JavaScript代码: <body onload="setInterval(displayClock, 1000);…

    Java 2023年6月15日
    00
  • 一文详解Spring AOP的配置与使用

    一文详解Spring AOP的配置与使用攻略 1. Spring AOP简介 Spring AOP是Spring框架中的一个模块,它提供了基于代理的AOP实现。 AOP(Aspect Oriented Programming)即面向切面编程,是一种编程范式。它通过在程序运行期间动态地将代码切入到类的指定方法或指定位置上,实现一些特定功能。 Spring AO…

    Java 2023年5月19日
    00
  • HBuilderX配置tomcat外部服务器查看编辑jsp界面的方法详解

    以下是关于“HBuilderX配置Tomcat外部服务器查看编辑JSP界面的方法详解”的具体攻略。 步骤一:安装Tomcat服务器 首先需要在电脑上安装好Tomcat服务器。如果已经安装过Tomcat服务器,则可以跳过此步骤。 步骤二:配置Tomcat的conf文件 在Tomcat服务器的安装目录下,找到conf文件夹,在该文件夹下找到文件server.xm…

    Java 2023年6月15日
    00
  • 基于tomcat8 编写字符编码Filter过滤器无效问题的解决方法

    下面是关于基于tomcat8编写字符编码Filter过滤器无效问题的解决方法的完整攻略。 问题背景 在使用tomcat8进行web开发的过程中,我们经常需要使用Filter来对字符编码进行过滤,以避免出现乱码等问题。但是有些情况下,我们编写的过滤器并不能很好地工作,导致过滤器无效。这时候就需要寻找原因并解决问题。 解决方法 方法一:修改web.xml配置文件…

    Java 2023年5月20日
    00
  • 一套前后台全部开源的H5商城送给大家

    博主给大家推荐一套全部开源的H5电商项目waynboot-mall。由博主在2020年开发至今,已有三年之久。那时候网上很多的H5商城项目都是半开源版本,要么没有H5前端代码,要么需要加群咨询,属实恶心。于是博主决定自己开发一套完整的移动端H5商城,包含一个管理后台、一个前台H5商城、一套后端接口。项目地址如下: H5商城前端代码:https://githu…

    Java 2023年5月6日
    00
  • 如何进行Java代码混淆?

    下面是Java代码混淆的完整使用攻略: 什么是代码混淆? 代码混淆是一种技术,用于在不改变代码功能的情况下,通过改变代码的结构和逻辑,使之变得更难理解和分析,从而增加反向工程的难度。 为什么要进行代码混淆? 在Java应用程序中,代码是以明文形式存在的。如果黑客轻易地分析出加密算法,则攻击者可以使用相同的算法和密钥来破解系统。因此,代码混淆是为了增加系统的安…

    Java 2023年5月11日
    00
  • Java常用工具类—集合排序

    下面是Java常用工具类—集合排序的完整攻略: 一、集合排序的介绍 集合是Java中非常重要的一种数据结构,它可以存储多个相同类型的对象。集合中的元素是没有固定顺序的,而如果我们需要按照一定的规则对集合中的元素进行排序,那么就需要使用集合排序的功能。 集合排序可以对一个集合中的元素按照升序或降序进行排序。Java中提供了很多集合排序的方式,如排序工具类、实现…

    Java 2023年5月26日
    00
  • Spring Boot 项目代码混淆,实战来了,再也不用担心代码泄露了!

    编译 简单就是把代码跑一哈,然后我们的代码 .java文件 就被编译成了 .class 文件 反编译 就是针对编译生成的 jar/war 包 里面的 .class 文件 逆向还原回来,可以看到你的代码写的啥。 比较常用的反编译工具 JD-GUI ,直接把编译好的jar丢进去,大部分都能反编译看到源码: 那如果不想给别人反编译看自己写的代码呢? 怎么做? 混淆…

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