@PathVariable
@Controller
public class UserController {
@GetMapping("/user/{userName}")
public String user(@PathVariable("userName") String userName){
log.info("userName={}",userName);
return "ok";
}
}
// (@PathVariable String userName)로 생략 가능
{userName} 처럼 url 탬플릿을 지정하고 @PathVariable을 통해 해당 값을 인자로 받아 올수있다.
@Controller
public class UserController {
@GetMapping("/user/{userName}/order/{order}")
public String user(@PathVariable String userName, @PathVariable int order){
log.info("userName={}",userName);
log.info("order={}",order);
return "ok";
}
}
여러개도 사용할수 있다.
@RequestParam
@Controller
public class UserController {
@GetMapping("/user")
public String user(@RequestParam("userName") String userName){
log.info("userName={}",userName);
return "ok";
}
}
얼핏 보면 @PathVariable과 다른게 없어보이지만 요청 url에 차이가 있다.
@RequestParam은 요청 url 이 /user?userName=exampleName 과 같은식으로 구성된다.
쿼리 파라미터에 데이터를 포함해서 전달한다. HttpServletRequest의 request.getParameter과 동일한 방법이다.
@ModelAttribute
@Data
public class userData {
private String username;
private int age;
}
다음과 같은 데이터가 있을때, 위의 @RequestParam을 통해서 username과 age를 받아와서
UserData data = new UserData();
data.setUsername(username);
data.setAge(age)
다음과 같이 UserData를 만든다. 하지만 @ModelAttribute를 사용하면 위 코드를 자동으로 해준다.
@RequestMapping("/model-attribute")
public String modelAttributeV1(@ModelAttribute UserData userData) {
log.info("username={}, age={}", userData.getUsername(), userData.getAge());
return "ok";
}
@RequestBody
HTTP 메시지 바디 정보를 편리하게 조회할 수 있다. (HTTP 헤더 정보가 필요하면 HttpEntity 또는 @RequestHeader를 사용하면 된다.)
메시지 바디 정보를 직접 조회하는 방법으로 요청 파라미터를 조회하는 @RequestParam, @ModelAttribute 과는 관계가 없다.
xml, json 기반의 메시지를 사용하는 요청의 경우 @RequestBody를 사용하면 매우 편리하게 사용할 수 있다.
@RequestMapping("/requestBodyJson")
public String requestBodyJson(@RequestBody UserData userData) {
log.info("username={}, age={}", userData.getUsername(), userData.getAge());
return "ok";
}
'Java , Spring > Spring' 카테고리의 다른 글
[Spring] Spring Security 를 이용해서 비밀번호 암호화 하기 (0) | 2023.09.26 |
---|---|
[Spring] 필터(Filter)와 인터셉터(Interceptor) (0) | 2023.09.12 |
[Spring] @Controller 와 @RestController (0) | 2023.08.07 |
스프링 MVC 1 - 서블릿 servlet (2) (0) | 2023.07.02 |
초보 웹 개발자를 위한 스프링 5 프로그래밍 입문 - 5장 컴포넌트 스캔, 6장 빈 라이프사이클과 범위 (0) | 2023.05.19 |
댓글