javax.servlet.http.HttpServletResponse;API導入報錯解決方案與Postman上傳下載文件驗證
1. 主要錯誤:缺少
Servlet API 依賴
錯誤信息顯示 javax.servlet.http
包不存在。這是因為你的項目缺少 Servlet API 依賴。
解決方案:
如果你使用的是 Maven,在 pom.xml
中添加:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
如果你使用的是 Gradle,在 build.gradle
中添加:
implementation 'org.springframework.boot:spring-boot-starter-web'
2. 缺少的導入
在你的 CsvController.java
文件頂部添加缺少的導入:
import java.util.Map;
import java.util.HashMap;
3. 完整的修復后的導入部分應該是:
package com.example.usermanagement.controller;import com.example.usermanagement.common.Result;
import com.example.usermanagement.entity.User;
import com.example.usermanagement.service.UserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
4. 如果你使用的是 Spring Boot 3.x
Spring Boot 3.x 使用 Jakarta EE 而不是 Java EE,所以需要將 javax
改為 jakarta
:
// 將這行
import javax.servlet.http.HttpServletResponse;// 改為
import jakarta.servlet.http.HttpServletResponse;
5. 驗證步驟
- 添加依賴后,刷新/重新加載你的項目
- 如果使用 IntelliJ IDEA,點擊 Maven/Gradle 工具窗口的刷新按鈕
- 重新構建項目
1. 準備測試 CSV 文件
首先創建一個測試用的 CSV 文件(例如:test_users.csv
),內容格式如下:
ID,用戶名,密碼,郵箱,手機號,狀態,分數,創建時間,更新時間
1,testuser1,password123,test1@example.com,13800138001,1,85,2025-01-01 10:00:00,2025-01-01 10:00:00
2,testuser2,password456,test2@example.com,13800138002,1,90,2025-01-01 11:00:00,2025-01-01 11:00:00
3,newuser1,password789,new1@example.com,13800138003,1,75,2025-01-01 12:00:00,2025-01-01 12:00:00
2. Postman 設置步驟
步驟 1:創建新請求
- 打開 Postman
- 點擊 “New” → “Request”
- 設置請求方法為 POST
- URL 設置為:
http://localhost:8080/api/csv/import
步驟 2:設置請求體
- 選擇 Body 標簽
- 選擇 form-data 選項
- 添加一個鍵值對:
- Key:
file
(注意要與代碼中的@RequestParam("file")
保持一致) - 在 Key 右側的下拉菜單中選擇 File(而不是 Text)
- Value:點擊 “Select Files” 選擇你準備好的 CSV 文件
- Key:
步驟 3:發送請求
點擊 “Send” 按鈕發送請求
3. 預期響應
成功導入后,你應該收到類似這樣的響應:
{"code": 200,"message": "成功","data": {"successCount": 3,"errorCount": 0,"errors": []}
}
4. 測試不同場景
測試場景 1:正常導入
使用上面的標準 CSV 文件
測試場景 2:更新現有用戶
創建一個包含已存在用戶名的 CSV:
ID,用戶名,密碼,郵箱,手機號,狀態,分數,創建時間,更新時間
1,testuser1,newpassword,newemail@example.com,13900139001,1,95,2025-01-01 10:00:00,2025-01-01 10:00:00
測試場景 3:錯誤數據
測試包含錯誤數據的 CSV:
ID,用戶名,密碼,郵箱,手機號,狀態,分數,創建時間,更新時間
1,testuser1,password123,test1@example.com,13800138001,1,abc,2025-01-01 10:00:00,2025-01-01 10:00:00
2,testuser2,password456,test2@example.com,13800138002
預期響應會包含錯誤信息:
{"code": 200,"message": "成功","data": {"successCount": 0,"errorCount": 2,"errors": ["第2行:For input string: \"abc\"","第3行:字段不足"]}
}
5. Postman 截圖說明
在 Postman 中應該是這樣的:
POST http://localhost:8080/api/csv/importBody:
[x] form-dataKEY VALUEfile [Select Files] test_users.csv
6. 注意事項
- 確保文件編碼是 UTF-8
- CSV 文件的第一行必須是表頭(會被跳過)
- 用戶名字段用于判斷是更新還是新增
- 狀態和分數字段必須是數字
- 日期格式必須匹配代碼中的格式