目录
1.使用Java Servlet API中的HttpServletRequest对象来手动获取请求参数
1.使用Java Servlet API中的HttpServletRequest对象来手动获取请求参数
@RequestMapping("/one")
public void one(HttpServletRequest request, HttpServletResponse response) throws IOException {
System.out.println("Hello");
System.out.println(request.getParameter("name"));
}
代码解释:
@RequestMapping("/one")
:定义了请求映射,当HTTP请求的URL路径为/one
时,会调用此方法。
HttpServletRequest request
:注入了请求对象,可以通过这个对象访问请求的信息,比如参数、头信息等。
HttpServletResponse response
:注入了响应对象,可以通过这个对象构造响应,比如设置状态码、发送响应体等。
request.getParameter("name")
:通过请求对象的getParameter
方法获取名为"name"
的请求参数的值。
getParameter()
方法主要用于获取客户端请求中的参数值。若请求中没有提供该参数,则返回null。例如在一个HTML表单中的输入框<input type="text" name="username">,那么在服务端就可以使用getParameter("username")来获取用户在这个输入框中所输入的值。
2.使用@PathVariable注解来处理请求
该注解是一个用于处理RESTful Web服务中动态路径变量的注解;使用该注解可以将URL中的动态部分绑定到方法参数上。
@RequestMapping("/two/{name}/{score}")
public void pathValue(@PathVariable("name") String name, @PathVariable("score")String score){
System.out.println("name:"+name);
System.out.println("score:"+score);
}
当客户端访问"/two/awei/100"这样的URL时,awei就会被绑定到方法参数name上,100就会被绑定到方法参数score上,然后方法体返回相应的结果。同时要确保路径变量名称和方法参数上该注解中指定的名称一致,否则无法正确绑定。
补充:该注解中还有一个required参数,该参数是一个布尔值,用于说明路径变量是否是必需的。默认情况下该参数值为true,表示如果请求参数中缺少了对应的路径变量,则会抛出异常。例如:
@GetMapping("/category/{categoryId}")
public Category getCategoryById(@PathVariable(value = "categoryId", required = false) Integer id) {
// 处理逻辑
}
在上述代码中,注意required的值为false,表明其并不是必需的,即当请求的URL中没有categoryId路径变量时,方法参数id将会被赋值为null,而不是抛出异常处理。
3.使用@RequestParam注解来处理请求
该注解允许从HTTP请求中提取特定的参数,并将其绑定到方法的参数上,在URL中以"?key=value"形式出现。
@RequestMapping("/three")
public void urlParam(@RequestParam("id") String id,@RequestParam("score") String score){
System.out.println("id:"+id);
System.out.println("score:"+score);
}
这个方法用于处理包含"id"和"score"参数的请求。例如,如果发送一个GET请求到/three?id=1&score=75,控制台则会输出:
id:123
score:75
补充:由于@RequestParam的参数默认是必需的,如果请求中缺少这些参数,方法将不会被调用,而是会返回一个错误响应,通常是400 Bad Request。如果你希望参数是可选的,可以在@RequestParam注解中设置required属性为false,并且提供一个defaultValue参数值(默认值)。例如:
@RequestParam(value = "score", required = false, defaultValue = "0")
String score
这样的话,如果请求中没有提供score参数,那么score变量就会默认为0。
4.总结
上述三种方法为常用的接收请求参数的方法,尤其是SpringMVC中两个注解的使用,其余方法还有:使用@CookieValue注解、使用@RequestHeader注解、使用@RequestBody注解等。