import org.springframework.streotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HomeController {
@RequestMapping("/")
public String index(Model model) {
model.addAttribute("message", "좋은 아침!");
return "index";
}
}
컨트롤러 클래스는 웹 브라우저의 URL 요청을 받아서, 웹 서버에서 실행되는 자바 클래스이다. 웹 브라우저가 웹서버에 어떤 URL을 요청을 하면 그 URL에 해당하는 컨트롤러의 메소드가 자동으로 호출되어 실행된다.
@Controller 어노테이션
컨트롤러 클래스에 이 어노테이션(Annotation)을 붙여줘야 한다.
액션 메서드
웹 브라우저가 어떤 URL을 웹서버에 요청하면, 그 요청된 URL에 해당하는 컨트롤러의 어떤 메서드가 자동으로 호출된다. 웹 브라우저의 요청에 의해서 자동으로 호출되는 컨트롤러의 메서드를 액션메서드라 한다.
@RequestMapping 어노테이션
액션 메서드에 붙은 @RequestMapping("/") 어노테이션의 "/" 부분은 그 액션 메서드를 호출하기 위한 URL이다. 자동으로 호출할 액션 메서드를 찾을 때 컨트롤러 클래스의 이름이나 액션 메서드의 이름은 상관없고 @RequestMapping 어노테이션에 등록되어 있는 URL만 일치하면 된다.
컨트롤러 액션 메서드의 리턴값
컨트롤러의 액션 메서드는 문자열을 리턴한다. 컨트롤러의 액션 메서드가 리턴하는 문자열은 View 파일의 이름이다. 컨트롤러의 액션 메서드가 리턴된 후, 뷰 파일이 실행된다. 액션 메서드가 리턴한 이름의 뷰 파일이 실행된다.
Model 객체
public String index(Model model)
컨트롤러의 액션 메서드는 Spring Web MVC 엔진에 의해 호출된다. 대부분의 액션 메서드의 파라미터에 Model model 객체가 포함된다. 컨트롤러의 액션 메서드가 뷰 파일에 전달할 데이터를 Model 객체에 넣어 전달한다. 즉, Model 객체는 데이터를 전달하는 객체라고 보면 된다.
model의 attribute
model.addAttribute("message", "좋은 아침!");
뷰 파일에 전달할 데이터를 Model 객체에 넣는 코드이다. 전달되는 데이터의 이름은 "message"이고 값은 "좋은 아침!" 문자열이다. 이렇게 모델에 담겨서 뷰에 전달되는 데이터는 model attribute라고 한다.
5. 간단한 데이터베이스를 만들어 놓은 상태입니다. project 스키마에 Member 테이블을 생성하였습니다.
CREATE TABLE `Member` (
`id` varchar(45) NOT NULL,
`name` varchar(45) NOT NULL,
`password` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1. Spring Boot 프로젝트 생성
1) 프로젝트 생성
[File - New - Spring Starter Project]
Type : Maven / Packaging : Jar로 설정하고
Name, Group, Package 명을 입력한다.
Spring Web/ MySQL Driver/ Spring Data JPA 를 선택하고 [Finish] 버튼 클릭
2) application.properties
src/main/resources/application.properties
# API 호출시, SQL 문을 콘솔에 출력한다.
spring.jpa.show-sql=true
# DDL 정의시 데이터베이스의 고유 기능을 사용합니다.
# ex) 테이블 생성, 삭제 등
spring.jpa.generate-ddl=true
# MySQL을 사용한다.
spring.jpa.database=mysql
# MySQL 설정
spring.datasource.hikari.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.hikari.jdbc-url=jdbc:mysql://database-1.(생략).ap-northeast-2.rds.amazonaws.com:3306/project?useUnicode=yes&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=Asia/Seoul
spring.datasource.hikari.username=user1
spring.datasource.hikari.password=test1234
# MySQL 상세 지정
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.database=mysql
spring.jpa.show-sql=true
application.properties는 spring Boot 설정 파일이다.
MySQL 설정에서 hikari를 써준 이유는 hikari Connection Pool를 사용하기 위함이다. hikariCP를 사용하지 않을 경우 그냥 spring.datasource.diver-class-name 등으로 작성하면 된다.
댓글 개