当前位置:首页 > 开发 > 编程语言 > Struts2 > 正文

Struts2文件下载

发表于: 2013-10-16   作者:ak23173969   来源:转载   浏览次数:
摘要: struts2实现文件下载需求三个步骤 1 配置对应的jsp,通过链接传递参数 2 第二配置struts配置文件 3 配置相应的action   JXLUtil.getSentMsgTotaldBox_Result() 返回的是excel文件的临时存储目录,将数据中取出来的信息写成excel文件,然后保存在我指定的路径下,再将文件存储的相对路径告诉struts,放到输入流里去,

struts2实现文件下载需求三个步骤

1 配置对应的jsp,通过链接传递参数

2 第二配置struts配置文件

3 配置相应的action

 

JXLUtil.getSentMsgTotaldBox_Result() 返回的是excel文件的临时存储目录,将数据中取出来的信息写成excel文件,然后保存在我指定的路径下,再将文件存储的相对路径告诉struts,放到输入流里去,由浏览器(客户端)去执行下载,读出字节流中的文件

 

jsp  因为是通过链接的方式,所以属于get提交,参数必须绑定在链接上

<input type="button"  value="下载结果"  onclick="down_TotalMsg_result()" />

 

/**
* 下载短信记录excel文件
*/
function down_TotalMsg_result(){
	
	if(!check_time()){
		return ;
	}else{
		var time1=$("#time1").val();
		var time2=$("#time2").val();
		var time3=$("#time3").val();
		var time4=$("#time4").val();
		var time5=$("#time5").val();
		var time6=$("#time6").val();
		var content=$("#content").val();
		var tel=$("#tel").val();
		var agency=$("#agency").val();
		var channelname=$("#channelname").val();
		var nstate=$("#nstate").val();
		
		window.location.href="/smsCore/sendMsgSerach_down.action?fileName=sendTotalResult&&sentTime1="
		+time3+"&&sentTime2="+time4+"&&subTime1="+time1+"&&subTime2="+time2+"&&reportTime1="+time5+"&&reportTime2="+time6+
		"&&content="+content+"&&tel="+tel+"&&agency="+agency+"&&channelname="+channelname+"&&nsate="+nstate;
	}
	
}

 

 

struts.xml

 

		<action name="sendMsgSerach_*" class="com.kjkj.ema.view.action.SendMsgSerachAction" method="{1}">
			<result>/WEB-INF/page/statistics/sendMsgSerach.jsp</result>
				<result name="tofactorsuccess">/WEB-INF/page/factor/tofactorySentMsgDetails.jsp</result>
				<result name="excel" type="stream">
					 <!--<param name="directory">D:/download/</param>-->   
				可以通配置文件注入下载文件的目标目录,只需要在action中提供相应的

					<param name="contentType">application/vnd.ms-excel</param>
					<param name="contentDisposition">filename="${fileName}.xls"</param>
					<param name="inputName">inputStream</param>
					 <param name="bufferSize">4096</param>
				</result>
			</action>

 

 

 

action

 

package com.kjkj.ema.view.action;

import java.io.FileInputStream;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.apache.struts2.ServletActionContext;

import com.kjkj.ema.domain.Smsreport;
import com.kjkj.ema.domain.User;
import com.kjkj.ema.pager.Pager;
import com.kjkj.ema.pager.SmsreportQuery;
import com.kjkj.ema.service.SmsreportService;
import com.kjkj.ema.service.UserService;
import com.kjkj.ema.utils.CommonUtils;
import com.kjkj.ema.utils.JXLUtil;


@SuppressWarnings("serial")
public class SendMsgSerachAction extends BaseAction{
	private SmsreportQuery baseQuery = new SmsreportQuery();
	private Pager<Smsreport> pager = null;
	private Long id;
	private Integer tag;
	private SmsreportService smsreportService;
	private UserService userService;
	private String fileName;
	private String content;
	private String tel;
	private String agency;
	private String channelname;
	private String nsate;
	private String sentTime1;
	private String sentTime2;
	private String subTime1;
	private String subTime2;
	private String reportTime1;
	private String reportTime2;
	
	
	/**下载数据*/
	public String down(){
		return "excel";
	}

