需求:在界面上选择一个日期,然后点击导出按钮,直接导出选择月份的考勤excel文件.

这篇文章主要是介绍如何下载文件!

jsp中代码:

<div class="form-group">
<label class="col-md-1 col-sm-1 control-label manage-lab">当前月份:</label>
<div class="col-md-2 col-sm-2 manage-wid manage-fat">
<input type="text" class="form-control" name="" id="selectMonth" readonly="readonly" onclick="WdatePicker({dateFmt: 'yyyy-MM', el:'selectMonth'})" placeholder="请选择日期" onchange="selectMonth_onchange()" >
</div>
<button class="btn manage-btn col-md-1 check-search" type="button" onclick="refreshAttendanceList()">
查询
</button> <input type="file" name="fileSelectName" id="fileSelect" onchange="uploadAction()" style="filter:alpha(opacity=0);opacity:0;width: 0;height: 0;"/>
<button class="btn manage-btn att-check-btn check-search" style="width: 130px;" type="button" onclick="importAction()">
导入打卡记录
</button> <!-- 假装点击 -->
<a id="export_a_id" href="${ctx}/oa/attendance/export.do?dateStirng=2015-12-21" >
<button class="btn manage-btn att-check-btn check-search" style="width: 130px;" type="button">
导出考勤
</button>
</a>
</div>

点击按钮的时候实际上是通过点击 <a href 去实现的.

在日期选择框中添加了onchange()事件

js代码:

/**
* 日期选择变化的时候,更新a标签里的超链接地址
* @returns
*/
function selectMonth_onchange() {
var dateString = $("#selectMonth").val();
var url = yyoa_context + '/oa/attendance/export.do?dateString=' + dateString;
var export_a = $("#export_a_id");
export_a.attr("href", url);
}

export.do 的 controller层代码, 目前这里只能用get方式,不能用post 方式.

    @ResponseBody
@RequestMapping(value = "/export", method = RequestMethod.GET)
public void export(String dateString, HttpServletRequest request, HttpServletResponse response) {
try {
Date date = null;
if (dateString.length() == 0) {
date = new Date();
} else if (dateString.length() < 10) {
dateString += "-01";
date = DateUtil.str2Date(dateString, DateUtil.DEFAULT_DATE_FORMAT);
}
String tmpDateString = DateUtil.date2Str(date, "yyyy-MM");
String fileName = tmpDateString + "-records" + ".xls";
String filePath = this.getClass().getClassLoader().getResource("tmp").getPath() + fileName; // 获取考勤数据
List<AttendanceExtend> attendanceExtends = this.attendanceService.selectAttendanceByDate(date);
// 得到excel对象
HSSFWorkbook workbook = this.attendanceService.setExportExcelTemplate(attendanceExtends);
// 写文件到服务器路径
FileOutputStream out = new FileOutputStream(filePath);
workbook.write(out);
out.flush();
out.close(); // 下载文件
response.setCharacterEncoding("utf-8");
response.setContentType("multipart/form-data");
response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);
InputStream inputStream = new FileInputStream(new File(filePath));
OutputStream os = response.getOutputStream();
byte[] b = new byte[2048];
int length;
while ((length = inputStream.read(b)) > 0) {
os.write(b, 0, length);
}
os.close();
inputStream.close();
} catch (Exception exception) {
}
}

这样就可以直接下载了.

