티스토리 뷰
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";
}
}
'프로그래밍' 카테고리의 다른 글
Node.js nodemon npm start (0) | 2019.04.30 |
---|---|
Node.js main module check (0) | 2019.04.29 |
Ethereum web3 filter로 transaction watch하기 (0) | 2018.04.16 |
Ethereum web3.js에서 localhost 접속 안될때 (0) | 2018.04.02 |
Node.js JSON RPC post request 예제 (0) | 2018.03.16 |
- Total
- Today
- Yesterday