	public InputStream getInputStream() throws Exception {
		System.out.println("进来");
		if(StringUtils.isNotBlank(subTime1)&&StringUtils.isNotBlank(subTime2)){
			StringBuilder bs=new StringBuilder();
			bs.append(subTime1).append(" 00:01");
			SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd");
			Date da=f.parse(bs.toString());
			baseQuery.setSubmittimeStart(da);
			bs.delete(0, bs.length());
			bs.append(subTime1).append(" 00:01");
		    da=f.parse(bs.toString());
			baseQuery.setSubmittimeEnd(da);
		}
		if(StringUtils.isNotBlank(sentTime1)&&StringUtils.isNotBlank(sentTime2)){
			StringBuilder bs=new StringBuilder();
			bs.append(sentTime1).append(" 00:01");
			SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd");
			Date da=f.parse(bs.toString());
			baseQuery.setSendtimeStart(da);
			bs.delete(0, bs.length());
			bs.append(sentTime2).append(" 00:01");
			da=f.parse(bs.toString());
			baseQuery.setSendtimeEnd(da);
		}
		if(StringUtils.isNotBlank(reportTime1)&&StringUtils.isNotBlank(reportTime2)){
			StringBuilder bs=new StringBuilder();
			bs.append(reportTime1).append(" 00:01");
			SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd");
			Date da=f.parse(bs.toString());
			baseQuery.setReporttimeStart(da);
			bs.delete(0, bs.length());
			bs.append(reportTime2).append(" 00:01");
			da=f.parse(bs.toString());
			baseQuery.setReporttimeEnd(da);
		}
		if(StringUtils.isNotBlank(content)){
			baseQuery.setContent(content);
		}
		if(StringUtils.isNotBlank(agency))
		{	
			baseQuery.setAgency(agency);
		}
		if(StringUtils.isNotBlank(channelname)){
			baseQuery.setChannel(channelname);
		}
		if(StringUtils.isNotBlank(tel))
		{	baseQuery.setTel(tel);
		}
		if(-1!=Integer.parseInt(nsate)){
			baseQuery.setNstate(Integer.parseInt(nsate));
		}
		baseQuery.setPageSize(10000);
		
		String filepath = ServletActionContext.getServletContext().getRealPath(
				"/dowonload");
		Pager<Smsreport> pager=smsreportService.findGager2(baseQuery);
		
		filepath=JXLUtil.getSentMsgTotaldBox_Result(filepath,pager.getPageList());
 		
		return new FileInputStream(filepath);
	}
	

	get  and set  在此处省略

}

 

 

 

 

Struts2文件下载

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
Struts2文件下载 目录: struts.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE
首先先来说下关于文件下载的原理: 服务端为客户端提供了一个下载服务,所以服务端需要一个输出流(
转载: http://www.blogjava.net/lishunli/archive/2010/01/07/308614.html#_Toc246867271 Struts2
Struts2文件上传与下载 1. 文件上传的原理: 表单元素的 enctype 属性指定的是表单数据的编码方式,
【Java EE】struts2文件的上传和下载 (一)从底层透析文件上传的实现,此时并没有介入struts2 1、u
Struts2下多文件的上传与下载 目录 关键词... 1 写在前面... 1 需求... 1 环境... 2 目录结构... 3
Googel 标签: 多文件 ; 上传 ; 下载 ; 随意文件 ; java ; Struts2 ; 单例 ; 配置 ; 动态读取 ; 李顺
Struts2 文件的上传和下载 ++YONG 原创,转载请注明 1. 文件上传的原理: 表单元素的 enctype 属性
在BlogJava上已经有一位作者阐述了文件上传的问题,地址是在Struts 2中实现文件上传 ,因此我就不再
本文主要写的是struts2 的文件上传与下载(中文文件名问题的解决)。 使用的时候直接在地址栏中输入
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号