컨트롤러 메서드에서 메서드의 매개변수나 리턴 타입에 사용되며, 주로 데이터를 모델에 바인딩하거나 화면에 전달하기 위해 사용됩니다.
주로 뷰와 컨트롤러 사이에서 데이터를 전달하고자 할 때, @ModelAttribute를 사용하여 데이터를 바인딩하고 이를 뷰에서 사용할 수 있도록 할 수 있습니다.
@ModelAttribute는 컨트롤러 메서드의 매개변수나 리턴 타입에 사용되어 데이터를 모델에 바인딩하거나 뷰로 전달하는 데 사용되는 스프링 프레임워크의 애노테이션입니다.
데이터 클래스 만들기: 먼저 사용자의 이름과 나이를 담을 데이터 클래스를 만들어요.
javaCopy code
public class UserData {
private String name;
private int age;
// Getter와 Setter 메서드도 추가합니다.
}
컨트롤러 만들기: 그 다음, 웹 페이지를 처리할 컨트롤러를 만들어요. 여기서 @ModelAttribute를 사용합니다.
javaCopy code
@Controller
public class UserController {
@GetMapping("/user")
public String showUserPage(@ModelAttribute("userData") UserData data) {
return "user-page"; // user-page는 뷰 템플릿의 이름입니다.
}
}
여기서 @ModelAttribute("userData")는 UserData 클래스의 객체를 만들어서 "userData"라는 이름으로 뷰 템플릿에 전달한다는 의미입니다.
뷰 템플릿 만들기: 마지막으로 뷰 템플릿을 만들어서 컨트롤러에서 전달한 데이터를 화면에 표시합니다.
```html
htmlCopy code
<!DOCTYPE html>
<html>
<head>
<title>User Page</title>
</head>
<body>
<form>
<label for="name">Name:</label>
<input type="text" id="name" name="name" th:value="${userData.name}" /><br>
<label for="age">Age:</label>
<input type="text" id="age" name="age" th:value="${userData.age}" /><br>
<button type="submit">Submit</button>
</form>
</body>
</html>
```
여기서 **`th:value="${userData.name}"`**와 같은 부분은 **`userData`**라는 이름으로 컨트롤러에서 전달된 데이터를 가져와서 입력 필드에 표시하는 역할을 합니다.
간단히 말해서, @ModelAttribute는 웹 페이지에서 데이터를 보여주고 받아올 때 사용하는 스프링 부트의 도구입니다.
CommentResponseDto
public CommentResponseDto(Comment comment) {
super();
this.id = comment.getId();
this.content = comment.getContent();
this.username = comment.getAuthor().getUsername();
this.createdAt = comment.getCreatedAt();
this.modifiedAt = comment.getModifiedAt();
}

public static CommentResponseDto of(Comment comment) {
return CommentResponseDto.builder()]
.id(comment.getId())
.content(comment.getContent())
.username(comment.getAuthor().getUsername())
.createdAt(comment.getCreatedAt())
.modifiedAt(comment.getModifiedAt())
.build();
}return new CommentResponseDto(savedComment);return CommentResponseDto.of(savedComment);웹 브라우저는 사용자가 인터넷을 통해 웹 페이지를 검색, 표시 및 상호 작용할 수 있도록 도와주는 소프트웨어 애플리케이션입니다. 브라우저는 웹 페이지의 HTML, CSS, JavaScript와 같은 리소스를 다운로드하고 해석하여 사용자가 이해할 수 있는 형태로 렌더링하는 역할을 합니다. 아래는 브라우저의 작동 방식을 간단히 설명한 것입니다.
이렇게 웹 브라우저는 다양한 단계를 통해 웹 페이지를 가져오고 렌더링하여 사용자가 웹을 탐색하고 상호 작용할 수 있는 환경을 제공합니다.
DOM 트리(DOM Tree) 생성: HTML 문서를 파싱하여 문서 객체 모델(DOM)을 생성합니다. 이 DOM 트리는 HTML 문서의 구조와 요소들을 표현합니다.
CSS 스타일 계산: 브라우저는 CSS 스타일 정보를 파싱하여 스타일 규칙을 계산합니다. 이 규칙은 어떤 요소가 어떤 스타일을 가져야 하는지를 정의합니다.
렌더트리 생성: DOM 트리와 CSS 스타일 규칙을 기반으로 렌더트리를 생성합니다. 렌더트리는 화면에 실제로 표시되는 요소들만을 포함하며, 레이아웃과 시각적인 속성을 가진 요소들로 구성됩니다.
레이아웃 계산: 렌더트리의 각 요소들의 크기와 위치를 계산합니다. 이 단계에서 요소들의 상대적인 배치와 화면 내에서의 위치가 결정됩니다.
페인팅(Paint): 브라우저는 렌더트리를 기반으로 화면에 요소들을 그립니다. 이 단계에서 실제로 화면에 픽셀이 그려지게 됩니다.
이 중에서 렌더트리 생성 단계가 주로 '서버에서 HTML과 CSS를 합치는 것'으로 이해될 수 있습니다. 렌더트리는 실제로 화면에 표시되는 요소들로 이루어져 있기 때문에, 이 단계를 통해 어떤 내용이 화면에 보여지게 될지 결정됩니다.
**휘발성 메모리**