本文目录导读:

在 Java Web 开发中,获取请求参数的方式取决于你使用的框架或规范,以下是几种常见场景的详细方法:
原生 Servlet 方式
适用于所有 Java Web 应用(JSP/Servlet)。
获取单个参数
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
String username = request.getParameter("username");
String password = request.getParameter("password");
}
获取多个值(如复选框)
String[] hobbies = request.getParameterValues("hobby");
// 返回数组,如 ["reading", "music"]
获取所有参数
Map<String, String[]> paramMap = request.getParameterMap();
paramMap.forEach((key, value) -> {
System.out.println(key + ": " + Arrays.toString(value));
});
获取参数名枚举
Enumeration<String> paramNames = request.getParameterNames();
while (paramNames.hasMoreElements()) {
String paramName = paramNames.nextElement();
String paramValue = request.getParameter(paramName);
}
Spring MVC 注解方式
最常用的方式,支持自动类型转换。
@RequestParam 注解
@GetMapping("/user")
public String getUser(@RequestParam("username") String username,
@RequestParam(value = "age", defaultValue = "18") int age) {
// 必须参数:username
// 可选参数:age,默认值18
return "User: " + username + ", Age: " + age;
}
直接参数接收(自动匹配)
@GetMapping("/login")
public String login(String username, String password) {
// 参数名与请求参数名一致时,可省略 @RequestParam
return "Login: " + username;
}
实体类接收
@PostMapping("/register")
public String register(User user) {
// 自动将请求参数映射到 User 对象的属性
return "Registered: " + user.getUsername();
}
// User 类
public class User {
private String username;
private String password;
// getter/setter 省略
}
Spring MVC 路径变量
获取 URL 中的路径参数。
@GetMapping("/users/{id}/{name}")
public String getUser(@PathVariable("id") Long id,
@PathVariable("name") String name) {
return "ID: " + id + ", Name: " + name;
}
// 请求:/users/123/张三
// 输出:ID: 123, Name: 张三
处理 JSON 请求体
适用于 POST/PUT 请求。
@PostMapping("/save")
public String saveUser(@RequestBody User user) {
// 接收 JSON 格式的请求体
return "Saved: " + user.getUsername();
}
// 请求体示例:
// {
// "username": "张三",
// "password": "123456"
// }
处理文件上传
需要 @RequestParam 配合 MultipartFile。
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file,
@RequestParam("description") String desc) {
String fileName = file.getOriginalFilename();
return "File: " + fileName + ", Description: " + desc;
}
获取请求头信息
@GetMapping("/headers")
public String getHeaders(@RequestHeader("User-Agent") String userAgent,
@RequestHeader("Accept") String accept) {
return "UA: " + userAgent + ", Accept: " + accept;
}
获取 Cookie
@GetMapping("/cookies")
public String getCookie(@CookieValue("JSESSIONID") String sessionId) {
return "Session ID: " + sessionId;
}
完整示例 - 用户注册
@RestController
@RequestMapping("/api/user")
public class UserController {
@PostMapping("/register")
public ResponseEntity<?> register(@RequestParam("username") String username,
@RequestParam("password") String password,
@RequestParam(value = "email", required = false) String email) {
// 业务逻辑
User user = new User(username, password, email);
return ResponseEntity.ok("注册成功:" + user.getUsername());
}
// 使用实体类接收
@PostMapping("/register2")
public ResponseEntity<?> register2(@Valid @RequestBody User user) {
// 自动验证(需要 @Valid 注解)
return ResponseEntity.ok("注册成功:" + user.getUsername());
}
}
注意事项
- GET 请求:参数在 URL 中,如
/api?name=张三 - POST 请求:参数在请求体中(表单或 JSON)
- 编码问题:中文参数需设置
request.setCharacterEncoding("UTF-8") - 安全过滤:对用户输入进行 XSS/ SQL 注入过滤
- 参数验证:使用
@Valid或手动验证
选择哪种方式取决于你的技术栈和具体需求,如果是旧项目用原生 Servlet,新项目推荐 Spring MVC 注解方式。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播