需求:在界面上选择一个日期,然后点击导出按钮,直接导出选择月份的考勤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. java构造代码块,构造函数和普通函数的区别和调用时间

    在这里我们谈论一下构造代码块,构造函数和普通函数的区别和调用时间.构造代码块:最早运行,比构造函数运行的时间好要提前,和构造函数一样,只在对象初始化的时候运行.构造函数:运行时间比构造代码块时间晚,也 ...

  2. HashMap 学习笔记

    先摆上JDK1.8中HashMap的类注释:我翻译了一下 /** * Hash table based implementation of the <tt>Map</tt> i ...

  3. 表单提交音乐文件(php)

    利用点空闲时间来写个博客,最近做的项目中需要表单提交音频的,图片的,各种类型,把它存到数据库里,这里先来说一下音乐文件的表单提交吧,后几天再来更新输入数据库的,先看一下效果 点击浏览 就会出来预览,点 ...

  4. hdu5145 NPY and girls

    人生中第一道莫队,本来以为是一道水题的.. 首先这题只有区间查询,没有修改操作,使用莫队比较明显,但统计答案有点麻烦.. 根据题意,在n个人里选m个不相同种类的人,设第i种人数量为ai,总方案为c(n ...

  5. [进程管理]Load和CPU利用率是如何算出来的

    本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://www.penglixun.com/tech/system/how_to_ca ...

  6. Less与Sass

    less 1.变量    声明变量:@变量名:变量值 使用变量:@变量名 >>>Less中变量的类型 ①数字类:1 100px ②字符串:无引号字符串[red] 有引号字符串[&qu ...

  7. Hush Framework框架配置

    在写这篇文章的时候,楼主已经饿的不行了,因为我从3点开始就在折腾Hush Framework,走了很多弯路,打铁要趁热,先把基本的过程记录下来,留待以后翻阅,同时记录其中容易走弯路的地方,特别是对于一 ...

  8. 'k1': 大于66的所有值, 'k2': 小于66的所有值

    #!/usr/bin/env python # -*- coding: utf-8 -*- #有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值 ...

  9. 中美HTML5市场发展的简单对比

    1. HTML5的中美发展与应用对比 2014年下半年,HTML5在中国火了.个人用它开展自媒体,散播鸡汤:广告公司靠它做市场营销,从中获利:还有大公司的广告部.企业新媒体部或转型的媒体,利用它进行各 ...

  10. Mirantis MCP 1.0:OpenStack 和 Kubernetes 整合的第一步

    1.前言 Mirantis 公司在2014年9月14日宣布收购 TCPCloud,然后宣布在2017年第一季度会推出全新的私有云产品.从那时候开始,我就一直满怀期待.终于,今年4月19日,Mirant ...