프로젝트 B. 방명록 만들기

sen·2022년 1월 14일
0

기초 코드들이 주어져 있고 기존 예제들과 난이도 차이가 크지 않아보여 빨리 끝날 줄 알았으나 역시나 자잘한 오류들로 시간을 잡아먹었던 프로젝트 ^^;

1. mysql에 database 생성

(1) mysql 접속

mysql 실행 후 미리 만들어둔 데이터베이스(connectdb)에 접속한다.

(2) table 생성

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 테이블을 생성한다.


2. maven 프로젝트

기초 코드 적혀있음 + 예제와 내용 비슷함으로 코드를 채우는 것은 어렵지 않았다.

자세한 코드는 https://github.com/dahyen0o/boostcourse-web-backend 여기에~
(이클립스에서 깃허브로 연결하는 건 이 글이 글 을 참고하였다.)


3. 실행하기

역시나 제일 막혔던 부분 😩
참고로 ppt와는 달리 http://localhost:8080/guestbook/guestbooks 이 주소로 시작한다.

(1) mysql 버전 확인하기

cmd 창에서 mysql --version 을 통해 버전을 확인하여 pom.xml 에서

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.27</version>
        </dependency>

이 부분을 바꿔준다.

그리고 실행하려고 했더니.. run on server가 뜨지 않았다.

(2) java ee 플러그인 설치

고민하다가 이전 강의에서 maven 프로젝트의 환경설정을 할 때 프로젝트의 Properties -> Maven 에서 java EE integration 메뉴가 없어서 중단했던 걸 떠올리고 관련 내용을 구글링 하다가 이 게시글 대로 추가 설치를 진행해 봤다.

그랬더니 왜인지는 모르겠지만 Run on Server가 떴고, 이걸로 프로젝트를 실행했더니 이번에는 http 404 오류가 떴다.

(3) jsp 경로 확인

제일 어이없었던 오류
이전 예제들과는 달리 webapp -> WEB-INF -> guestbooks 에 있던 jsp 파일을 혹시나 해서 예전처럼 WEB-INF 폴더로 이동시켰더니 해결되었다.

(4) 데이터베이스 코드 수정

  • 자바의 date와 mysql의 date 자료형이 같지 않아 오류가 발생
  • auto_increment인 id를 insert할 때 제외시켜 오류 발생

-> INSERT INTO guestbook (id, name, content, regdate) VALUES (id, ?, ?, now())

여기까지 해결하니 드디어 내가 적은 값이 화면에 출력되었고 한글 깨짐만 해결하면 되었다.

(5) 한글 깨짐 해결

강의에서 알려준 것처럼 UTF-8, EUC-KR로 인코딩 설정을 해도 한글 깨짐 현상이 일어났다.

입력을 받아 데이터베이스에 보내기 전 콘솔에 출력해보니 여기서부터 한글이 깨져있었다. 즉 mysql이 아닌 입력(response)의 문제라는 것인데 코드를 확인해보니 request에만 인코딩을 설정해줬을 뿐 response에는 해주지 않았다.

따라서 doPost에 request.setCharacterEncoding("UTF-8"); 을 추가해줌으로써 프로젝트가 완성되었다. 🎊

profile
𝙝𝙞 𝙩𝙝𝙚𝙧𝙚 😎

0개의 댓글