springboot浏览器下载集合
时间: 2025-06-15 08:37:34 浏览: 15
### Spring Boot 实现浏览器端导出或下载集合数据
在Spring Boot中实现从浏览器下载集合数据的功能,通常可以通过将集合中的数据写入到文件(如CSV、Excel等),并将该文件作为响应返回给客户端来完成。以下是基于EasyExcel库的一个具体示例。
#### 依赖引入
首先,在`pom.xml`中添加所需的依赖:
```xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.5</version>
</dependency>
```
#### 数据模型定义
假设有一个简单的实体类表示要导出的数据结构:
```java
public class User {
private String name;
private Integer age;
// Getters and Setters
}
```
#### Excel模板配置
创建一个继承自`BaseRowModel`的类用于映射Excel列与字段的关系:
```java
import com.alibaba.excel.annotation.ExcelProperty;
public class UserModel extends BaseRowModel {
@ExcelProperty(value = "姓名", index = 0)
private String name;
@ExcelProperty(value = "年龄", index = 1)
private Integer age;
// Getters and Setters
}
```
#### 导出逻辑实现
编写控制器方法处理请求并生成Excel文件流供下载:
```java
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
@RestController
public class ExportController {
@GetMapping("/export")
public void export(HttpServletResponse response) throws IOException {
// 设置HTTP响应头信息
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
// 文件名编码防止中文乱码
String fileName = URLEncoder.encode("用户数据", "UTF-8").replaceAll("\\+", "%20");
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
// 准备模拟数据
List<User> userList = new ArrayList<>();
userList.add(new User("张三", 25));
userList.add(new User("李四", 30));
// 调用工具类进行写操作
EasyExcel.write(response.getOutputStream(), UserModel.class).sheet("Sheet1").doWrite(convert(userList));
}
/**
* 将User转换为对应的Excel Model对象
*/
private static List<UserModel> convert(List<User> list){
List<UserModel> result = new ArrayList<>(list.size());
for (User user : list) {
UserModel userModel = new UserModel();
userModel.setName(user.getName());
userModel.setAge(user.getAge());
result.add(userModel);
}
return result;
}
}
```
上述代码实现了通过GET请求访问`/export`接口触发Excel文件下载功能[^1]。
#### 注意事项
- `response.setContentType()`设置正确的MIME类型以便浏览器识别这是个可下载资源。
- 使用`URLEncoder.encode()`对文件名称进行URL编码避免因特殊字符引起错误。
- 如果涉及大量数据,则需考虑分页或者异步方式减少内存占用。
---
阅读全文
相关推荐


















