本文目录导读:

在Java Web开发中,接收前端参数有多种方式,具体取决于你使用的框架(如Servlet、Spring MVC、Spring Boot等),以下是几种常见场景的详细说明:
原生Servlet方式
获取普通参数
@WebServlet("/api/user")
public class UserServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
// 获取单个参数
String name = req.getParameter("name");
String age = req.getParameter("age");
// 获取多个同名参数(如checkbox)
String[] hobbies = req.getParameterValues("hobby");
// 获取所有参数名
Enumeration<String> paramNames = req.getParameterNames();
// 获取所有参数Map
Map<String, String[]> paramMap = req.getParameterMap();
}
}
获取JSON格式参数
// 需要读取请求体
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
// 方式1:读取流
StringBuilder sb = new StringBuilder();
String line;
BufferedReader reader = req.getReader();
while ((line = reader.readLine()) != null) {
sb.append(line);
}
String jsonStr = sb.toString();
// 方式2:使用工具类
String jsonBody = IOUtils.toString(req.getInputStream(), "UTF-8");
// 解析JSON(需要Jackson等库)
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(jsonBody, User.class);
}
Spring MVC / Spring Boot方式
1 @RequestParam - 获取单个参数
@RestController
@RequestMapping("/api")
public class UserController {
// GET请求: /api/user?name=John&age=25
@GetMapping("/user")
public String getUser(@RequestParam("name") String name,
@RequestParam(value = "age", required = false) Integer age) {
return "Name: " + name + ", Age: " + age;
}
// 带默认值
@GetMapping("/search")
public String search(@RequestParam(defaultValue = "10") int page,
@RequestParam(defaultValue = "20") int size) {
return "Page: " + page + ", Size: " + size;
}
}
2 @PathVariable - 路径参数
// 请求: /api/users/123
@GetMapping("/users/{id}")
public User getUserById(@PathVariable("id") Long id) {
return userService.findById(id);
}
// 多个路径参数
@GetMapping("/users/{userId}/orders/{orderId}")
public String getOrder(@PathVariable Long userId, @PathVariable Long orderId) {
return "User: " + userId + ", Order: " + orderId;
}
3 @RequestBody - JSON参数
// 前端发JSON: {"name":"John","age":25,"email":"john@example.com"}
@PostMapping("/user")
public User createUser(@RequestBody User user) {
return userService.save(user);
}
// 复杂JSON嵌套
@PostMapping("/order")
public Order createOrder(@RequestBody OrderRequest request) {
// request包含:userId, items[], address等
}
4 @ModelAttribute - 对象绑定
// 表单提交或查询参数自动绑定到对象
@PostMapping("/register")
public String register(@ModelAttribute User user) {
// 自动将表单字段映射到User对象
return "注册成功";
}
// 也可以省略@ModelAttribute
@PostMapping("/save")
public String saveUser(User user) {
// 参数名自动匹配
}
5 直接接收Map
@PostMapping("/save")
public String saveUser(@RequestParam Map<String, String> params) {
String name = params.get("name");
String age = params.get("age");
return "Received: " + params;
}
// 接收整个请求体map
@PostMapping("/json-map")
public String saveJson(@RequestBody Map<String, Object> jsonMap) {
// 处理JSON map
}
文件上传
Spring Boot方式
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file) {
String fileName = file.getOriginalFilename();
// 保存文件
file.transferTo(new File("/uploads/" + fileName));
return "上传成功";
}
// 多文件上传
@PostMapping("/uploads")
public String uploadFiles(@RequestParam("files") MultipartFile[] files) {
for (MultipartFile file : files) {
// 处理每个文件
}
return "上传成功";
}
接收请求头信息
@GetMapping("/header")
public String getHeaders(@RequestHeader("User-Agent") String userAgent,
@RequestHeader(value = "Authorization", required = false) String token) {
return "User-Agent: " + userAgent + ", Token: " + token;
}
// 获取所有请求头
@GetMapping("/all-headers")
public String getAllHeaders(@RequestHeader Map<String, String> headers) {
return headers.toString();
}
Cookie参数
@GetMapping("/cookie")
public String getCookie(@CookieValue(value = "sessionId", defaultValue = "") String sessionId) {
return "Session ID: " + sessionId;
}
实际项目完整示例
@RestController
@RequestMapping("/api/users")
public class UserController {
// 1. 查询参数
@GetMapping
public PageResult<User> listUsers(@RequestParam(defaultValue = "1") int page,
@RequestParam(defaultValue = "10") int size,
@RequestParam(required = false) String keyword) {
return userService.list(page, size, keyword);
}
// 2. 路径参数
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
return userService.findById(id);
}
// 3. 创建用户 - JSON
@PostMapping
public User createUser(@RequestBody @Valid UserCreateRequest request) {
return userService.create(request);
}
// 4. 更新用户 - 混合参数
@PutMapping("/{id}")
public User updateUser(@PathVariable Long id,
@RequestBody @Valid UserUpdateRequest request) {
return userService.update(id, request);
}
// 5. 部分更新
@PatchMapping("/{id}")
public User partialUpdate(@PathVariable Long id,
@RequestBody Map<String, Object> updates) {
return userService.partialUpdate(id, updates);
}
// 6. 带参数查询
@GetMapping("/search")
public List<User> searchUsers(@ModelAttribute UserSearchCriteria criteria) {
return userService.search(criteria);
}
// 7. 上传头像
@PostMapping("/{id}/avatar")
public String uploadAvatar(@PathVariable Long id,
@RequestParam("avatar") MultipartFile file) {
return userService.saveAvatar(id, file);
}
}
前端对应的请求示例
// 1. GET请求带参数
axios.get('/api/users', {
params: { page: 1, size: 10, keyword: '张三' }
});
// 2. 路径参数
axios.get('/api/users/123');
// 3. POST JSON
axios.post('/api/users', {
name: '张三',
age: 25,
email: 'zhangsan@example.com'
});
// 4. 文件上传
const formData = new FormData();
formData.append('file', fileInput.files[0]);
axios.post('/api/users/1/avatar', formData, {
headers: { 'Content-Type': 'multipart/form-data' }
});
// 5. 表单提交
const formData = new URLSearchParams();
formData.append('name', '张三');
formData.append('age', '25');
axios.post('/api/users/save', formData);
| 注解/方式 | 适用场景 | 前端传参方式 |
|---|---|---|
@RequestParam |
单个参数 | URL参数/表单参数 |
@PathVariable |
RESTful路径 | URL路径 |
@RequestBody |
复杂数据结构 | JSON/XML |
@ModelAttribute |
对象绑定 | 表单/查询参数 |
@RequestHeader |
HTTP头信息 | 请求头 |
@CookieValue |
Cookie值 | Cookie |
MultipartFile |
文件上传 | FormData |
选择哪种方式取决于你的业务需求和前端请求格式。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播