struts快速上手---上传下载文件

上传

在这里插入图片描述
xml的配置:
在这里插入图片描述

实例:

**1.创建项目:**在 MyEclipse 中创建一个名称为 struts2Demo06 的 Web 项目,添加 Struts2 所需的 JAR 包,并在 web.xml 中配置 Struts2 的核心过滤器。
2.创建上传页面
在这里插入图片描述
**3.创建 Action:**在 src 下新建一个名称为 com.mengma.action 的包,在包中新建一个名称为 FileUploadAction 的类,该类用于接收上传的文件,并执行上传方法,编辑后如下所示。

package com.mengma.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class FileUploadAction extends ActionSupport {
    private static final long serialVersionUID = 1L;
    private File file; // 提交的文件
    private String fileFileName; // 提交的 file 的名字
    private String fileContentType; // 提交的file的类型
    // 此处省略三个属性的getter和setter方法
    public String execute() throws Exception {
        // 文件输入流
        InputStream is = new FileInputStream(file);
        // 设置文件保存的目录
        String uploadPath = ServletActionContext.getServletContext()
                .getRealPath("/upload");
        // 设置目标文件
        File toFile = new File(uploadPath, this.getFileFileName());
        // 文件输出流
        OutputStream os = new FileOutputStream(toFile);
        byte[] buffer = new byte[1024];
        int length = 0;
        // 读取file文件输出到toFile文件中
        while (-1 != (length = is.read(buffer, 0, buffer.length))) {
            os.write(buffer);
        }
        // 关闭输入流和输出流
        is.close();
        os.close();
        return SUCCESS;
    }
    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;
    }
}

在这里插入图片描述
4. 创建配置文件
5. 创建结果页面
在这里插入图片描述
在这里插入图片描述
需要注意的是,在上传文件前,需要在项目的 WebContent 路径下新建一个名称为 upload 的文件夹作为上传目录,如果没有此目录,则会出现系统找不到文件路径的异常。

在这里插入图片描述
示例xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <!--设置文件上传允许最大值为100MB-->
    <constant name="struts.multipart.maxSize" value="10485760"/>
    <package name="struts2" namespace="/" extends="struts-default">
        <action name="fileUpload" class="com.mengma.action.FileUploadAction">
            <result name="success">/result.jsp</result>
            <!-- 定义上传出错要跳转的页面 -->
            <result name="input">/fileUpload.jsp</result>
            <interceptor-ref name="defaultStack"><!--引用拦截器 -->
                <param name="fileUpload.maximumSize">4194304</param><!-- 设置每一个action允许的上传文件的大小 -->
                <!-- 当下面两个配置同时存在时,要满足下面两个条件,才能上传 -->
                <param name="fileUpload.allowedExtensions">.txt,.doc,.jpg</param>
                               <!-- 设置上传文件允许的后缀名,多个使用逗号分开 -->
                <param name="fileUpload.allowedTypes">
                    text/plain,application/msword,image/jpeg
                </param><!--设置上传允许的文件的mimeType类型,多个使用逗号分开 -->
            </interceptor-ref>
        </action>
    </package>
</struts>

在这里插入图片描述

Struts2文件下载简介

在这里插入图片描述
在这里插入图片描述

实例

1.创建下载页面
在这里插入图片描述
2.创建Action:在 com.mengma.action 包中新建一个名称为 SimpleDownLoadAction 的类,该类主要用于处理文件下载的核心操作,其代码如下所示。

package com.mengma.action;
import java.io.InputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class SimpleDownLoadAction extends ActionSupport {
private String filename;
public String getFilename() {
  return filename;
}
public void setFilename(String filename) {
  this.filename = filename;
}
// 定义了返回InputStream的方法,该方法作为被下载文件的入口
public InputStream getDownloadFile() {
  // 获取下载文件名称
  String filename = ServletActionContext.getRequest().getParameter(
    "filename");
  // 定义下载文件路径
  String filePath = "/upload/" + filename;
  // 返回一个流对象
  return ServletActionContext.getServletContext().getResourceAsStream(
    filePath);
}
}

3.编写配置文件信息
在这里插入图片描述
4.运行项目并查看结果
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值