Controller 구성하기 이어서
container-fluid
: 뷰포트의 전체 너비에 걸쳐 있는 전체 너비 컨테이너에 .container-fluid를 사용한다.
table-hover
= 열에 마우스 올리면 하이라이트
table-striped
= 열마다 색을 다르게 해줄 수 있다.
컨트롤러 동작하는지 확인하기
- 컨트롤러가 잘 동작하는지 확인하기 위해서는 DB를 만들어야 된다.
- Docker을 이용해서 MySQL DB를 만들기로 하자.
Docker 셋팅하기
- DB생성을 위해 터미널도 켜준다. 반드시! 관리자 권한으로 실행해주자.
- 도커 참조
이 글을 참고하자.
- 다음은 도커 DB를 생성하기 위한 명령어를 짜서 터미널에 입력해준다. 난 개인적으로 메모장에 작성하고 이후 터미널에 복사 붙여넣기 하는 방법을 선호한다.
docker run --name kdt-mysql -e MYSQL_PORT_HOST=% -e MYSQL_ROOT_PASSWORD=root1234! -p3306:3306 -d mysql:8
- 도커 이름 설정 :
--name kdt-mysql
- 도커 환경변수 설정 :
-e MYSQL_PORT_HOST=%
도커 패스워드 설정 : MYSQL_ROOT_PASSWORD=root1234!
포트 설정 : -p3306:3306
버전 설정 : -d mysql:8
- 도커 콘솔에서 확인해 본 결과 잘 생성되었다.
- 다음은 인텔리제이에서 도커 DB를 기반으로 MySQL DB를 생성해보자.
여기도 역시 위 도커 참조 링크를 참고한다.
- User와 Password에 맞는 값을 써넣고
Test Connection
을 해보자.
- 잘 생성됐다.
그럼 실제 사용할 DB와 테이블을 만들어보자.
CREATE DATABASE order_mgmt;
CREATE TABLE products
(
~
~
~
)
- 위와 같이 쿼리를 넣자 아래와 같은 오류가 발생했다. 찾아보니, 사용할 DB를 선택하지 않아서 발생한 오류라고 한다.
use (데이터베이스 이름)
쿼리를 넣어서 해결해주자.
.yaml
파일을 main resources 폴더로 옮기고 설정해서 연결해준다.
- 애플리케이션을 실행시키고 호스트로 들어가면 만들어진 웹페이지가 로드되는 것을 확인할 수 있다.
입력페이지 생성
- 제품을 추가할 수 있는 입력페이지를 만들어보자.
@GetMapping("new-product")
으로 랜더링 연결을 해주자.
new-product.html
파일을 만들어 new-product 요청에 대한 랜더링 형식을 만들자.
- 전체적인 틀은
product-list.html
에서 따온다.
- 만들어진 폼이 상호작용을 해야하기 때문에,
th:action
을 처리하고 링크를 products
, 메서드는 post
로 전달한다. post메서드를 처리할 컨트롤러가 필요.
category
는 선택할 수 있게 select를 사용하고,
price
는 name과 같은 형식으로 하고 type을 number로 바꿔준다.
description
은 form controller
카테고리에서 description전용 폼을 찾는다.
product post 메서드를 처리할 컨트롤러 추가
@PostMapping("/products")
포스트 매핑으로 products를 링크한다.
- products 요청을 처리하는 DTO 클래스를 생성하자.
DTO 클래스란?
- 참고 - DTO 클래스
- DTO (Data Transfer Object)
직역하면 데이터 전송 객체
로 데이터의 전송을 담당하는 클래스.
- DTO는 웹 서비스의 클라이언트와 서버, 더 자세히는 클라이언트와 서버의 서비스 계층 사이에서 교환되는 데이터를 담는 그릇이다.
- 데이터를 주고 받을 때 서버→클라이언트, 클라이언트→서버 과정에서 데이터를 전달해주는 클래스.
- 위와 같이
productName
category
price
description
등을 받아 전달해준다.
- productService에 요청을 할 때 createProduct로 처리를 할 수 있다.
- view이기 때문에
redirect
처리를 해주자.
- 서버를 시작하고 로컬 호스트에 접속하자.
Name
Category
Price
Description
에 값을 넣고 submit을 누르면
- 새로운 제품이 생성됐다.
- 아무 값도 넣지 않으면 에러가 난다.