• [JavaWeb基础] 010.Struts2 下载文件


    在web开发中,我们经常会有文件的上传下载功能,上一篇的介绍中我们讲解了上传功能,那么这次我们来讲讲下载功能

    1.首先我们需要有一个用于处理下载的测试页面,也就是jsp

      <body>
          <h2>文件下载内容:</h2>
          <br/>
          通讯录.xls:<a href="FileDownload.action">点击下载</a><br/>
      </body>
    

    2.我们只需要编写最简单的测试代码,那么后面我们就需要有一个接收请求的Action,(需要注意文件名称中文乱码的处理)

    package com.babybus.sdteam.action;
    
    import java.io.InputStream;
    
    
    import org.apache.struts2.ServletActionContext;
    
    
    import com.opensymphony.xwork2.ActionSupport;
    
    // 文件下载
    public class FileDownloadAction extends ActionSupport{
    	
    	private int number ;
    
    	private String fileName;
    
    	public int getNumber() {
    		return number;
    	}
    
    	public void setNumber(int number) {
    		this.number = number;
    	}
    	
    	public String getFileName() {
    		return fileName;
    	}
    
    	public void setFileName(String fileName) {
    		this.fileName = fileName;
    	}
    
    	// 返回一个输入流,作为一个客户端来说是一个输入流,但对于服务器端是一个 输出流
    	public InputStream getDownloadFile() throws Exception
    	{
    		this.fileName = "通讯录.xls" ;
    		// 解解乱码
    		this.fileName = new String(this.fileName.getBytes("GBK"),"ISO-8859-1");
    		return ServletActionContext.getServletContext().getResourceAsStream("upload/通讯录.xls") ;
    	}
    	
    	@Override
    	public String execute() throws Exception {
    		
    		return SUCCESS;
    	}
    
    }
    

    3.最后我们需要配置一个struts.xml.需要注意以下几项

      1)结果类型必须要写成 type="stream"  ,与之对应的处理类是 org.apache.struts2.dispatcher.StreamResult

      2)<param name="contentDisposition">attachment;fileName="${fileName}"</param>  contentDisposition默认是 inline(内联的), 比如说下载的文件是文本类型的,就直接在网页上打开,不能直接打开的才会打开下载框自己选择

      3)attachment:下载时会打开下载框

      4)fileName="${fileName}":在这定义的名字是一个动态的,该名字是显示在下载框上的文件名字

      5)<param name="inputName">downloadFile</param>,这个downloadFile名字要和FileDownloadAction.java类中的getDownloadFile()方法名去掉get 一样

    <action name="FileDownload" class="com.babybus.sdteam.action.FileDownloadAction">
        <result name="success" type="stream">
            <param name="contentType">text/plain</param>
            <param name="contentDisposition">attachment;fileName="${fileName}"</param>
            <param name="inputName">downloadFile</param>
            <param name="bufferSize">1024</param>
        </result>
    </action>
    

    配置完成后我们就实现了Struts2的简单文件下载功能。

    结语

    • 受益,掌握了Struts2 下载文件

     

    本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 

    转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4718695.html

     

     

  • 相关阅读:
    Double 四舍五入保留小数
    QQ在线人数统计图数据解析
    Errors running builder 'Android Resource Manager' on project 'DeskClock'.
    批处理脚本学习笔记——程序猿版
    BZOJ 1002: [FJOI2007]轮状病毒
    《逆袭大学——传给IT学子的正能量》文件夹
    webservice 开发规范
    webservice面试题
    jdbc连接oracle数据库问题
    jdbc连接 orale 和 mysql 所需要的jar包
  • 原文地址:https://www.cnblogs.com/superdo/p/4718695.html
Copyright © 2020-2023  润新知