본문 바로가기
Java | Spring/Spring 입문

[스프링 입문] 1.3 View 환경설정

by 동기 2021. 8. 30.
반응형

순서


1.3 View 환경설정

이전에 spring boot 실행 후 localhost:8080 접속 시 whitelabel error 페이지가 나왔는데, 이번에는 간단하게

Welcome Page를 만들어 보자.

 

※ Spring boot는 resourse/static 디렉토리에 index.html 파일을 넣어주면, 그 파일을 welcome페이지(첫화면)로 나오게 해준다.

 

공식문서 확인을 생활화 하자

spring.io -> Projects -> Spring Boot -> Learn -> Reference Doc 을 천천히 읽어보며 찾아도 좋다.

 

 

index.html 작성하기

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

static 디렉토리에 index.html 파일을 생성 후, 간단한 내용을 작성해 보자.

그 후 서버 재 실행후 localhost 접속을 하면, index.html 파일의 내용이 나오게 된다.

 

localhost 접속 후 Welcome page 접속 성공~!

 

하지만... 이 페이지는 정적 페이지 이다!!

우리는 Thymeleaf 템플릿 엔진을 통해 동적 페이지 설정을 할 수 있다.

 

-참고 링크

Thymeleaf 공식 사이트

스프링 공식 튜토리얼

스프링부트 매뉴얼

 

 

동적페이지로 이동을 위해 선행해서 필요한 것이 있다. 바로 컨트롤러 ( Controller ) 이다.

MVC 디자인 패턴에서, 데이터와 비즈니스 로직 사이의 상호동작을 관리해주는 것이 컨트롤러 이다.

즉 사용자가 접근한 URL에 따라서 사용자의 요청사항을 파악한 후, 요청에 맞는 데이터를 Model에 의뢰하고, 데이터를 View에 반영해서 사용자에게 알려준다.

 

-컨트롤러 디렉토리 및 컨트롤러 클래스 생성

 

-생성된 클래스 확인

 

-클래스에 @Controller 어노테이션 작성

 

Spring 에서는 @Controller 라는 어노테이션을 작성한다. 해당 어노테이션이 적용된 클래스는 "Controller"임을 나타나고, bean으로 등록되며 해당 클래스가 Controller로 사용됨을 Spring Framework에 알려준다.

 

※@RestController 를 쓰는 경우가 있는데, 이 경우 view가 필요없는 API만 지원하는 클래스에 사용되고, json 이나 xml같은 문자열의 return이 주 목적이다. 만약 Controller에서도 API 서비스로 사용해야 할 경우, 메소드에 @ResponseBody 어노테이션을 쓰게되면 메소드에서 리턴되는 값은 View를 통해 출력되지 않고 HTTP Response Body에 직접 쓰여지게 된다.

 

-@GetMapping 작성

웹앱에서 ~url~/hello 로 진입 할 경우 GetMapping이 되어있는 메서드중 해당 ("hello") 가 작성된 메서드를 호출해준다.

 

 

-Model 작성

resources/templates 에 hello.html 작성

※ p 태그 내의 th 는 HTML 의 th 태그가 아닌, thymeleaf라는 것을 나타낸다.

 

Controller에서 작성했던 model.attribute 의 name 을 "data"로 작성했으므로 위의 p태그 내의 ${data} 의 위치에 model의 value인 hello~!! 로 치환이 될 것이다. ->안녕하세요. hello~!!

 

 

-적용 확인

로컬호스트 접속. 화면의 hellow~ 를 누르게되면

html 파일에는 hellow~를 클릭시 /hello 로 가도록 작성했으므로

localhost:8080/hello 로 접속을 할 것이다.

 

짜잔

우앙 싱기해~!!

 

쉬운 이해를 위해 그림을 보면서 다시한번 정리해보자

1. 웹 브라우저에서 localhost8080/hello 라고 Spring Boot 내장 웹서버(여기서는 Tomcat)에 전달합니다.

2. Tomcat 에서는 Controller 에게 /hello 를 전달

3. Controller 에서는 GetMapping 메서드 중 hello 를 찾고, 해당 메소드를 실행한다.

4. 메서드에는 Model 을 매개변수로 받고 있는데, Spring 이 model을 만들어서 넣어 준다.

5. 그 모델에 attribute(속성)을 넣어 준다. ( 여기서는 data 란 이름에 hello~!! 라는 값을 넣어줬다)

6. 메서드의 return 값으로 "hello"라는 문자열을 반환하는데, View Resolver 에서는 templates 디렉토리 내에서 해당 문자열과 같은 이름의 html파일을 찾아서 렌더링 한다.

  ※ Spring boot 템플릿 엔진 기본 viewName 매핑 : resources/templates/ + {ViewName} + .html

 

 

※참고 : 'spring-boot-devtools' 라이브러리를 추가하면, 'html' 파일을 컴파일만 해주면 서버 재시작 없이 View 파일 변경이 가능하다.

IntelliJ 컴파일 방법 : 상단메뉴의 build -> Recompile

 

 

 


이렇게 welcome페이지를 제작하여 정적파일 동작 확인, 템플릿엔진 동작확인을 해 보았다.

다음 시간에는 간단하게 빌드하고 실행하는 시간을 가져 보자 :)

반응형

댓글