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文件下载”这个主题中,我们主要关注的是如何使用Struts2来实现文件的下载功能。这篇博客文章可能探讨了在Struts2环境下处理文件下载的步骤和技术。 在Struts2中,`DownloadAction.java`很可能是一个...
在这个“Struts2实现文件下载功能”的示例中,我们将深入探讨如何利用Struts2框架来实现在web应用中让用户下载文件的功能。 首先,我们需要理解文件下载的基本原理。在Web应用中,当用户点击一个链接或提交一个表单...
在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...
在这个“struts2文件下载实例”中,我们看到如何使用Struts2实现从数据库获取文件信息并在页面上展示,以及提供一个链接让用户能够下载这些文件。以下是对这个实例的详细解释: 1. **数据库操作**: - 首先,`Find...
在Struts2中处理文件下载是常见的需求,比如用户请求下载服务器上的文件,如PDF、图片或其他类型的文档。本案例"Struts2之struts012"将深入探讨如何在Struts2中实现文件下载的功能。 首先,我们需要创建一个Action...
在Struts2中,文件下载是常见的功能,尤其在处理用户请求获取服务器上的文件时。本示例提供了Struts2实现文件下载的源码,旨在帮助开发者快速理解和实现这一功能。 首先,我们需要理解Struts2文件下载的基本流程: ...
本篇文章将详细探讨如何在Struts2框架下实现文件的上传与下载。 首先,我们需要了解Struts2中的文件上传机制。Struts2提供了`FileUploadInterceptor`拦截器来处理文件上传请求。在处理文件上传时,开发者需要在...
struts2文件下载极其简单struts2文件下载极其简单struts2文件下载极其简单struts2文件下载极其简单
在Struts2中实现文件下载功能,可以为用户提供方便的数据传输服务,例如下载PDF、图片、文档等资源。本程序包含两种实现方式:动态下载和静态下载,下面将详细解释这两种方法。 1. 动态下载: 动态下载是通过...
总之,这个项目实例为使用Struts2和Uploadify实现带进度条的多文件上传及下载功能提供了一个基础模板,对于学习和实践此类功能的开发者来说是一个有价值的参考。通过深入研究和理解这个项目的代码,可以提升对Struts...
"struts2 jar"文件包含了Struts2框架的核心库,可能包括struts2-core、struts2-convention、struts2-json-plugin等依赖,这些是开发Struts2应用必不可少的组件。 "Struts2"可能是项目实例代码,包括Action类、视图...
从给定的文件信息来看,标题“struts2中文学习文档”和描述“struts2的根本webwork2”表明这是一份关于Struts2框架的学习资料,特别强调了Struts2与WebWork2的关系。Struts2是Apache Struts的一个版本,它是一个用于...
在Struts中实现文件下载是一项常见的功能,尤其在处理用户请求获取服务器上的静态或动态资源时。这篇博文将深入探讨如何在Struts框架下实现文件下载的功能。 首先,我们需要了解文件下载的基本原理。当用户点击下载...
在Struts2中,处理文件上传和下载是常见的需求。为了实现这一功能,开发人员通常需要依赖两个关键的第三方库:Apache Commons FileUpload和Apache Commons IO。 Apache Commons FileUpload是一个专门用于处理HTTP...
在Struts2中处理文件下载是常见的需求,尤其是在处理用户请求获取服务器上的静态资源或者上传文件的下载时。本资源包提供的源码详细演示了三种不同的文件下载方法。 1. **超链接下载** 超链接下载是最直观且简单的...
通过覆写StreamResult的方法 解决struts2文件下载点击取消服务器报错解
在下载并解压"struts2所有jar包"后,开发者需要将lib目录下的所有jar文件添加到项目构建路径中,确保运行时可以找到所有依赖。对于Maven或Gradle用户,可以通过在pom.xml或build.gradle文件中指定相应的依赖项,实现...