정적페이지는 앞서 만든 Welcome과 같은 서버에 올려둔 html을 그대로 웹브라우저에 보내는 방식이다.

 

정적페이지 설명

 

Spring Boot Features

Graceful shutdown is supported with all four embedded web servers (Jetty, Reactor Netty, Tomcat, and Undertow) and with both reactive and Servlet-based web applications. It occurs as part of closing the application context and is performed in the earliest

docs.spring.io

이전에 static폴더에 index.html이 있지만, 상관하지 않고 hello-static.html을 작성한다.

<!DOCTYPE HTML>
<html>
<head>
    <title>static content</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head>
<body>
정적 컨텐츠 입니다.
</body>
</html>

이제 톰캣 서버를 구동시켜서 잘 작동하는지 확인해 보겠습니다.

 

웹 브라우저에 localhost:8080을 한번 입력해 보겠습니다

index.html

기존에 입력한 index.html이 로드된다. 우리가 방금 작성한 hello-static.html을 띄우기 위해서는

localhost:8080/hello-static.html 를 주소창에 입력해야합니다.

 

스프링 부트를 사용하여 본격적으로 웹 개발을 해보도록 해볼게요

 

웹을 개발하는 방법은 크게 3가지가 있습니다.

 

  • 정적 컨텐츠
  • MVC와 템플릿 엔진
  • API

먼저, 정적 컨텐츠는 앞서 Welcome페이지 처럼 파일을 서버에 올려두고 서버에서 웹 브라우저로 보내는 방식입니다

두번째, MVC와 템플릿 엔진

 - JSP, PHP는 템플릿 엔진으로, 서버에서 프로그래밍을 해둬서 시스템을 동적으로 변환시켜 웹 브라우저로 보내는 방식입니다

 - MVC(MVC패턴)는 Model, View, Controller의 약자디자인패턴 중 하나입니다.

출처:XESCHOOL

Model은 어플리케이션이 “무엇”을 할 것인지를 정의 합니다. 내부 비지니스 로직을 처리하기 위한 역할을 할 것입니다.

  • 처리되는 알고리즘, DB 와 상호작용(CRUD Create Read Update Delete), 데이터 등등..

Controller는 모델이 “어떻게” 처리할 지를 알려주는 역할을 할 것이고, 모바일에서는 화면의 로직처리 부분입니다. 화면에서 사용자의 요청을 받아서 처리되는 부분을 구현되게 되며, 요청 내용을 분석해서 Model과 View에 업데이트 요청을 하게 됩니다.

  • 사용자로 부터의 입력 을 받고 Model 또는 View중개인 역할

View는 화면에 “무엇” 인가를 “보여주기 위한 역할”을 합니다. 컨트롤러 하위에 종속되어, 모델이나 컨트롤러가 보여주려고 하는 모든 필요한 것들을 보여줄 것입니다.

  • 최종 사용자에게 “무엇”을 화면(UI)으로 보여줌

 

마지막으로, API는 안드로이드, 아이폰 플랫폼을 개발할 시에 JSON(JavaScript Object Notation)이라는 데이터 구조 포맷을 통해서 클라이언트에 전송하는 방식이다.

서버끼리 통신할 때에도 API를 사용한다. 서버끼리 데이터를 주고받는데 hpml이 사용안되기 때문이다.

 

 

우리는 Tomcat을 실행시켜 내부 서버를 구동해봤다.

하지만 아무런 내용이 없었는데, 이제 내용을 채워서 뭔가를 만들어보도록 하겠다.

 

프로젝트를 열어서 resources - static폴더를 누른다.

static은 정적폴더로 변화하지 않는 내용들을 넣으면 된다. 우리는 static폴더에 웹사이트 방문시 처음 뜨는 Welcome Page(대문)을 만들어보도록 하겠다.

더보기

 

 

 

static - 마우스 우클릭 - New - File - index.html 입력 - 파일 생성 완료

 

더보기
<!DOCTYPE HTML>
<html>
<head>
    <title>Hello</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head>
