기초 코드들이 주어져 있고 기존 예제들과 난이도 차이가 크지 않아보여 빨리 끝날 줄 알았으나 역시나 자잘한 오류들로 시간을 잡아먹었던 프로젝트 ^^;
mysql 실행 후 미리 만들어둔 데이터베이스(connectdb)에 접속한다.
CREATE TABLE `guestbook` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'guestbook id',
`name` VARCHAR(255) NOT NULL COMMENT 'user name',
`content` TEXT NOT NULL COMMENT 'guestbook content',
`regdate` DATETIME NULL DEFAULT NULL COMMENT '등록일',
PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
주어진 코드대로 guestbook 테이블을 생성한다.
기초 코드 적혀있음 + 예제와 내용 비슷함으로 코드를 채우는 것은 어렵지 않았다.
자세한 코드는 https://github.com/dahyen0o/boostcourse-web-backend 여기에~
(이클립스에서 깃허브로 연결하는 건 이 글 과 이 글 을 참고하였다.)
역시나 제일 막혔던 부분 😩
참고로 ppt와는 달리 http://localhost:8080/guestbook/guestbooks 이 주소로 시작한다.
cmd 창에서 mysql --version
을 통해 버전을 확인하여 pom.xml 에서
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
이 부분을 바꿔준다.
그리고 실행하려고 했더니.. run on server가 뜨지 않았다.
고민하다가 이전 강의에서 maven 프로젝트의 환경설정을 할 때 프로젝트의 Properties -> Maven 에서 java EE integration 메뉴가 없어서 중단했던 걸 떠올리고 관련 내용을 구글링 하다가 이 게시글 대로 추가 설치를 진행해 봤다.
그랬더니 왜인지는 모르겠지만 Run on Server가 떴고, 이걸로 프로젝트를 실행했더니 이번에는 http 404 오류가 떴다.
제일 어이없었던 오류
이전 예제들과는 달리 webapp -> WEB-INF -> guestbooks 에 있던 jsp 파일을 혹시나 해서 예전처럼 WEB-INF 폴더로 이동시켰더니 해결되었다.
-> INSERT INTO guestbook (id, name, content, regdate) VALUES (id, ?, ?, now())
여기까지 해결하니 드디어 내가 적은 값이 화면에 출력되었고 한글 깨짐만 해결하면 되었다.
강의에서 알려준 것처럼 UTF-8, EUC-KR로 인코딩 설정을 해도 한글 깨짐 현상이 일어났다.
입력을 받아 데이터베이스에 보내기 전 콘솔에 출력해보니 여기서부터 한글이 깨져있었다. 즉 mysql이 아닌 입력(response)의 문제라는 것인데 코드를 확인해보니 request에만 인코딩을 설정해줬을 뿐 response에는 해주지 않았다.
따라서 doPost에 request.setCharacterEncoding("UTF-8");
을 추가해줌으로써 프로젝트가 완성되었다. 🎊