Web on Servlet Stack
Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, “Spring Web MVC,” comes from the name of its source module (spring-webmvc), but it is more com
docs.spring.io
[참고] 매개변수 레벨의 @ModelAttribute : https://sesoc.tistory.com/48
@RequestMapping 메소드의 매개변수는 모델로부터 객체를 만들거나 접근할 수 있고 WebDataBinder를 통해 해당 객체를 request에 바인딩 한다.
@Controller나 @ControllerAdvice 클래스내 메소드 레벨의 어노테이션으로 @RequestMapping 메소드를 호출하기 전에 모델을 초기화 할 수 있다.
@RequestMapping 메소드에서 리턴되는 값은 model 속성이다.
컨트롤러에는 여러 @ModelAttribute 메소드가 있을 수 있고 @RequestMapping 메소드 보다 먼저 호출된다. 또한 @ControllerAdvice를 통해 컨트롤러 간에 공유도 가능하다.
@ModelAttribute
@GetMapping("/findMemberModel")
public void findMemberModel(@RequestParam String id, Model model) {
log.info("findMemberModel 실행");
// service 혹은 repository에서 member 찾기 임시코드
Member member = new Member();
member.setId("hong");
member.setName("홍길동");
model.addAttribute("member", member);
}
@ModelAttribute
@GetMapping("/findMember")
public Member findMember(@RequestParam String id) {
log.info("findMember 실행");
// service 혹은 repository에서 member 찾기 임시코드
Member member = new Member();
member.setId("hong");
member.setName("홍길동");
return member;
}
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>[ findMemberModel.html ]</h2>
<p th:text="'name(request scope) : ' + ${member.name}" ></p>
<p th:text="'name(session scope) : ' + ${session.member.name}" ></p>
</body>
</html>
메소드 레벨의 @ModelAttribute를 사용하면 @RequestMapping의 리턴 값이 모델의 속성으로 동작한다. 따라서 별도로 모델에 담지 않아도 뷰에서 모델을 참조할 수 있다.
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>[ findMember.html ]</h2>
<p th:text="'name(request scope) : ' + ${member.name}" ></p>
<p th:text="'name(session scope) : ' + ${session.member.name}" ></p>
</body>
</html>
Spring MVC @ResponseEntity (0) | 2022.05.31 |
---|---|
Spring MVC @ResponseBody (0) | 2022.05.30 |
Spring MVC @RequestBody (0) | 2022.05.26 |
댓글 영역