컨트롤러는 URL 요청을 처리하고 폼은 사용자의 입력을 검증한다.
DTO, 엔티티, 서비스 파일은 데이터베이스를 처리하기 위해 필요한 파일이다.
모든 프로그램은 시작하는 파일이 있다.
스프링 부트로 만든 프로그램도 있다. (스프링 부트 애플리케이션)
그 파일이 바로 프로젝트 명 + Application.java 파일
package com.mysite.sbb;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SbbApplication {
public static void main(String[] args) {
SpringApplication.run(SbbApplication.class, args);
}
}
SbbApplication 클래스에는
반드시 @SpringBootApplication 애너테이션이 적용되어 있어야 한다.
@SpringBootApplication << 요 애너테이션으로 앱을 실행할 수 있다
resources 디렉터리는 자바 파일을 제외한
HTML, CSS, 자바스크립트, 환경 파일 등을 저장하는 공간이다.
HTML은 웹 페이지의 기본 구조 (뼈),
CSS 웹 페이지에 옷을 입히는 스타일 (살),
자바 스크립트는 웹 페이지의 상호 작용과 동작을 할 수 있게 만드는 언어 (근육)
resource 디렉터리의 하위 디렉터리인 templates 에는 템플릿 파일을 저장
한다.
템플릿 파일은 자바 코드를 삽입할 수 있는 HTML 형식의 파일,
스프링 부트에서 생성한 자바 객체를 HTML 형태로 출력할 수 있다.
templates 에는 SBB 게시판 서비스에 필요한
'질문 목록', '질문 상세' 등의 웹 페이즈를 구성하는 HTML 파일을 저장
templates 폴더는 웹사이트 화면을 만드는 데 필요한 HTML 파일을 넣는 곳
이 파일들에 자바 코드를 섞어서 동적으로 데이터를 넣을 수 있다.
static 디렉터리엔 sbb 프로젝트의 스타일 시트 (살),
자바 스크립트 (근육) 그리고 이미지 파일 등을 저장
application.properties 파일은 sbb 프로젝트의 환경을 설정
sbb 프로젝트의 환경 변수, 데이터 베이스 등의 설정을 이 파일에 저장
test 디렉토리는 sbb 프로젝트에서 작성한 파일을 테스트하는 코드를 저장
JUnit, 스프링 부트의 테스트 도구 를 사용해
서버를 실행하지 않은 상태에서 코드 테스트 가능
build.gradle 그래들이 사용하는 환경 파일
그래들은 그루비를 기반으로 한 빌드 도구,
Ant와 Maven과 같은 이전 세대의 단점을 보완하고 장점을 취합한 빌드 도구
build.gradle << 여기엔 필요한 플러그인, 라이브러리를 설치하기 위한 내용을 작성
그루비는 그래들 빌드 스크립트를 작성하는 데 사용하는 스크립트 언어,
문법이 간결하고 가독성이 높음
빌드 도구는 소스 코드를 컴파일하고 필요한 라이브러리를 내려받을 때 사용
SBB 프로젝트를 완성하면 단 1개의 jar 파일로 패키징하여
서버에 배포할 수 있는데 이때에도 빌드 도구를 사용
먼저 /sbb URL에 대한 Mapping 만들기
처음엔 404 에러가 나온다.
404 : HTTP 오류 코드 중 하나, 브라우저가 요청한 페이지를 찾을 수 없다는 의미
localhost:8080/sbb 라는 요청을 해석할 수 없어서 오류가 발생한 것
그렇다면 컨트롤러를 작성해 /sbb URL에 대한 매핑을 추가하면 해결 완!!!!!!
@Controller
public class MainController {
@GetMapping("/sbb")
@ResponseBody
public String showMain() {
return "sbb에 오신 것을 환영합니다.";
}
}
무조건 return 사용하기
System.out.println("머시기머시기")
이걸 써버리면 클라이언트(사용자 브라우저)한테 응답을 돌려주지 못해서
클라이언트가 "/sbb" URL로 요청을 보내면 showMain() 메서드가 실행
이 메서드는 요청에 대한 응답으로 "sbb에 오신 것을 환영합니다." 를
돌려줘야 한다.
System.out.println 의 동작System.out.println 은 단순히 서버의 콘솔(터미널)에 출력 하는 것
브라우저로 요청을 보낸 사용자는 아무런 응답을 받지 못함
return 의 동작return 을 사용하면, 이 문자열이 클라이언트에게 HTTP 응답으로 전달
그래서 사용자의 브라우저 화면에 "sbb에 오신 것을 환영합니다" << 표시됨
System.out.println 은 서버에서 로그를 남기거나, 디버깅할 때 유용
하지만? 클라이언트에게 결과를 돌려줄 때는 반드시 return을 사용
웹 응답 =
return, 서버 출력 =System.out.println
브라우저와 같은 클라이언트의 페이지 요청이 발생하면
스프링 부트는 가장 먼저 컨트롤러에 등록된 URL 매핑을 찾고,
해당 URL 매핑을 발견하면 URL 매핑과 연결된 메서드를 실행한다.
URL 매핑이란?
URL과 컨트롤러의 메서드를 일대일로 연결하는 것
컨트롤러의 메서드에@GetMapping또는@PostMapping과
같은 애너테이션을 적용하면 해당 URL과 메서드가 연결된다.
MainController 클래스에 @Controller 애너테이션을 적용하면
MainController 클래스는 스프링 부트의 컨트롤러가 된다.
showMain() 메서드의 @GetMapping 애너테이션은 요청된 URL과의 매핑을 담당
그래서 http://localhost:8080/sbb 에 들어가보면?
