유튜브 동빈나님의 jsp 게시판 만들기 영상을 시청한 후 인생최적화 님의 블로그를 보고 제 컴퓨터의 사양에 맞게 만들어 본 내용입니다.
코드에 대한 내용은 주석을 자세히 달아서 깃허브에 업로드 해놓았으며 해당 게시글에서는 문제를 해결한 과정과 새롭게 배운 내용에 대해서만 적었습니다.
대표님께서 참고하라고 주신 게시판 코드가 나동빈님의 jsp 게시판 만들기 영상 코드길래 그 영상과 포스팅을 보고 따라하고있다.
spl쿼리문도 잘 짜고 ERD도 정말 잘 만드는데 가장 중요한 데이터베이스 연동을 안해봤는데 이 과제 덕분에 데이터베이스가 웹과 어떻게 연동이 되는지 알게됐다.
회사에서는 mariaDB와 DBeaver를 사용한다. DBeaver는 DBMS를 사용하기 편하게 만들어놓은 툴 같다. 포스팅을 보며 따라하다보니 첫 번째로 DB와 연동하는 로그인과 회원정보조회에서 DB오류가 났다. 회사의 DB서버 아이피주소와 개발환경의 IP주소를 맞추지 않아서였다.
mariaDB와 연결시켜주는 url을 localhost로 설정했더니 로그인을 위해 아이디와 비밀번호를 입력하고 로그인 버튼을 눌렀을 때 데이터베이스에 접근하지 못했다. 회사의 db서버 ip주소로 바꿔준 이후에야 데이터베이스에 접근이 가능해졌고 jdbc드라이버까지 알맞게 넣어주니 기능이 온전히 작동했다.
데이터베이스 수업을 들을 때 대소문자에 구분 없이 테이블과 속성들에 접근할 수 있었기에 UserDAO클래스에서 join 메서드를 만들 때 insert문의 테이블명이 소문자인 포스팅을 그대로 따라썼다.
에러가 났고 에러메시지를 보니 bbs데이터베이스에 user라는 테이블은 없다. 라고 나와있어서 어딘가 USER를 user로 쓴것이라 생각하고 찾아봤고 insert문에서 실수를 발견하여 수정했더니 원하는 동작이 잘 나왔다.
(문제상황은 아니지만 유저가 게시판에 접근하고 이용을 함에 있어 중요한 과정인 것 같아서 넣었다.)
회원가입을 완료한 유저가 로그인 시 해당 유저가 작성한 글에 다른 유저들과는 다른 접근 권한을 부여해야하기 때문에 사용자별로 알맞은 세션을 부여해줘야한다.
세션 부여
1. 로그인을 성공했을 때
2. 회원가입을 성공했을 때
세션 활용
1. 로그인 된 상태에서 회원가입 불가
2. 로그인 된 상태에서 재로그인 불가
3. 로그인 된 상태에서 자신이 작성한 글에만 수정, 삭제 권한 부여
4. 세션을 부여받은 상태라면 로그인 전의 main페이지와 로그인 후(세션부여상태)의 main페이지에서 보여지는 요소가 다르다.
세션 회수
1. 로그아웃시 세션을 회수한다.
페이지별로 하나하나 코드를 작성하고 페이지가 바뀔때마다 바뀌는 페이지 하나를 온전히 띄우기 때문에 네비게이션바라던가 각 다른 화면이지만 똑같이 보여져야하는 부분이 있을 때 이미 작성한 코드를 그대로 다시 작성하고있다는 것을 알았다.
네비게이션바처럼 중복되는 부분을 페이지마다 로드시키는 것이 아닌 하나의 페이지 안에 만들어놓고 바뀌는 부분만 그때그때 바꿔주는 방법이 더 효율적이지 않을까 하는 생각이 들었다.