JSP를 이용한 커뮤니티 게시판 4장 - 로그인

大 炫 ·2020년 11월 3일
0

jsp게시판

목록 보기
4/9
post-thumbnail

4장에서는 ,,

1.session을 이용한 로그인과 회원가입,
2.회원가입시 기본프로필 이미지를 부여, 닉네임과 더불어 수정이 가능하고,
3.회원가입한 유저의 db정보를 삭제시키는 간단한 회원탈퇴,
4.게시판의 기본적인 crud,
5.게시글의 pagination,
6.게시글의 추천수와 최신수에 따라 정렬이 가능한 select option,
7.게시글의 keyword에 해당하는 content 또는 title을 포함하는 검색기능
8.댓글과 대댓글
9.접속된 유저들끼리 주고받을 수 있는 websocket의 채팅

3장에는 회원가입을 다뤘고,
4장에서는 로그인에대해 다뤄보려고한다.

기본적인 틀은 거의 같아 구조부터 보고 시작하면 좋을 듯하다.

로그인 패턴

실제 사용자가 로그인을 하기위해서부터 시작해보자
최초 index.jsp에서 login.do 즉 login.jsp로 이동해서 redirect되는 설명은 생략하겠다.

web(index.jsp)

controller(BoardController)

Action(MemberLoginAction)

web(login.jsp)

여기가 로그인하려는 유저가 정보를 기입하는 login.jsp이다.
우선 form태그의 action으로 정보가 전달되기전 빈 값인지 검사하는 onsubmit이벤트 먼저 살펴보겠다.

3장에서의 회원가입은 회원가입 전 정규표현식 검사 및 빈 값인지 검사하고, 그 값이 action으로 전달됬을 때도 정규표현식과 빈 값을 검사했는데
그렇게 회원가입된 아이디를 검사하다보니 다음에 나올 loginProcAction에서 getPara로 가져온 값에 대해서만 검사를 진행하고 따로 script에서는 빈값인지만 검사를 하게됬다.

이제 빈 값이 아니라면 action으로 전달됬고 받는놈은

controller(BoardController)

이놈이고 이놈은 다시

Action(MemberLoginProcAction)

이놈을 호출하게된다. 우선 아까 말했듯 받아온 값을 검사하고, 이상이 없다면 유저가 입력한(getPara("id")) id값에 대해서 Member테이블에 실제 존재하는 아이디인지 조회를 해야하고, 있다면 user의 정보를 가져와 최초 유저가 입력한 pwd와 로그인 창에서 입력한 pwd가 일치하는지 비교해야한다.
때문에 먼저 service의 getMember메서드가 호출된다.

Service(BoardService)

service는 다시 dao를 호출하고,

DAO(BoardDAO)

이렇게 사용자가 입력한 아이디값을 가지고 DB에서 일치하는 id값에 대한 user의 정보를 가져오게된다. 그 값들은 vo에 set되게 되고 set된 vo를 return함으로서 우리가 최초 action페이지로 돌아갔을때 return받은 vo로, 입력받은 pwd와 vo.getPwd를 비교함으로써 유저의 로그인 성공여부를 결정하게된다.
물론 이과정에서 vo.get값이 null값이 된다면 "없는 아이디"를, vo가 null값이 아니고 vo.getPwd와 pwd를 비교했을때 일치하지 않는다면 "일치하지 않는 비밀번호" 라고 출력해도되겠지만, 보안상의 이유나 유행의 이유나 뭐 이런저런 이유로 나는 그저

Action(MemberLoginProcAction)

로그인 정보를 확인하라는 경고창만 띄우게된다.
id값가 pwd가 일치했을때 이제 로그인 상태로 변경하기위해 lgn_fl이라는 값을 true로 바꾸기위해 set먼저 해주고(후에 DB에서도 true로 바꿔야하기때문에) 다시 로그인 하기 위해 service에 loginMember메서드를 호출한다.

Service(BoardService)

boolean형이나 int형이나 이런부분은 취향차이라고 생각한다.

DAO(BoardDAO)

지금 vo는 user의 정보를 모두 담고있는데, 이 값의 pk인 sq에 해당하는 유저를 로그인 시키기위해 logn_fl을 true로 update해주는 모습이다.

이렇게 구문오류없이 로그인이 성공하고나면 action에서 유저의 id값에 session을 등록해주는것이다.

LoginManager

이곳의 LoginManager은 session을 등록, 만료 등 관리하는 곳인데 사실 큰 이해를 하지 않고 지나간 부분이다.

이 LoginManager는 로그인이 성공하여 session이 등록되면 모든 페이지에서 접속자의 id값을 불러올수 있게되는데 그래서 다시 home으로 이동해서 로그인이 성공됬다면 회원가입/로그인이 아닌
유저정보/로그아웃 이라는 html이 표현되도록

web(index.jsp)

선언해준 뒤

이렇게 작성한다면 action에서 로그인이 성공한 뒤 home으로 돌아왔을 때 성공적으로 회원정보와 로그아웃이 보이게되는걸 확인 할 수 있다.

++ Action(MemberJoinAction)

++여담으로 만약 회원가입하자마자 로그인이 되게하려면

기존의 이 JoinMember 코드에서

이렇게 추가만 해줘도 회원가입시 로그인으로 바로 이어지는 모습을 확인할 수 있다.

4장은 이렇게 마무리를 하는데 3장에 많은 설명을 해놔서 생략되는 부분이 많을 수 있다.
이부분은 여기 3장에서 확인해보면 좋을 듯 하다.

4장마무리 ,,

공부하며 즐거움을 느낄때 !

앞장에서 나는 어느정도 프론트부분을 마무리해가며, 백엔드도 공부하기위해 팀원이 짜놓은 코드를 참고하면서 나만의 코드로 다시 구축하게되는데, 이때 대부분이 처음 코드를 분석할때는 조금 더딘 학습속도에 즐거움을 많이 못느낄 수 도있다.
하지만 이런 mvc패턴은 정형화된 틀을 이해하고 나아가 그 틀을 완벽하게 내것으로 제어할 수 있을 때 나는 많은 즐거움을 느끼는 편이다.

즐거움이 있어야 빠른성장도, 빠른성장은 다시 즐거움으로..

무지막지하고 끝이 안보이는 프로그래머의 길을 걷는 모두를 응원해요.

profile
대현

0개의 댓글