Java/Spring

[Spring boot로 게시판 만들기] 0. 프로젝트 생성부터 index.html

씬프 2021. 4. 8. 14:56
반응형

0. 프로젝트 생성

https://start.spring.io/ 에 접속한다.

start.spring.io 화면

Build Tool은 Gradle로 선택했다. 언어는 JAVA.

Spring Boot 버전의 경우 SNAPSHOT이나 M3가 붙지 않은 안정적인 버전을 선택한다.

 

Group과 Artifact는 임의로 지정했다.

Group 모든 프로젝트에서 이 프로젝트를 식별하게 해주는 식별자 역할을 한다. 원래, Java 패키지 이름 규칙을 따라 제어하는 도메인 이름의 반대로 시작해야 한다. ex) org.springframework와 같이

Artifact는 버전 없는 JAR 파일의 이름, 특수문자 없이 소문자로만 지정해야 한다.

 

Packaging 방식은 WAR를 선택했다.

JAR*와 WAR** 모두 자바 애플리케이션을 쉽게 배포하고 동작시킬 수 있도록 관련 파일들을 패키징 해주는 것이다.

 

Dependencies는 Spring Web과 템플릿 엔진***인 Thymeleaf를 선택했다.


*JAR : Java Archive, 클래스와 같은 자바 리소스와 속성 파일, 라이브러리 파일이 포함됨. 쉽게 자바 애플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일 포맷. JRE만 가지고 실행이 가능함.

 

**WAR : Web Application Archive, 서블릿/JSP 컨테이너에 배치할 수 있는 웹 애플리케이션 압축 파일 포맷. 웹 관련된 자원들을 포함하고 있음. Gradle 프로젝트로 생성하면, resources 하위에 static, template 디렉터리가 기본으로 생성되어 웹 애플리케이션 구조로 만들어짐. WAR 파일을 실행하려면 웹 서버나 웹 애플리케이션 서버(WAS)가 필요함.

 

***템플릿 엔진 : 템플릿 양식과 특정 데이터 모델에 따른 입력 자료들을 합성해 결과 문서를 출력한다. 웹 템플릿 엔진은 웹 템플릿들과 웹 컨텐츠 정보를 처리하기 위해 설계되었다.


 

1. 프로젝트 빌드 및 실행

스프링 부트를 통해 다운받은 파일을 압축 해제하고, Intellij에서 프로젝트를 연다.

프로젝트 오픈

열면, 바로 빌드가 될 수 있지만 아닌 경우, gradlew를 통해 build 명령을 전달한다. (gradlew build)혹은 build.gradle 파일 우측 상단에 코끼리 버튼을 클릭해도 된다. build 명령이 안될 경우 clean 후 build (gradlew clean build)

웹 애플리케이션 실행

빌드가 된 후 BoardApp에서 애플리케이션을 실행해본다.

Spring 실행되는 콘솔 이미지

콘솔을 통해 확인해보면 Tomcat이 8080 포트를 통해 실행되고, BoardApp이 실행된 기록을 볼 수 있다.

8080포트로 접근

브라우저를 통해 localhost의 8080 포트에 접근하면 위와 같은 페이지를 볼 수 있다.


2. Index.html을 첫화면으로

resources/static에 index.html

메인 화면을 바꾸기 위해서, 정적 페이지를 하나 생성한다. resources/static 디렉터리 하위에 index.html 파일을 하나 생성한다.

index.html 작성

간단하게 index.html 파일을 작성한다.

index.html 페이지 출력

스프링을 종료하고 다시 실행시킨 후 8080포트를 통해 접근한다. index.html 정적 페이지가 출력되는 것을 볼 수 있다.

스프링 부트에 WEB 의존성을 추가하고 localhost의 8080포트에 접근하면, 기본적으로 resources/static/index.html 파일을 읽게 된다. 하지만, 템플릿 엔진을 사용하고, 정적 페이지보다 동적 페이지를 더 많이 사용하게 될 것인데 resources/templates 디렉터리에 있는 페이지를 호출하려면 어떻게 해야할까?


3. resources/templates 하위 페이지 불러오기

resources/templates 하위 home.html 작성

resources/templates에 home.html 페이지를 작성한다.

Controller 작성

그리고 이를 불러오기 위한 Controller를 생성한다. controller 패키지를 생성하고, BoardController 클래스를 생성한다. 클래스에는 @Controller 애너테이션을 사용한다. 그리고 '/home' URL에 GET 방식으로 요청할 때 매칭(@GetMapping("/home"))되는 메서드 homepage()를 생성하고, Return에 출력할 페이지 이름(뷰)을 적는다. 

home page 출력

그리고 '/home' URL을 통해 접근하면 home.html의 내용이 출력되는 것을 볼 수 있다.

컨트롤러에서 뷰 이름을 리턴하면 지정된 디렉터리 (resource/templates)에서 해당 이름을 가진 뷰를 찾도록 한다.


Controller : MVC (모델 뷰 컨트롤러)에서 컨트롤러에 해당하며, 사용자의 요청을 받아 지정된 뷰에 모델 객체를 넘겨주는 역할을 한다. 위에서 사용자의 '/home'에 GET 요청을 받아, 지정된 home.html 뷰를 넘겨주는 역할을 했다. 메서드 파라미터에 model을 넣고, model에 데이터를 넣으면 뷰에서 모델 객체를 처리할 수 있다.

반응형