首先看一下界面
如图所示,通过勾选多选框实现选中,点击批量下载会将数据以Excel的格式批量下载到本地
关于勾选之后是传id数组还是传整个勾选的对象数组,先说结论:
应该传的是id数组而不是对象数组 原因如下:
1. 我们为什么不传id?因为我们不想查询数据库。
2. 但是不查询数据库说明我们所需要打印的数据在前端界面已经展示
完全了,
3. 界面展示完全的话。我们可以通过直接通过前端把数据导出成
Excel表格下载到本地
4. 故 我们一般选择通过id数组传递数据
结论是一回事,但是我两种都写了,传递id数组的方式比较简单。
传递id数组实现批量下载
传递对象数组实现批量下载
emmmmmm,选这种的和我一样都是狼灭
直接开始思路:
- 前端传什么给后端?
应该传Json字符串
[{“name”:“csq”,“sex”:“man”},
{“name”:“lll”,“sex”:“woman”}] - 后端的接收的相关问题
正常接收的话会报错。非法字符问题
java.lang.IllegalArgumentException:Invalid character found
in the request target. The valid characters are defined in
RFC 7230 and RFC 3986
翻译:非法数据异常:发现无效字符,有效的字符在RFC 7230和RFC 3986中定义
出现这个错误的原因是:我们在前后台交互的时候使用json格式的字段串参数,其中含有“{}”“[]”这些特舒符号,在高版本的tomcat(已知8版本以上报错,7貌似也报)中含有这些字符的请求会被拦截。
解决办法:
- 是修改springboot配置文件,降低tomcat版本
打开本地maven仓库springboot父依赖配置,路径如:D:\mavenRepository\org\springframework\boot\spring-boot-dependencies
打开2.1.4.RELEASE文件夹查看 spring-boot-dependencies-2.1.4.RELEASE.pom 里面的配置 搜索tomcat.version,显示<tomcat.version>9.0.17</tomcat.version>
把它改成8.5以下就可以了。但是不推荐,能用高版本就接着用呗,因此我采用方法二 - 在springboot中增加配置文件,交由spring工厂管理
@Configuration
public class TomcatConfig {
@Bean
public TomcatServletWebServerFactory webServerFactory() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.addConnectorCustomizers((Connector connector) -> {
connector.setProperty("relaxedPathChars", "\"<>[\\]^`{|}");
connector.setProperty("relaxedQueryChars", "\"<>[\\]^`{|}");
});
return factory;
}
}
1. 前端代码
我的前端使用的是layui
<div class="layui-fluid">
<div class="layui-row">
</div>
<button type="button" class="layui-btn" id="uploads">
<i class="layui-icon"></i>批量上传
</button>
<button type="button" class="layui-btn" id="download">
<i class="layui-icon"></i>批量下载
</button>
<!--table开始-->
<table id="guruTable" class="layui-table-cell" lay-filter