기존 Spring에서는 설정하기 위해 많은 코드를 작성해야 했지만 boot로 넘어오면서 이런것들이 간략해지고 자동으로 잡아주는 등 차이가 많다. 그러나 여기에서는 링크로 설명을 대처한다.
https://programforlife.tistory.com/68
위 설치링크로들어가서 Spring boot를 설치한다.
스프링부트는 내장형 톰캣을 가지고 있기 때문에 별도의 톰캣을 설정할 필요가 없어졌으며, 그렇기 때문에 독립적으로 실행 가능한 jar로 손쉽게 배포가 가능해졌다..
대신 서버 port는 여전히 설정을 해줘야 한다.
server.port = 9090 으로 port값을 설정해주는 장면
STStool 설치
Preference -> 'enc'검색 -> content types Default encoding -> utf-8 입력후 update, 적용 , Content Types에 text부분도 동일하게 UTF-8세팅을 해준다.
이클립스 하던것처럼 동일하게 세팅한다고 보면된다.
** LTS
현재 사용한 Gradle은 위와 같은 세팅으로 갈것이다.
설정한 Gradle 파일을 import한 모습
프로젝트 우클릭, New로 들어가서 html파일을 만드려 하면 목록이 나오지 않는다. 따라서 아래 방법을 하여 설정을 잡아준다.
marketplace -> 'java and web' 맨 위나오는거 설치
강사님은 이 파트가 중요하다 강조했다.
컨트롤러 : 웹 mvc의 컨트롤러 역할
서비스 : 핵심 비즈니스 로직 구현
레파지토리 : 데이터베이스에 접근
도메인 : 비즈니스 도메인 객체, 예)회원, 주문, 쿠폰 등등
위와 같은 파일로 이루어져있으며, local server를 가동할때, 기본 index는 static에서 serch하기 때문에 index.html이 resource에 static에 있는것을 볼 수 있다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
Hello
<a href="/hello">hello</a>
</body>
</html>
코드는 jsp와 매우 흡사하다.
package com.codingbox.core.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
/*
* @Controller : Controller 역할을 하는 Class에 붙여준다.
* Controller에서 mapping url을 찾는다.
* 현재 : localhost:9090/hello
*/
@Controller
public class HelloController{
/*
* '/hello' 값 mapping시켜줌
* @GerMapping : get방식의 요청
*/
@GetMapping("/hello")
public String hello(Model model) {
System.out.println("hello 도착");
model.addAttribute("data", "Hello!!");
return "hello"; // hello.html 화면을찾아서 return
/*
* 컨트롤러에서 리턴값으로 문자를 반환하면
* 뷰 리졸버(viewResolver)가 화면을 찾아서 처리한다.
* - 스프링 부트 템플릿엔진 기본 viewName 매핑
* - resources:templates/+{viewName}+.html
*/
}
위 코드는 Controller를 코드한 모습이다. 여기서 특이점이라면 어노테이션 부분이라고 볼 수있다. Controller라고 지정해주면 프레임워크에서 자동으로 잡아줘 jsp보다는 쉽게 코드가 구현되는 모습을 보여준다.
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p th:text="'안녕하세요. '+${data}"> 안녕하세요. 손님</p>
</body>
</html>
구현한 모습
만일 data에 값이 없다면 p태그에 작성된 안녕하세요. 손님
이 출력된다. jsp에서는 data가 null이라면 오류가 나지만 부트는 그렇지 않다.