Session,Cookie(시간유지)

김덕근·2023년 3월 30일
0

Scope

목록 보기
1/1

Session/(Application)

HttpSession session = req.getSession();

if(loginMember != null) {
	session.setAttribute("loginMember", loginMember);
	session.setMaxInactiveInterval(3600); // 3600초 == 1시간 / 초 단위로 작성

Cookie

클라이언트(브라우저)에서 관리하는 파일

  • 특정 주소 요청 시 마다

해당 주소와 연관된 쿠키 파일을 브라우저가 알아서 읽어옴
-> 읽어온 쿠키 파일 내용을 서버에 같이 전달

생성 및 사용 방법

1) 서버가 요청에 대한 응답을 할 때 쿠키를 생성한 후 응답에 쿠키를 담아서 클라이언트에게 전달

2) 응답에 담긴 쿠키가 클라이언트에 파일형태로 저장

3) 이후 특정 주소 요청 시 쿠키 파일을 브라우저가 찾아 자동으로 요청에 실어서 보냄.

4) 서버는 요청에 실려온 쿠키 파일을 사용함.

쿠키 객체 생성

//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", "아이디 또는 비밀번호가 일치하지 않습니다.");
		}

Redirect(재요청)

  • 현재 Servlet에서 응답 페이지를 만들지 않고 응답 페이지를 만들 수 있는 다른 요청의 주소로 클라이언트를 이동 시킴(재요청)
  • 클라이언트 재요청
    -> 기존 HttpServletRequest/Response 제거
    -> 새로운 HttpServletRequest/Response 생성

---> 리다이렉트 시 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() );
        
profile
안녕하세요!

0개의 댓글