#java web#文件下载时需向后台传递大量参数
来源:互联网 发布:淘宝达人资历怎么写 编辑:程序博客网 时间:2024/06/11 20:30
今天写的一个下载功能发现了一个问题:
这个下载的功能是将前台获取的数据传递到后台之后下载成excel文件,我就写了一个方法:
window.location.href = $("#basePath").val() + "purPlan/exportDetail.do?details="+ encodeURI(JSON.stringify(details));
其中details就是要传递的数据,我把它编码之后传到后台进行处理。
本来数据量不大的时候是没有问题的,然后写了几百条数据进去了之后下载就出现问题了。点击下载一直未响应。
百度之后发现:通过url传递数据使用的是get方式,是有大小限制的。很多文章都说GET方式提交的数据最多只能是1024字节。
而实际上,URL不存在参数上限的问题,HTTP协议规范也没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE对URL长度的限制是2083字节(2K+35字节)。对于其他浏览器,如FireFox,Netscape等,则没有长度限制,这个时候其限制取决于服务器的操作系统。即如果url太长,服务器可能会因为安全方面的设置从而拒绝请求或者发生不完整的数据请求。
而使用post传递数据理论上是没有限制的。
所以,在url中传递数据,如果传递的数据过多,就可能会发生错误。
因此直接在下载的url中传递大量数据是不可行的。
所以我做了如下修改:
//前台$.ajax({ url : "purPlan/postDetailsData.do", type : "post", dataType : "json", data : { details : JSON.stringify(details) }, success : function(data){ if(data && data.success){ window.location.href = $("#basePath").val() + "purPlan/exportDetail.do"; }else{ $.dialog.alert("出现问题!"); } }});//后台@RequestMapping("/postDetailsData.do") public void postDetailsData(HttpServletRequest request,HttpServletResponse response,HttpSession session,String details){ session.setAttribute("details", details); this.writeJson(response, new AjaxMsg(true,"传递数据成功"));}@RequestMapping(value = "/exportDetail.do")public void exportDetail(HttpServletRequest request,HttpServletResponse response,HttpSession session) throws Exception{ String details = (String) session.getAttribute("details"); //将明细字符串转化为fmodel List<FPurPlanDetail> detailList = JsonParse.getList(details , FPurPlanDetail.class); ExportHelp.compatibleFileName(request, response, "物资导出"); PurPlanExport.exportExcel(response,detailList);}
先使用ajax的post方式将数据传送到后台,将数据保存到session中,在访问下载数据的url,从session中获取数据然后进行处理、下载。这样可以避免出现问题。
阅读全文
0 0
- #java web#文件下载时需向后台传递大量参数
- LinkButton向后台传递参数
- Uploadify从前台向后台传递参数
- 前台jsp向后台java文件传递数据的方法
- javascript向后台传递中文参数乱码
- jquery ajax 向后台传递数组参数
- ajax向后台传递参数的方式
- ajax向后台传递数组参数
- ajax向后台传递“复合json”参数
- 用dwr 向后台传递java对象
- 前台向后台传递参数时,特殊字符(+、-)丢失的问题
- JSP向后台传递参数的四种方式
- jquery ajax 向后台传递数组参数示例
- springmvc Jsp页面向后台传递中文参数乱码问题
- 前台向后台传递中文参数,防止乱码
- jquery ajax 向后台传递数组参数示例
- 【.Net码农】jquery ajax 向后台传递数组参数示例
- spring mvc 前台向后台传递参数方法总结
- centos7 Qt5.9.1 使用opencv
- bootstrap fileinput + springMVC 简单示例
- 测试开发基本上的学历路线
- Unity3d调用android中的方法
- Eclipse集成反编译工具
- #java web#文件下载时需向后台传递大量参数
- C/C++编译的程序占用的内存
- Linux 使用su
- sourceInsight彻底重装
- Marvell交换机开发资料收集
- 自定义属性引入layout获取不到resourceId的问题
- Queue CodeForces
- Android 双击退出
- eclipse Theme.AppCompat 问题