스프링부트

[스프링부트] MVC 패턴 & 파라미터 전달하기

제에엔 2025. 2. 13. 18:31

🔎 MVC 패턴이란?

📌 Model, View, Controller의 약자로 소프트웨어 디자인 패턴 중 하나
  • UI 와 비즈니스 로직 부분을 분리할 수 읶어서 협업 시 유연하고 업무 분장 및 개발 분리를 편리하게 처리할 수 있다.
  • 각각의 업무 로직을 분리할 수 있으므로 추후 업데이트나 유지보수 등에서도 편리하다.
  • 뷰 페이지단과 데이터 처리 부분이 분리됨으로써 재사용이 용이하다.

✅ Model

  • 데이터

✅ View

  • UI, 즉 사용자 인터페이스로써 사용자가 접속해서 실제적으로 보고 이용하는 웹페이지 화면단

✅ Controller

  • 뷰페이지와 모델을 이어주는 중간 다리 역할
  • 사용자의 요청이 들어오면 그에 맞는 적절한 뷰페이지를 연결하여 결과를 리턴
  • 단순 요청 뿐만 아니라 데이터 전달 및 비즈니스 로직을 호출하여 그 결괏값을 전달하는 역할

📌설명

사용자가 요청할 때, 단순 요청인 경우도 있지만 데이터를 전달하면서 요청하는 경우도 있다. 

이 데이터를 적절하게 처리해서 이에 맞는 응답을 보내야 한다. 이 데이터를 우리는 모델이라고 한다.

 

📌 규모가 큰 서비스를 개발할 때 효율적이다.


🔎 단순 요청인 경우

@Controller
public class SampleController1 {

    @GetMapping("/user/userinfo")
    public String userInfo(){
        return "/user/userinfo";
    }
}

루트 폴더 : thymeleaf 인 경우

사용자가 `localhost:8080/user/userinfo`라고 요청을 넣으면 단순히 user 폴더 하위에 있는 `userinfo.html`이 리턴된다.

따로 데이터를 전달하지 않으므로, 이 경우가 바로 단순 요청인 경우이다.

🔎 데이터를 전달하는 경우

사용자가 데이터를 전달하는 경우는 모델을 사용하여 전달한다.

@GetMapping("/user/userdata")
public String userData(Model model){
    // 모델(데이터)에 key와 value를 추가
    model.addAttribute("username","홍길동");
    // 뷰페이지단으로 같이 데이터(model) 전달
    return "/user/userinfo";
}

사용자가 전달한 데이터에 속성과 값을 추가하고 싶다면 `model.addAttributes()`를 사용하여 추가하면 된다.

 

그럼 `html` 파일에서 이 모델을 받으려면 어떻게 해야 할까?

다음과 같은 속성을 추가하여 속성으로 추가했던 `username`의 값을 불러올 수 있다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>SampleController</title>
</head>
<body>
    <h1>userinfo.html</h1>
    <h1 th:text="${username}"></h1>
</body>
</html>

이를 실행하면 

이렇게 추가한 속성의 값이 잘 출력되는 것을 볼 수 있다.

 

🔎 HTML 파일과 Template 파일의 차이점

📌 보통의 HTML 파일은 정적 파일이며, Template Engine 파일은 동적 파일이다.

 

동적이라는 것은 말 그대로, 컨텐츠의 내용이 바뀔 수 있다는 뜻이다.

이를 위해서는 내부에서 이러한 컨텐츠의 변화되는 부분을 반영할 수 있도록 해줘야 하는데, 이때 템플릿 에진의 문법이 사용된다.

  • Thymeleaf, Mustache, JSP 등은 뷰페이지 단을 표현하는 언어라고 생각하면 된다.
  • 각각의 템플릿 엔진 별 고유 문법을 배우고 익히는 과정이 필요
  • 특히 웹 개발의 특성상 템플릿 문법을 배우는 것 이외에도 레이아웃을 구성하는 문법과 사용법을 배우는 것이 중요하다.

위 예제에서 아래와 같은 문법을 사용했던 파일이 바로 동적 파일이라고 할 수 있다.

<h1 th:text="${username}"></h1>

 

만약 기본값을 넣고 싶다면 태그 값을 넣어주면 된다.

<h1 th:text="${username}">Guest</h1>

이 경우, Guest가 기본값으로 설정되었다.

 

🔎 파라미터 전달하기

`username` 값 외에 글자를 추가하여 (ex. 안녕하세요~홍길동입니다.) View에 표시하고 싶다면 `' '`와 `+`를 사용하여 연결해주면 된다.

<h1 th:text="'안녕하세요~'+ ${username} + '입니다'">Guest</h1>

그럼 아래와 같이 문장이 잘 나타난 것을 볼 수 있다.

🔎 사용자 요청 시 파라미터 전달하기

사용자가 파라미터 값을 지정하여 전달하고 싶다면 다음 포스트를 살펴보자.

 

[스프링부트] 사용자 요청 - 파라미터 값 전달하기

💡 사용자 요청 시 파라미터 값을 넘겨서 데이터를 전달하는건 어떻게 받을까?🔎 단일 파라미터 값을 전달받는 `RequestParam`사용자가 `userid` 라는 속성 이름으로 값을 전달하면, 다음과 같이 모

jyun2e.tistory.com