[SpringBoot] 1. 웹 서비스와 MVC

HJ·2022년 6월 26일
1

스프링부트, 입문!

목록 보기
1/10
post-thumbnail

홍팍 님의 스프링 부트, 입문! 강의를 보고 작성한 내용이며 이미지 또한 강의에 나오는 이미지를 따라 만들었습니다.
https://www.youtube.com/watch?v=Ym7cAtE2jQs&list=PLyebPLlVYXCiYdYaWRKgCqvnCFrLEANXt&index=29


프로젝트 설정

  • 프로젝트 선택
    • Project: Gradle Project
    • Spring Boot: 2.4.1
    • Language: Java
    • Packaging: Jar
    • Java: 8
  • Project Metadata
    • groupId: com.ghkwwhd
    • artifactId: project
  • Dependencies
    • Spring Web
    • H2 database
    • JPA
    • Mustache

3. 웹 서비스의 동작 원리

3-1. 동작 원리

  • 웹 서비스는 클라이언트와 서버의 요청과 응답으로 동작

  • 클라이언트 : 서비스를 사용하는 프로그램 혹은 컴퓨터 (브라우저)

  • 서버 : 서비스를 제공하는 프로그램 혹은 컴퓨터 (스프링부트)


3-2. 접속 URL

  • localhost:8080

  • localhost : 서버의 주소를 의미, 내 컴퓨터를 의미

  • 8080 : 포트 번호, 여기서 스프링 부트가 동작

  • localhost:8080/파일명을 붙여주면 스프링 부트는 resources/static에서 파일을 찾는다


3-3. resources

  • resources에는 외부 파일들이 위치

  • resources.static에 html 파일 위치

  • 실행은 main method를 실행




4. 뷰 템플릿과 MVC 패턴

4-1. 동작 흐름


4-2. View Template

  • View template : 화면을 담당하는 기술

  • 웹 페이지를 틀로 만들고, 변수를 삽입

  • mustache : view template을 만드는 도구

  • {{variable}} : 뷰 페이지에 변수 삽입

  • main/resources/templates 에 위치


<greetings.mustache>

<body>
    <h1>Hello {{username}}!</h1>
</body>

4-3. Controller

  • Controller : 처리 과정을 담당

  • java class 파일

  • @Controller : 컨트롤러 선언

  • @GetMapping("접속할 url 주소") : url 요청 연결

  • return "페이지명" : 응답 페이지 설정, 페이지명에 해당하는 파일을 찾아 브라우저에 전송

  • @GetMapping()에 명시된 url 주소가 입력되면 templates 디렉터리에서 return에 적힌 파일을 찾아서 반환

  • main/java/기본패키지/새로운패키지(controller) 에 위치


4-4. Model

  • Model : 데이터를 관리

  • Controller의 메소드에서 파라미터로 사용됨

  • View template에 선언된 변수 사용을 위해 필요

  • model명.addAttribute("변수명", 값) : 변수 등록


4-5. 적용하기

<firstController>

@Controller
public class firstController {

    @GetMapping("/hi")
    public String niceToMeetYou(Model model) {

        model.addAttribute("username", "HJ");
        return "greetings";
    }
}



5. MVC의 역할과 실행 흐름

5-1. 실행 흐름

  • 웹 서비스는 클라이언트와 서버의 요청과 응답으로 동작

  • 스프링부트가 서버의 역할

  • 서버의 역할을 하면서 Model, View, Controller의 유기적 역할 분담이 존재


5-2. MVC 역할

  • Controller : 클라이언트로부터 요청을 받는다 (@GetMapping 어노테이션을 통해)

  • View : 최종 페이지를 만든다

  • Model : 최종 페이지에 쓰일 데이터를 View에게 전달




6. 뷰 템플릿과 레이아웃

6-1. 설명

  • 레이아웃 : 화면에 요소를 배치

  • 템플릿화 : HTML 코드를 하나의 파일로 만들어서 변수화 시킨다


6-2. 적용하기

<greetings.mustache>

<!-- 레이아웃 템플릿 삽입 ( header 페이지 삽입 ) -->
{{>layouts/header}}
    <!-- content -->
    <div class = "bg-dark text-white p-5">
        <h1>Hello {{username}}!</h1>
    </div>

<!-- 레이아웃 템플릿 삽입 ( footer 페이지 삽입 ) -->
{{>layouts/footer}}
  • header와 footer를 template/layouts 에 mustache 파일로 만들어주어야 적용 가능

0개의 댓글