本文目录导读:

在 Java Web 开发中,接收请求参数的方式取决于你使用的框架(如原生 Servlet、Spring MVC 等),以下是几种常见场景的案例。
原生 Servlet
这是最基础的方式,适用于所有 Java Web 应用。
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet("/params")
public class ParamServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1. 获取单个参数
String name = request.getParameter("name");
String ageStr = request.getParameter("age");
int age = (ageStr != null && !ageStr.isEmpty()) ? Integer.parseInt(ageStr) : 0;
// 2. 获取同名参数(checkbox)
String[] hobbies = request.getParameterValues("hobby");
// 3. 获取所有参数名
Enumeration<String> paramNames = request.getParameterNames();
// 4. 获取参数 Map
Map<String, String[]> paramMap = request.getParameterMap();
}
}
注意:request.getParameter() 返回 String,需要手动进行类型转换(如 Integer.parseInt())。
Spring MVC
1 使用 @RequestParam(单个参数)
import org.springframework.web.bind.annotation.*;
@RestController
public class ParamController {
@GetMapping("/params")
public String getParam(
@RequestParam("name") String name,
@RequestParam(value = "age", required = false, defaultValue = "18") int age,
@RequestParam(value = "hobby", required = false) String[] hobbies) {
// 直接使用参数
System.out.println("name=" + name + ", age=" + age);
return "OK";
}
}
2 使用 Java 对象(实体类)
// 定义实体类
public class UserParam {
private String name;
private int age;
private String[] hobby;
// getter/setter(必须)
}
// Controller 中直接接收对象
@GetMapping("/user")
public String getUser(UserParam user) {
return "name=" + user.getName() + ", age=" + user.getAge();
}
3 接收 JSON 请求体(POST)
@PostMapping("/user/json")
public String createUser(@RequestBody UserParam user) {
return "Created: " + user.getName();
}
对于 POST 请求传递 JSON,前端需要设置 Content-Type: application/json。
文件上传(Spring MVC)
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file,
@RequestParam("description") String desc) {
System.out.println("描述:" + desc);
System.out.println("文件名:" + file.getOriginalFilename());
return "Upload OK";
}
前端表单需要设置 enctype="multipart/form-data"。
在 RESTful 风格中接收路径变量
@GetMapping("/users/{id}")
public String getUserById(@PathVariable("id") Long userId) {
return "User ID: " + userId;
}
请求 URL:GET /users/123
常用技术与要点
| 方式 | 典型应用 | 示例 |
|---|---|---|
| 查询参数 | GET 请求 | ?name=xxx&age=20 |
| 表单参数 | POST 请求(form-urlencoded) |
name=xxx&age=20 |
| JSON 体 | POST/ PUT 请求 | {"name":"xxx","age":20} |
| 路径变量 | RESTful 接口 | /users/123 |
| 文件上传 | 文件提交 | multipart/form-data |
完整案例:Spring Boot 统一接收各种参数
@RestController
@RequestMapping("/demo")
public class DemoController {
// 1. 查询参数
@GetMapping("/query")
public String query(@RequestParam String name, @RequestParam int age) {
return String.format("Query: name=%s, age=%d", name, age);
}
// 2. 表单提交
@PostMapping("/form")
public String form(UserParam user) {
return String.format("Form: name=%s, age=%d", user.getName(), user.getAge());
}
// 3. JSON 提交
@PostMapping("/json")
public String json(@RequestBody UserParam user) {
return String.format("JSON: name=%s, age=%d", user.getName(), user.getAge());
}
// 4. 路径变量
@GetMapping("/path/{id}")
public String path(@PathVariable Long id) {
return "ID=" + id;
}
// 5. 文件上传
@PostMapping("/upload")
public String upload(@RequestParam MultipartFile file, @RequestParam String desc) {
return String.format("File=%s, desc=%s", file.getOriginalFilename(), desc);
}
}
- 原生 Servlet:直接使用
request.getParameter()。 - Spring MVC:使用
@RequestParam、实体类对象、@RequestBody、@PathVariable、MultipartFile。 - 注意:
- 数据类型转换(如
int、long)需在框架中配置或手动处理。 - 使用
@RequestParam(required = false)或defaultValue避免参数缺失错误。 - 实体类必须有 getter/setter 方法。
- 数据类型转换(如
如果你有具体的使用场景(如接收数组、日期、嵌套对象等),请告诉我,我可以给出更针对性的示例。
版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播