일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- input
- 자바 thread 실행 순서 제어
- 사칙연산
- Kadane's Algorithm
- 수학
- Easy
- JAVA11
- scanner
- array
- R
- hash table
- SpringBoot 2
- 자바 스레드 실행 순서 제어
- heroku
- 카데인 알고리즘
- 자바입력
- Today
- Total
DeFacto-Standard IT
[Spring Boot] Hello World 출력 본문
Spring Boot로 Hello World를 찍는다.
보통은 Project를 Dynamic Web Project 혹은 Spring Legacy Project로 구성을 하는데,
Spring Boot는 Spring Starter Project라는 프로젝트를 만들어야 한다.
next를 누르다보면 다음과 같이 기본적으로 포함할 Dependencies를 선택하는 옵션이 나온다.
이 글에서는 Hello World를 찍는 것이 목적이고, 아무거나 추가했다가는 값을 넣지 않았다고 에러가 날 수 있으므로 Web만 체크하도록 한다.
프로젝트를 만들면 다음과 같은 구조가 생성된다.
1. InternalResourceViewResolver Prefix, Suffix 설정
위 구조에서 application.properties를 더블클릭하여 다음과 같은 설정을 추가한다.
참고로, InternalResourceViewResolver는
Spring Legacy Project의 Spring MVC Project Template을 선택했을 때
src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml에 기술되는 Bean이 참조하는 Class이다.
Spring Boot에서는 application.properties에서 위와 같이 적으면 동일한 효과를 얻을 수 있다.
2. Controller Class 생성
다음은 컨트롤러이다. 적당한 패키지 이름을 기술하고, Controller를 만든다.
주의할 점은, 패키지 명은 위에서 DemoApplication.java 안에 기술된 @SpringBootApplication Annotation의 패키지명을 기준으로 Component Scan을 하기 때문에 패키지 명을 맞춰야 한다. 만약 아무 생각없이 컨트롤러 패키지를 만든다면 아마 다음과 같이 만들 것이다.
- 나쁜 예
이런식으로 패키지명을 지어버리면 아예 컨트롤러를 못찾는다..
애초에 패키지 시작부터 맞지 않기때문에 컴포넌트 스캔을 하지 않는다.
따라서 다음과 같은 패키지명을 기술하여야 한다.
- 좋은 예
HelloController의 내용은 다음과 같다.
@Controller는 @Component 보다 상세한 Annotation이다.
Component-Scan 시에 이 Annotation이 달려있는 Controller를 Bean으로 등록한다.
3. pom.xml에 jasper Dependency 추가
jsp를 사용하기 위해서 추가하는 dependency이다.
보통 jstl dependency와 같이 추가하지만, 이번 프로젝트는 Hello World를 출력하는 것이 목적이기 때문에 따로 기술하지 않는다.
4. jsp view folder 생성하기
Spring Framework에서 기본 Root Directory는 다음과 같다.
"src/main/webapp/"
위 경로 말고도 몇 가지가 더 있는데, 이는 구글링을 하기 바란다.
실제 프로젝트를 생성하면 webapp 폴더는 없으므로 직접 만들어줘야한다.
여기서, 아까 application.properties에서 설정했던 spring.mvc.view.prefix옵션에 해당하는 값에 따라서 경로를 만들면 된다.
spring.mvc.view.prefix옵션의 값이 "/WEB-INF/views/"였다.
Root Directory와 spring.mvc.view.prefix의 값을 합친 것이 최종 jsp 경로가 된다.
즉, "src/main/webapp/WEB-INF/views/" 폴더 밑에 xxx.jsp가 존재해야한다.
위에서 HelloController의 Handler에서 return값이 "hello"였기 때문에 hello.jsp를 만들겠다.
return value에서 ".jsp"를 제외하는 이유는 spring.mvc.view.suffix옵션에서 ".jsp"라는 값을 주었기 때문이다.
InternalResourceViewResolver에 의해 자동적으로 suffix가 붙는다.
"hello"라는 것을 Logical view name이라고 하며
뒤에 .jsp가 붙어 "hello.jsp"라는 것은 Physical view name이라고 한다.
그림으로 보면 다음과 같다.
(hello.jsp 내용 생략)
5. Spring Boot실행
프로젝트 오른쪽 마우스 - Run As - Spring Boot App 클릭
6. 접속
"http://localhost:8080/" 을 치면 바로 접속이 된다.
여기서 url뒤에 아무것도 치지 않아도 접속이 되는 이유는,
컨트롤러에서 매핑 value를 "/" 로 해서 그렇다.
만약 hellowolrd로 매핑을 시킨다면
http://localhost:8080/helloworld/"로 실행시켜야 한다.
아직 SpringFramework에 익숙하지 않다면, jsp의 위치나 클래스의 패키지명, pom.xml의 설정 등으로 white label 404에러를 내뿜는다.
이 글을 그대로 따라하면 실행은 될 것이다..
'Spring Boot' 카테고리의 다른 글
Executable Jar 파일 실행 명령어 (0) | 2017.12.10 |
---|