티스토리 뷰

프로그래밍

Apache Tomcat + Spring boot + IntelliJ iDEA

두덕리온라인 2018. 5. 8. 08:12
728x90
반응형

Java 8 설치

Java 8 설치 이유 : Spring 연동 gradle 버전은 Java 9를 찾지 못한다.


Apache Tomcat 8.5 다운로드

안정버전인 8.5를 다운로드후 적절한 위치에 압축을 풀어놓자.


프로젝트 생성(Spring Initializr)

[New Project]  - [Spring initializr] 를 선택하여 프로젝트 생성을 시작한다. 이때, 자바 버전을 1.8 정도로 선택하자.


Artifact에 프로젝트 명을 입력하고 Type에서 [Gradle Project]를 선택, Packaging에서는 [War]를 선택한다.


프로젝트 설정에서 다음과 같이 선택한다. (DB는 추후에 설정하고, Web과 REST API만 사용하게 설정)

Web

Thymeleaf 

- 이것을 선택한 이유는 Spring in Action 책에서 이 언어를 가르쳐 주기 때문

SQL

- JPA

- MySQL

- JDBC


마지막으로 프로젝트 설정중 원하는 것을 체크하자. [Use auto-import] 정도는 체크해주는 것이 편리하다.


실행

프로젝트를 설정완료 하면 다음과 같이 ServletInitializer가 생성되었다면, War 프로젝트가 생성 완료된 것이다.



MySQL 연동을 설정했기 때문에 그냥 실행하면 다음과 같은 에러가 발생한다.

***************************

APPLICATION FAILED TO START

***************************

Description:

Cannot determine embedded database driver class for database type NONE

Disconnected from the target VM, address: '127.0.0.1:65187', transport: 'socket'

Action:

If you want an embedded database please put a supported one on the classpath. If you have database settings to be loaded from a particular profile you may need to active it (no profiles are currently active).


따라서 다음과 같이 resource/application.properties를 수정해 준다.

spring.datasource.url=jdbc:mysql://localhost/clientdevtest

spring.datasource.username=1000149

spring.datasource.password=namjungsoo123!

spring.datasource.driver-class-name=com.mysql.jdbc.Driver



실행의 [Edit Configurations]로 들어간다.


상단의 + 버튼을 눌러서 [Tomcat Server] - [Local]을 선택한다.


Tomcat을 설정하지 않았다면 [Configure...]를 클릭하여 설정한다.


Tomcat 설정은 웹에서 zip 또는 tar.gz를 받아서 압축을 풀어놓은 다음 그 디렉토리를 추가해주면된다.


이제 [Deployment] 탭으로 이동하여 Artifact를 등록한다. Artifact는 War를 가리키는 말이며, Jar (Java archive)와 다르게 War (Web archive)는 자바 클래스(jar, class)와 더불어 웹에서 서비스할수 있는 html, js, css를 포함한다.


Artifact는 (exploded) 버전의 war를 선택하도록 한다.


설정이 다된 화면이다. Tomcat Server 밑에 Unnamed (또는 설정한 이름)가 추가되어 있고, 하단에 Build와 artifact가 추가되어 있다.



이상태로 실행하면 다음과 같은 웹 화면을 볼수 있다. 포트는 8080이다.

구현

일반 Controller 구현

일반 Controller는 @Controller annotation으로 구분한다.

리턴 값은 뷰의 이름으로서 templates/{value}.html이 view가 된다.

@RequestMapping에는 대응되는 url주소를 입력한다. 예제는 "/"로서 루트 주소가 된다.



package com.example.demo1;

 

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

 

@Controller

public class HomeController {

    @RequestMapping("/")

    public String home() {

        return "home";

    }

}



Rest Controller 구현

Rest Controller는 return하는 string이 html 결과 화면에 바로 렌더링 되므로 view가 없다.

@Controller 대신에 @RestController annotation으로 구분한다.



package com.example.demo1;

 

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

 

@RestController

public class GreetController {

    @RequestMapping("/greet")

    public String greet() {

        return "Greet";

    }

}


반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday