HttpSession session = req.getSession();
if(loginMember != null) {
session.setAttribute("loginMember", loginMember);
session.setMaxInactiveInterval(3600); // 3600초 == 1시간 / 초 단위로 작성
클라이언트(브라우저)에서 관리하는 파일
해당 주소와 연관된 쿠키 파일을 브라우저가 알아서 읽어옴
-> 읽어온 쿠키 파일 내용을 서버에 같이 전달
1) 서버가 요청에 대한 응답을 할 때 쿠키를 생성한 후 응답에 쿠키를 담아서 클라이언트에게 전달
2) 응답에 담긴 쿠키가 클라이언트에 파일형태로 저장
3) 이후 특정 주소 요청 시 쿠키 파일을 브라우저가 찾아 자동으로 요청에 실어서 보냄.
쿠키 객체 생성
//Cookie c = new Cookie("클라이언트쪽에 저장될 쿠키 이름", "쿠키 내용"); Cookie c = new Cookie( "saveId" , inputEmail );
// 아이디 저장이 체크된 경우
if( req.getParameter("saveId") != null ) {
// 쿠키 파일을 30일 동안 유지
c.setMaxAge(60 * 60 * 24 * 30); // 30일(1초 단위)
} else {
// 쿠키 파일을 0초 동안 유지
// -> 기존에 존재하던 쿠키 파일에 유지 시간을 0초 덮어씌움
// == 삭제하겠다는 소리
c.setMaxAge(0);
}
// 해당 쿠키 파일이 적용될 주소를 지정
c.setPath( req.getContextPath() );
// req.getContextPath() : 최상위 주소(/community)
// -> /community 로 시작하는 주소에서만 쿠키 적용
// 응답 객체를 이용해서 클라이언트로 전달
resp.addCookie(c); // 코드가 해석되는 순간 바로 전달
} else { // 실패
session.setAttribute("message", "아이디 또는 비밀번호가 일치하지 않습니다.");
}
---> 리다이렉트 시 request 객체가 유지되지 않기 때문에
특정 데이터를 전달하거나 유지하고 싶으면
session 또는 application 범위에 세팅해야 한다!
//dispatcher.forward(req, resp);
// CGV 카페
// ex) 팝콘 주세요 -> 팝콘 파는 위치를 알려줌 -> (클) 팝콘 파는 곳으로 이동
// 클 캐셔(Servlet) 클라이언트의 다른 주소 재요청
resp.sendRedirect( req.getContextPath() );
// req.getContextPath() : 최상위 주소 (/community)
### *** 로그아웃 ***
// Session Scope에 세팅된 회원 정보를 없앰
// Session 얻어오기
HttpSession session = req.getSession();
// 1) Session에서 회원 정보만 없앰
// session.removeAttribute("loginMember");
// 2) Session 전체를 없애고 새로운 Session 만들기 (더 많이 사용되는 방법)
session.invalidate(); // 세션 무효화
// 현재 세션을 없앰 -> 자동으로 새로운 세션이 생성됨
// 메인 페이지로 돌아가기
// 1) forward : 로그아웃 응답 화면을 만든다 (부적절)
// 2) redirect : 메인페이지 재요청 (이거다!)
// 메인페이지 == 최상위 주소(/community)로 요청했을 때 화면
resp.sendRedirect( req.getContextPath() );