ssh框架之struts2文件下载功能代码

简介: 版权声明:本文为博主原创文章,如需转载,请标明出处。 https://blog.csdn.net/alan_liuyue/article/details/72764335 一、前言   上一篇博客我们了解了ssh框架的springmvc的文件下载功能,它在方法里面并不需要设置返回的http的类型和标题,但也能自动弹出下载框,这就是框架本身的一个优点,封装了原生java的方法。
版权声明:本文为博主原创文章,如需转载,请标明出处。 https://blog.csdn.net/alan_liuyue/article/details/72764335

一、前言
  上一篇博客我们了解了ssh框架的springmvc的文件下载功能,它在方法里面并不需要设置返回的http的类型和标题,但也能自动弹出下载框,这就是框架本身的一个优点,封装了原生java的方法。
  不同框架的对文件下载的方式也不尽相同,那么,今天我们将重点放在ssh中的struts2的文件下载方式,直接切入主题:
  
二、实例

  1. xml配置

    <!-- action的type设置成stream,inputName为方法内部的输入流名称,xml会自动识别 -->
    <action name="download_*" class="downloadAction" method="{1}">  
        <result name="downloadfile" type="stream">   <!--定义返回值为流-->
            <param name="contentType">image/jpeg</param>  <!--返回文件类型-->
            <param name="inputName">inputStream</param>  <!--方法内部使用的流的名称-->
            <!--文件下载的处理方式--> 
            <param name="contentDisposition">attachment;filename="${fileName}"</param>    
            <param name="bufferSize">2048</param>  <!--下载缓冲区的大小-->
        </result> 
        <result name="error">error.jsp</result> 
    </action>   

    <!--参数说明:
        1、type 需设置成 stream ,表明该返回值为流

        2、contentType

           内容类型,和互联网MIME标准中的规定类型一致,例如application/vnd.ms-excel代表excel表格,
           text/plain代表纯文本,text/xml表示XML,image/gif代表GIF图片,image/jpeg代表JPG图片;
           如果不写,则会匹配所有的文件,也就是所有的文件都可以下载;

        3、inputName

          下载文件的来源流,对应着action类中某个类型为Inputstream的属性名,
            例如取值为inputStream的属性需要编写getInputStream()方法

        4、contentDisposition

          文件下载的处理方式,包括内联(inline)和附件(attachment)两种方式,而附件方式会弹出文件保存对话框,
            否则浏览器会尝试直接显示文件。取值为:attachment;filename="test.jpg",表示文件下载的时候保存
            的名字应为test.jpg。如果直接写filename="test.jpg",那么默认情况是代表inline,浏览器会尝试
            自动打开它,等价于这样的写法:inline;filename="test.jpg"

        5、bufferSize

          下载缓冲区的大小,默认为1024字节,可自行定义
    -->

  2.方法实例

    //从前台获取的文件名(包括文件格式,例如"test.jpg")
    private String fileName;  

    //定义输入流,名称和xml里面的<param name="inputName">的名称一样
    private InputStream inputStream;  

    //定义好set和get方法,可自动获取匹配
    public String getFileName() {
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }

    public InputStream getInputStream() {
        return inputStream;
    }

    public void setInputStream(InputStream inputStream) {
        this.inputStream = inputStream;
    }

    //返回时xml会根据输入流名称,识别方法内部的输入流
    public String qtDownloadFile() throws FileNotFoundException{

        //获取需要下载的文件的相对文件夹路径
        String basePath = ServletActionContext.getServletContext().getRealPath("/file");

        //根据文件夹路径和文件名,创建file文件
        File file = new File(basePath,fileName); 

        //用输入流读取文件
        inputStream = new FileInputStream(file);    

        return "downloadfile";  //返回的是xml的对应的action的名称
    }

三、总结

  1.ssh框架的文件下载功能也比较容易实现,在controller层使用的代码不多,就是将文件使用输入流读取就可以了,而需要特别注意的地方就是xml的配置,因为struts2的返回文件下载处理方式基本是交给了xml去控制,将文件下载的xml的基本配置搞明白了之后基本上也就没什么难度了;

  2.实践是检验认识真理性的唯一标准,根据代码和注释多进行尝试,则很快就会明白其中的原理

上一篇:ssh框架之springmvc文件下载功能代码

下一篇:jfinal框架文件下载功能代码

相关文章
|
27天前
|
Java 数据库连接 数据库
让星星⭐月亮告诉你,SSH框架01、Spring概述
Spring是一个轻量级的Java开发框架,旨在简化企业级应用开发。它通过IoC(控制反转)和DI(依赖注入)降低组件间的耦合度,支持AOP(面向切面编程),简化事务管理和数据库操作,并能与多种第三方框架无缝集成,提供灵活的Web层支持,是开发高性能应用的理想选择。
35 1
|
5月前
|
分布式计算 Hadoop 网络安全
杨校老师课堂之集群内SSH免密登录功能配置
杨校老师课堂之集群内SSH免密登录功能配置
40 0
|
6月前
|
分布式计算 Hadoop Shell
使用shell脚本实现自动SSH互信功能
使用shell脚本实现自动SSH互信功能
86 1
|
29天前
|
安全 Shell 网络安全
设置 码云 SSH 推送和拉取代码
设置 码云 SSH 推送和拉取代码
66 0
|
3月前
|
安全 网络协议 Shell
Github代码仓库SSH配置流程
这篇文章是关于如何配置SSH以安全地连接到GitHub代码仓库的详细指南,包括使用一键脚本简化配置过程、生成SSH密钥对、添加密钥到SSH代理、将公钥添加到GitHub账户以及测试SSH连接的步骤。
68 0
Github代码仓库SSH配置流程
|
3月前
|
网络安全 开发工具 git
拉取 gitee 代码,配置SSH,Please make sure you have the correct access rights
拉取 gitee 代码,配置SSH,Please make sure you have the correct access rights
65 1
|
5月前
|
网络安全 数据安全/隐私保护
分布式系统详解--框架(Hadoop-Ssh免密登陆配置)
分布式系统详解--框架(Hadoop-Ssh免密登陆配置)
54 0
|
6月前
|
Java 数据库连接 网络安全
SSH 组合框架模式小知识分享
【5月更文挑战第4天】SSH 组合框架模式小知识分享
42 0
|
6月前
|
存储 Java API
入职之后发现代码居然是祖传代码肿么办?(SSH->微服务)
入职之后发现代码居然是祖传代码肿么办?(SSH->微服务)
|
4天前
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。

相关实验场景

更多
下一篇
无影云桌面