이하 구디아카데미 김지훈 강사님의 수업자료와 강의 내용 정리, 실습한 내용을 정리함
지하철 파업 너무너무 싫다...🚃
기본 경로, GET 메서드로 들어오면 매핑해줌
index 메서드 실행하면 index 페이지로 보냄
joinForm 경로, GET 메서드로 들어오면 joinForm 메서드를 실행, joinForm.jsp 로 보냄
join 경로, POST 메서드로 들어오면 params 를 매개변수로 하여 join 메서드 실행
MemberService 클래스를 객체화 해옴(일 시키기 위해)
service 객체의 join 메서드에 params 를 넣어 실행한 반환값을 변수 msg 에 담아줌
model 객체를 이용해서 "msg"라는 이름으로 msg 값을 세팅해줌
index 로 보냄
1. login 경로, POST 메서드로 들어오면 login 메서드를 매개변수 model, session, id의 값, pw의 값을 받아서 실행
2. service 객체의 login 메서드에 id, pw 를 넣어서 실행한 결과를 boolean 타입 변수 success 에 담아줌
3. page 는 기본적으로 index 로 세팅해 줌
4. 만약 success 가 true 면 session 에 "LoginID"라는 이름으로 id 값을 세팅해줌
5. 그리고 page 는 redirect로 /list 요청을 보냄
// 어원은 Re(다시) + direct(요청하다/지시하다)이며, 구체적으로는 웹 브라우저가 웹 서버에 어떤 URL을 요청했을 때, 서버가 리다이렉트를 지시하는 특정 HTTP 응답을 통해 웹 브라우저로 하여금 지정된 다른 URL로 재요청하라고 지시하는 것을 말한다.
사용자의 요청 정보가 바뀌어버리는 리다이렉트와 요청 정보는 그대로 유지한 체 서버 내부의 동작만 바뀌는 포워드는 적절히 사용되어야 한다.
리다이렉트는 클라이언트의 요청에 의해 서버의 DB에 변화가 생기는 작업에 사용된다. 예를 들어 DB의 유저 테이블을 변경하는 회원가입과 같은 경우에는 리다이렉트가 사용되어야 요청을 중복해서 보내는 것을 방지할 수 있다.
포워드는 특정 URL에 대해 외부에 공개되지 말아야 하는 부분을 가리는데 사용하거나 조회를 위해 사용된다. 스프링의 경우 /WEB-INF에 있는 view에 대한 정보들이 외부에 직접 공개되지 말아야 할 때 내부에서 포워딩을 통해 /WEB-INF 경로를 가리키도록 한다. 예를 들어 kotlinworld.com/95 로 요청을 하면 kotlinworld.com/WEB-INF/95를 응답하는 형식이다.
로그인 실패하면 msg 라는 키에 "아이디 또는 비밀번호를 확인하세요!" 라는 메시지를 담음
반환값은 page
경로가 list 로 들어오는 녀석을 처리해줌
list 메서드는 매개변수 model 과 session으로 실행됨
page 기본값은 index 이며 msg 기본 세팅은 "로그인이 필요한 서비스입니다."
로그인 여부를 판단하기 위해 if 문 실행
session에 loginID 값이 널이 아니면 page 에 list 를 담고 msg 에 환영합니다를 담음
그리고 객체화해온 service의 list 메서드의 실행값을 list 라는 키에 세팅함.
msg 에는 msg 값을 세팅
반환값 page
join 메서드 실행 시 msg 의 초기값은 "회원 가입에 실패했습니다."
db 가 필요하기 때무넹 MemberDAO 를 객체화해옴
dao 의 join 메서드를 params 값을 넣어 실행한 반환 값을 row 에 담음
row 가 0보다 크면 msg 에는 회원가입에 성공했습니다를 띄움
매개변수 id 와 pw 를 받는 login 메서드를 실행하면 MemberDAO 를 객체화 해옴
반환값은 dao 의 login 메서드를 실행한 결과
(초기값 세팅)
1. Connection 멤버변수 conn 을 선언해 줌
2. PreparedStatement 멤버변수 ps 도 선언해줌
3. ResultSet 멤버변수 rs 도 선언해 줌
생성자로 생성
context를 ctx 에 담아줌
ctx 로 db 경로를 찾아서 데이터 소스화하여 ds 에 담아줌
ds 에 커넥션을 실행하여 conn 에 담아줌
close 메서드 실행하면
rs 가 null 이 아닐 때 rs 를 닫아주고, ps 가 null 이 아닐 때 ps를 닫아주고 conn 이 null 이 아닐 때 conn 을 닫아준다.