[프로젝트 B] 방명록 만들기

Minkyeong Kim·2021년 11월 13일
1

[boostcourse] Web-Backend

목록 보기
20/55
post-thumbnail

파일 구조

dao
|_📂 GuestbookDao.java

데이터베이스에 직접 접근하는 메서드 위치
dto
|_📂 Guestbook.java

데이터 객체 위치

servlet
|_📂 GuestbookListServlet.java
doget 메서드 위치

|_📂 GuestbookWriteServlet.java
doPost 메서드 위치

src/main/Webapp/WEB-INF/guestbook
|_ 📂 guestbooks.jsp
페이지 화면을 띄우는 jsp 파일

구현해야 할 것

  1. GuestbookDao.java에 getGuestbooks, addGuestbook 함수를 구현한다.

  2. Servlet 클래스에서 doGet, doPost 메서드를 작성한다. 이때 Servlet과 jsp 연동에 대한 개념 필요함.

1. GuestbookDao.java 구현

이부분은 이전에 했던 Dao 작성을 참고하여 (비교적) 빨리 작성할 수 있었다.

2. Servlet 구현

doGet

  • GuestbookDao 객체를 생성하여 getGuestbooks함수를 실행해 list를 jsp로 보낼 수 있도록 구현하였다.
  • Servlet 데이터를 jsp로 보내는 부분이 웹 백엔드 강의에 없었는지 내가 못찾은건지 안보여서 구글링해서 코드를 작성하였다.

🚨 연동할 때 jsp 경로 설정을 주의할 것!

origin 서버가 대상 리소스를 위한 현재의 representation을 찾지 못했거나, 그것이 존재하는지를 밝히려 하지 않습니다. 라는 에러를 한참동안 디버깅하다가 결국 경로가 문제임을 알게되었다...😥
다음과 같이 WEB-INF/(프젝이름)/(jsp파일) 으로 경로를 설정해주어야 한다.

RequestDispatcher rd = request.getRequestDispatcher("WEB-INF/guestbook/guestbooks.jsp");
rd.forward(request, response);

doPost

  • 날짜부분에서 java.util.Date와 java.sql.Date에서 차이가 나서 1차시도로 형변환을 해봤지만 실패.
    구글링해서 Date타입도 String 형태로 쿼리문에 입력했더니 성공했다!

  • redirect하는 부분도 약간 헤맸지만, localhost뒤에 붙이는 경로를 지정해주면 해결된다.

  • 아래는 doGet과 doPost 함수까지 작성 완료하고 실행해본 결과이다

  • utf-8 문제로 한글이 입력이 안되는 문제가 발생
    form 입력에서 request오는 과정에서 utf-8지정이 안되어 발생하는 문제였던 것 같다.
    doPost 부분에서 다음과 같이 설정해주면 한글도 잘 동작한다.
    request.setCharacterEncoding("UTF-8");

완성🎇

처음에는 막막했지만 몇시간정도 쏟아부으니 완성되었다..
웹의 시초를 경험한 느낌이었고, DB와 Servlet, jsp파일들 간의 통신에 대해 확실하게 이해할 수 있는 계기가 된 프로젝트였다. 점점 이클립스도 익숙해지고 있고 앞으로 자바공부도 틈틈이 해야겠다.

REFERENCES
https://www.boostcourse.org/web326/project/206/content/165#summary

https://blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=gingsero&logNo=221326924715&categoryNo=0&parentCategoryNo=0&viewDate=¤tPage=1&postListTopCurrentPage=1&from=postView&userTopListOpen=true&userTopListCount=5&userTopListManageOpen=false&userTopListCurrentPage=1

0개의 댓글