jsp,jquery,spring mvc 实现导出文件
需求:在界面上选择一个日期,然后点击导出按钮,直接导出选择月份的考勤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 实现导出文件的更多相关文章
- SSM框架中前端页面(AJAX+Jquery+spring mvc+bootstrap)
前端新增页面的模态框,采用bootstarp建立.定义了empName,email,gender,depatName,四个属性的ID:其中保存按钮的ID:emp_save_btn,对应的点击函数如下: ...
- jsp与spring mvc后台controller间参数传递处理之总结
在编程过程中,最容易出现问题及卡壳的地方,往往是各层之间接缝处,接缝处往往存在着各种各样的参数传递,数据转换和格式化,参数很好的传递并正确接收过来之后就是复杂逻辑之间的处理了,所以为了避免多种问题占用 ...
- JSP、Servlet和Spring MVC
感谢原博主!!!https://blog.csdn.net/whut2010hj/article/details/80874008 版权声明:本文为博主原创文章,遵循CC 4.0 BY版权协议,转载请 ...
- Spring MVC教程——检视阅读
Spring MVC教程--检视阅读 参考 Spring MVC教程--一点--蓝本 Spring MVC教程--c语言中午网--3.0版本太老了 Spring MVC教程--易百--4.0版本不是通 ...
- Spring MVC新手教程(二)
第一篇文章宏观讲了Spring MVC概念,以及分享了一个高速入门的样例. 这篇文章主要来谈谈Spring MVC的配置文件. 首先来谈谈web.xml: web项目启动时自己主动载入到内存中的信息, ...
- Spring MVC概述
Spring MVC框架是一个开源的Java平台,为开发强大的基于Java的Web应用程序提供全面的基础架构支持非常容易和非常快速. Spring框架最初由Rod Johnson撰写,并于2003年6 ...
- spring mvc: 多动作控制器(Controller下面实现多个访问的方法)MultiActionController / BeanNameUrlHandlerMapping
spring mvc: 多动作控制器(Controller下面实现多个访问的方法) 比如我的控制器是UserController.java,下面有home, add, remove等多个方法 访问地址 ...
- Spring MVC Web.xml配置
Web.xml spring&spring mvc 在web.xml中定义contextConfigLocation参数,Spring会使用这个参数去加载所有逗号分隔的xml文件,如果没有这个 ...
- Spring MVC例子
学习Spring MVC的一个例子,参考书籍<Servlet.JSP.Spring MVC学习指南>,简单总结一下. 代码下载:https://github.com/PeiranZhang ...
随机推荐
- C#代码将html样式文件转为Word文档
首先有个这样的需求,将以下网页内容下载为Word文件. html代码: <div class="modal-body"> <div style=" ...
- win7下安装memcached出现failed to install service or service already installed解决办法
安装memcached时总是提示“failed to install service or service already installed”,开始以为是版本问题,就下了好几个不同版本,可还是老问题 ...
- HTML5的article和section的区别
内容区块是指将HTML页面按逻辑分割后的单位.对于页面网站来说,导航菜单.文章正文.文章的评论等每一个部分都可称为内容区块. article元素 article元素代表文档.页面或 ...
- Android RoboGuice 使用指南
1.概述 在开发应用时一个基本原则是模块化,并且近最大可能性地降低模块之间的耦合性.在Java平台上Spring Framework 以及.Net 平台 CAB ,SCSF 和Prism (WPF,S ...
- Telegram学习解析系列(一):认识一下Telegram的源码
前言: Telegram不知道有多少同行听过这玩意,或者在看它的源码.我是出于工作原因才接触到这东西,看的真是的......变方了!一个月估计刚刚找到门,还没进去多深,把自己的心得和对源码的认识以及我 ...
- Rxjava学习小记
最近同事离职,接了个锅,里面的代码都是RxJava的味道,逼的自己不得不学习一波.看了网上的很多入门篇的博客,写的很不错.链接奉上: [Android]RxJava的使用(三)转换--map.flat ...
- JS立即执行函数表达式(IIFE)
原文为 http://benalman.com/news/2010/11/immediately-invoked-function-expression/#iife ----------------- ...
- MyEclipse2016添加外部的maven插件
1.在maven官网下载最新的maven安装包,下载地址:http://maven.apache.org/download.cgi: 2.目前maven的版本是3.5.0,我们下载apache-mav ...
- jQuery.validate表单校验+bootstrap
谈谈表单校验 这大概是一种惯例,学习前台后台最开始接触的业务都是用户注册和登录.现在社会坚持以人为本的理念,在网站开发过程同样如此.User是我们面对较多的对象,也是较核心的对象.最开始的用户注册和登 ...
- Day5模块-random模块
random:随机数 >>> import random>>> print(random.random()) #生成随机小数0.6906362176182085 & ...