<body>
Hello
<a href="/hello">hello</a>
</body>
</html>

index파일에 welcome page 내용을 입력해주고 저장, 서버를 재실행 한다

 

wellcome가 잘 만들어졌음을 확인할 수 있다.

static/index.html 을 올려두면 Welcome page 기능을 제공한다.

 

방금 만든 Welcome 페이지는 정적페이지로, 단순히 웹브라우저로 응답을한 것이다(파일을 전송한 것) - 프로그래밍이 아니다.

그런데 템플릿 엔진이라는 기능을 사용하면 루프를 넣거나 대문의 모양을 바꿀 수 있다.

여기서는 thymeleaf(타임리프)라는 템플릿 엔진을 사용하도록 하겠다.

thymeleaf 공식 사이트:  https://www.thymeleaf.org/
스프링 공식 튜토리얼: https://spring.io/guides/gs/serving-web-content/

스프링부트 메뉴얼: https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/spring-boot-features.html#boot-features-spring-mvc-template-engines

 

 

Spring Boot Features

Graceful shutdown is supported with all four embedded web servers (Jetty, Reactor Netty, Tomcat, and Undertow) and with both reactive and Servlet-based web applications. It occurs as part of closing the application context and is performed in the earliest

docs.spring.io

 

스프링부트에서 사용가능한 템플릿 엔진 4가지

스프링 부트에서는 FreeMaker, Groovy, Thymeleaf, Mustache 4가지 탬플릿 엔진을 지원한다.

 

이제 무언가 동작하고, 프로그래밍되는 것을 해보도록 하겠다.

홈페이지, 서버가 작동하기 위해서는 이를 동작하게 하는 방식이 있을 것이다.

이를 동작하게하고 조정하는 Controller(조건등이 기입된 매뉴얼)가 필요하다

 

Controller는 main - java - hello.hellospring 폴더 클릭 - 오른쪽 마우스 - New - Package - controller 입력

 

controller 패키지를 생성해주고 여기에서 Java Class 파일을 다시 생성해서 HelloController로 이름지어준다

 

HelloController에 @Controller라고 어노테이션을 해주면 템플릿 엔진을 사용하기 위한 기본 준비가 끝난다

 

이제 hello라는 주소로 접속하게되면 해당 페이지를 띄우도록 하는 문법을 적도록 하겠다.

    @GetMapping("hello")
    public String hello(Model model) {
        model.addAttribute("data","hello!!꺅");
        return "hello";
    }
    //hello로 들어오는 주소를 받아서 맵핑해주는 문구
}

여기까지 작성한 다음 resources - templates폴더를 선택 - hello.html이라는 파일을 생성해준다

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Hello</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head>
<body>
<p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p>
//th:는 2번째 줄에서 thymeleaf 템플릿을 사용한다고 선언한 후, 이를 적용하는 것이다
</body>
</html>

앞서 Controller에서 data라는 mole을 만들고 이 값이 hello!!꺅으로 만들었었다. ( 쉽게 설명하면 data = hello!!꺅)

이제 서버를 구동시켜서 hello라는 페이지로 접속을 하면 우리가 html과 Controller로 작성한 문법에 따라 대문(Welcom page)에 텍스트가 나타나게 된다.

 

 

저장하고, 서버를 꼭 껐다가 다시 재실행해야 우리가 의도, 입력한 값이 나온다.

 

 

어떻게 이렇게 나오나? 궁금할 것이다.

예를 들어보도록 하겠다.

  • 친구가 철수를 만나러 철수네 집에 찾아간다
  • 철수(hello)는 톰캣구 서버로8080에 산다
  • 철수(hello)를 부른다
  • 철수네 엄마가 계셨고, 철수를 불러주신다고 한다
  • 철수가 나온다

localhost:8080 - 톰캣구 서버로8080. 철수네 집에 찾아간다

localhost:8080/hello - 철수네 집에서 철수를 부른다. "철수야~"

helloController - 우리집의 컨트롤러인 엄마가 철수를 불러주신다 "철수야~ 친구왔다" return "hello"

+ Recent posts