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 ...
随机推荐
- java类集框架(ArrayList,LinkedList,Vector区别)
主要分两个接口:collection和Map 主要分三类:集合(set).列表(List).映射(Map)1.集合:没有重复对象,没有特定排序方式2.列表:对象按索引位置排序,可以有重复对象3.映射: ...
- LINQ TO XML初步了解
最近简单的学习了一下LINT TO XML,写篇博客在这,方便以后查看~~ 1.常用到的类 XmlDocument -- 文档(xml文件) XmlElement -- ...
- C语言学习第九章
学习C语言的最后一节课了,原因嘛上一章的末尾说过了,其实写这篇博客的时候以后开始学习Java一个多月了,一直因为各种各样的原因没有坚持做到每天一篇学习记录,可能主要因为懒吧....也有点笨,Java的 ...
- EzHttp 使用Https协议时证书如何部署
今天为EzHttp增加了https支持, EzHttp介绍见这里:使用EzHttp框架 开发基于HTTP协议的CS轻应用 服务端启动时会创建自签名证书,并将其绑定到启动参数url对应的端口上. 服务端 ...
- 各种 SVG 制作单选和多选框动画
在线演示 源码下载
- (原创)看我用各种姿势在手机和PC查看到连接到的wifi密码
今天一个女神来我家做客,她问我WiFi密码,然而我却奇迹般的忘记了(特么的当时心里一万个草泥马踏过去),让我在她面前尴尬求子的,所以为了防止你们也出现这种情况,我特地把各种方法整理了一下,那么感兴趣的 ...
- 使用react native制作的微博客户端
简要说明: 因为微博授权权限设置,本人的微博开放者账号权限太低,如果出现 'api请求次数受限,请更换. 10023' 弹框 或者 授权界面出错,需要自行更换开放者应用的appkey,授权回调页,Ap ...
- 从性能角度看react组件拆分的重要性
React是一个UI层面的库,它采用虚拟DOM技术减少Javascript与真正DOM的交互,提升了前端性能:采用单向数据流机制,父组件通过props将数据传递给子组件,这样让数据流向一目了然.一旦组 ...
- node.js—express+ejs、express+swig、
安装:npm install -g express-generator 普通express 网站 创建:express testWeb 安装依赖:npm install 修改app.js文件并运行 找 ...
- jquery实现网页倒计时
在毕设作品考试模块要做个倒计时,当时间到时自动结束答题.于是在jQuery插件社区找到一个简洁明了的倒计时.先上效果图. 感谢作者hacker(这是黑客的意思么),贴上地址:http://www.jq ...