jsp,jquery,spring mvc 实现导出文件的更多相关文章

  1. SSM框架中前端页面(AJAX+Jquery+spring mvc+bootstrap)

    前端新增页面的模态框,采用bootstarp建立.定义了empName,email,gender,depatName,四个属性的ID:其中保存按钮的ID:emp_save_btn,对应的点击函数如下: ...

  2. jsp与spring mvc后台controller间参数传递处理之总结

    在编程过程中,最容易出现问题及卡壳的地方,往往是各层之间接缝处,接缝处往往存在着各种各样的参数传递,数据转换和格式化,参数很好的传递并正确接收过来之后就是复杂逻辑之间的处理了,所以为了避免多种问题占用 ...

  3. JSP、Servlet和Spring MVC

    感谢原博主!!!https://blog.csdn.net/whut2010hj/article/details/80874008 版权声明:本文为博主原创文章,遵循CC 4.0 BY版权协议,转载请 ...

  4. Spring MVC教程——检视阅读

    Spring MVC教程--检视阅读 参考 Spring MVC教程--一点--蓝本 Spring MVC教程--c语言中午网--3.0版本太老了 Spring MVC教程--易百--4.0版本不是通 ...

  5. Spring MVC新手教程(二)

    第一篇文章宏观讲了Spring MVC概念,以及分享了一个高速入门的样例. 这篇文章主要来谈谈Spring MVC的配置文件. 首先来谈谈web.xml: web项目启动时自己主动载入到内存中的信息, ...

  6. Spring MVC概述

    Spring MVC框架是一个开源的Java平台,为开发强大的基于Java的Web应用程序提供全面的基础架构支持非常容易和非常快速. Spring框架最初由Rod Johnson撰写,并于2003年6 ...

  7. spring mvc: 多动作控制器(Controller下面实现多个访问的方法)MultiActionController / BeanNameUrlHandlerMapping

    spring mvc: 多动作控制器(Controller下面实现多个访问的方法) 比如我的控制器是UserController.java,下面有home, add, remove等多个方法 访问地址 ...

  8. Spring MVC Web.xml配置

    Web.xml spring&spring mvc 在web.xml中定义contextConfigLocation参数,Spring会使用这个参数去加载所有逗号分隔的xml文件,如果没有这个 ...

  9. Spring MVC例子

    学习Spring MVC的一个例子,参考书籍<Servlet.JSP.Spring MVC学习指南>,简单总结一下. 代码下载:https://github.com/PeiranZhang ...

随机推荐

  1. list、set、map区别

    list是有序且重复的; list中的数据都是按照写入的顺序排列的,存入list的数据用add方法写入; list可以用循环遍历list以达到获取全部数据的目的,同时也可以通过下标get(index) ...

  2. 何为代理?jdk动态代理与cglib代理、spring Aop代理原理浅析

    原创声明:本博客来源为本人原创作品,绝非他处摘取,转摘请联系博主 代理(proxy)的定义:为某对象提供代理服务,拥有操作代理对象的功能,在某些情况下,当客户不想或者不能直接引用另一个对象,而代理对象 ...

  3. JavaScript中undefined 和not defined

    首先呢,我们来介绍undefined,xx is not defined的区别 (创建一个html文件,在头部编写JavaScript代码) 我们先编写如下代码: <script type=&q ...

  4. 腾讯QQAndroid API调用实例(QQ分享无需登录)

    腾讯QQAndroid API调用实例(QQ分享无需登录)   主要分为两个步骤: 配置Androidmanifest.xml 修改activity里边代码 具体修改如下:   1.Activity代 ...

  5. Could not find a valid gem 'compass' (>= 0) in any repository compass安装失败解决方案

    安装完成ruby gem 之后,通过 gem install compass 安装compass~~ 出现如下报错 Could not find a valid gem 'compass' (> ...

  6. 深入浅出SOA

    前一阵换了份工作,来到新公司,恰好新同事问起SOA是什么,我随口说了几点,其实自己以前研究过,不过并没有详细的整理过,说的比较模糊,恰好周末,拿出点时间整理下以前对SOA的认知. SOA是什么?SOA ...

  7. mongodb新人扫盲

    前言 数据库基本命令 集合(表)命令 增加数据 删除数据 更新数据 使用update()更新 使用save()命令实现upsert 自动更新信息 查询数据 mongoose的使用 前言 mongodb ...

  8. 也许是目前实现最好的js模拟滚动插件

    finger-mover 是一个集成 Fingerd(移动端以手指为单位的事件管理方案) 和 Moved(微型运动方案) 为一体的移动端动效平台,finger-mover 本身并不能为你做什么,但是附 ...

  9. 【JAVAWEB学习笔记】11_XML&反射

    解析XML总结(SAX.Pull.Dom三种方式) 图一 XML的解析方式 图二 XML的Schema的约束 反射的简单介绍: 反射 1.什么是反射技术? 动态获取指定类以及类中的内容(成员),并运行 ...

  10. Spark实战之读写HBase

    1 配置 1.1 开发环境: HBase:hbase-1.0.0-cdh5.4.5.tar.gz Hadoop:hadoop-2.6.0-cdh5.4.5.tar.gz ZooKeeper:zooke ...