이하 구디아카데미 김지훈 강사님의 수업자료와 강의 내용 정리, 실습한 내용을 정리함
개힘들다ಥ_ಥ... 개발자 될 수 있는 걸까...
controller
MemberController
- 기본 경로 index.jsp
- joinForm 요청이 들어오면 joinForm.jsp 로 보냄
- join 요청이 들어오면 map 타입 변수 params로 값들을 받음
- service 에 매개변수 params 를 넣고 join 메서드 실행해서 String 타입 변수 msg에 담음
- model 객체를 이용해 "msg"라는 키값에 msg 를 담음
- index.jsp 로 보냄
login
- login 이라는 요청이 들어올 때 실행
- login 메서드는 매개변수로 model 객체, id, pw 값, seesion 객체 사용
- page 기본 값은 index
- service 의 login 메서드에 id, pw 값을 넣어 실행한 결과를 Member DTO 타입의 변수 dto 에 담음
- dto 가 null 이 아니면(id 와 pw 가 일치하면) session 의 setAttribute 메서드로 loginInfo 라는 키로 dto를 부를 수 있도록 함
- 만약 dto 의 perm 값이 null 이 아니면(관리자라면) 변수 page 에 "redirect:/member/list" 를 담음
- null 이라면 page 에 redirect:/board/list 를 담음
- dto 가 null 이면 "msg" 키에 "id 또는 pw 를 확인하세요." 입력
- 메서드의 반환값은 page
member/list
- memberlist 메서드는 model 객체와 session 객체를 매개변수로 작동
- 변수 page 기본값 index
- session 의 loginInfo 를 가져와서 MemberDTO 타입 변수 dto 에 담음
- 만약 info 가 null 이 아니고 info 의 perm이 null이 아니면(로그인 됐고 관리자면) 실행문 실행
- service 의 memberList 메서드 실행하여 ArrayList 변수 memberList 에 담음
- model 객체 사용하여 memberList 라는 키로 memeberList 를 불러올 수 있게 함
- model 객체 사용하여 msg 키로 "환영합니다, 관리자 id(로그인 id) 님!" 이라고 출력
- 조건 불충족 시 msg 키로 "해당 페이지에 대한 권한이 없습니다" cnffur
- 메서드 반환값은 page
logout
- logout 요청이 들어오면 처리
- logout 메서드는 매개변수 session 사용
- session 의 메서드 removeAttribute를 써서 loginInfo 라는 세션을 삭제함
- context 경로를 redirect 함
jsp 에서 <a href="<c:url value='/logout'/>">
로 입력 시 logout 요청은 상대 경로가 되어서 /member/logout 이나 /board/logout 모두 요청 받게 된다.
BoardController
boardList
- /board/list 로 요청이 오면 처리
- 메서드 boardList 는 model, session 을 매개변수로 실행된다
- session 의 loginInfo 를 가져와서 형변환을 해서 memberDTO 타입의 변수 info에 넣는다.
- service 에 boardList 라는 메서드를 실행해서 값을 BoardDTO 를 ArrayList 에 담은 형태의 변수 boardList에 담아준다.
- model 객체를 이용해서 "boardList"라는 키로 boardList 를 부를 수 있게 한다.
- model 객체를 이용해서 "msg"라는 키로 "환영합니다, "+info.getId()+" 님! 라는 문자열을 부를 수 있게 한다.
- boardList.jsp 로 이동한다.
service
MemberService
join
- join 메서드는 map 타입 매개변수 params 를 받아 실행
- dao에 일을 시킴 overlay 라는 이름으로, params 에서 id 를 가져와서 -> int 타입 변수 cnt 에 담음
- msg 기본 값은 "회원가입에 실패하였습니다."
- 만약 cnt 가 0이면(id 셀렉트 값이 0 이면 같은 id 의 가입자 없음) dao의 join 메서드에 params 넣어서 실행
- 존재하는 아이디가 없으면 회원 가입 절차 진행
- 만약 params 의 auth 값이 null 이 아니면 dao의 setPermission 메서드를 매개변수 넣어 실행. id 라는 키에 admin 이라고 값을 넣음
- msg 에 회원가입 성공
- cnt 가 0이 아닐 시에는 "이미 사용 중인 아이디"
- msg 값 리턴
login, memberList, boardList
BoardService
boardList
dao
MemberDAO
boardDAO
member_mapper
join / setPermission(가입 시 가입자 타입 체크)
- 요청 id 는 join 이고 parameter 타입은 map 임
- member 테이블의 블라블라 컬럼에 블라블라 키로 들어온 값들을 insert 함
- 요청 id 가 setPermission 임
- author 테이블의 id, perm 컬럼에 param1 과 param 2값을 넣음(입력된 아이디, admin 이라는 글자 들어감)
login
- login 이라는 요청이 들어오면 select 문 실행, 반환타입은 com.spring.main.dto.MemberDTO
- member 테이블의 id, author 테이블의 perm, member 테이블의 name 을 가져옴 / member 테이블과 author 테이블을 left join 해서(member 테이블의 id 는 author 의 perm 이 없어도 모두 가져옴) / member 테이블의 id 와 author 테이블의 id 가 같을 때 / member 테이블의 id 는 param1 이고, member 테이블의 pw 는 param2 라면(둘 모두 조건 충족)
board_mapper
- boardList 라는 요청이 들어오면 select 문 실행, 반환 타입은 com.spring.main.dto.BoardDTO
- bbs 테이블에서 셀렉트 해옴 / bbs의 idx, bbs의 subject, bbs 의 user_name, bbs 의 bHit, img 라는 이름으로 photo 테이블에서 bbs 의 idx 와 photo 의 idx 가 같은 것의 idx의 개수를 가져옴