본문 바로가기
Programming/JSP

[JSP] 쿠키와 세션 - 세션

by 공부합시다홍아 2024. 5. 6.
 

[JSP] 쿠키와 세션 - 쿠키

[JSP] 내장 객체[JSP] GET과 POST[JSP] 태그[JSP] 서버와 클라이언트👨‍💻웹 프로그래밍이란?- 웹 프로그래밍이란, 웹 어플리케이션을 구현하는 행위입니다. - 웹 어플리케이션이란 웹을 기반으로 작

hong-study.tistory.com


✨세션

  • 세션도 쿠키와 마찬가지로 서버와의 관계를 유지하기 위한 수단이다.
  • 쿠키와 달리 클라이언트에서 저장되는 것이 아니라, 서버 상에 객체 형태로 존재한다.
  • 서버당 하나의 세션 객체를 가질 수 있다. ( 브라우저 별 서로 다른 세션 사용 가능 )
  • 세션 객체는 브라우저 창을 종료하면 삭제된다.
  • 세션은 서버에서만 접근이 가능하여 보안이 높고, 저장할 수 있는 데이터에 한계가 없다.
    ▶ 즉, 사용자에 대한 모든 정보를 세션에 담고 동작해도 상관없다.
  • 세션은 클라이언트 요청이 발생하면 자동 생성되어 고유한 ID 값을 클라이언트에 넘겨주며 이것은 쿠키에 저장된다.
  • JSP에서는 Session이라는 내장 객체를 지원하여 세션의 속성을 설정할 수 있다.

session 객체 관련 메서드


세션 속성 GET과 SET 사용

// session_set 파일
<%
	// 세션은 - 서버와 클라이언트에서 정보를 유지하기 위한 수단
	// 서버에서 생성하고, 서버에서 관리함
	session.setAttribute("user_id", "xxx123");
	session.setAttribute("user_name", "이순신");
%>
// HTML코드 이하생략
<body>
	<a href="session_get.jsp">세션확인하기</a>
</body>
// session_get 파일
<%
	// 세션의 값을 얻는 방법 getAttribute(키)
	String user_id = (String)session.getAttribute("user_id");
	String user_name = (String)session.getAttribute("user_name");
    
    // 세션의 유효시간
	int time = session.getMaxInactiveInterval();
%>

// HTML코드 이하생략
<body>
	세션에 저장된 값: <%= user_id %> <br>
	세션에 저장된 값: <%= user_name %> <br>
	세션의 시간: <%= time %> <br>
</body>


세션 삭제하기

// 위아래 코드 생략
<%
	// 세션 삭제하기
	session.removeAttribute("user_name"); // 이러면 user_name만 삭제됨
	
	// 세션을 통째로 제거
	session.invalidate();
%>

세션을 통한 로그인하기

  • 아이디, 비밀번호, nick을 받음
  • 아이디 비밀번호가 동일하면 로그인 성공이라고 간주하고 (user_id, id)의 세션생성
  • (user_nick, 닉네임)을 세션을 생성
  • session_welcome로 이동해서 화면에 "id님 환영합니다"를 출력
  • 틀린경우는 로그인페이지로 리다이렉트 처리
  • session_welcome페이지에서는 a태그를 이용해서 로그아웃 기능을 만들어준다.
  • session_logout페이지에서는 세션을 삭제하고 리다이렉트를 하면 됨
// 로그인 페이지
<body>
	<h2>세션 로그인 연습</h2>
	<form action="session_login_ok.jsp" method="post">
		아이디:<input type="text" name="id"><br>
		비밀번호:<input type="password" name="pw"><br>
		닉네임:<input type="text" name="nick"><br>
		<input type="submit"  value="로그인">
	</form>
</body>

// 로그인 성공 혹은 실패 여부 페이지, 실패하면 로그인화면으로 되돌아감
<%
	request.setCharacterEncoding("utf-8");
	
	String id = request.getParameter("id");
	String pw = request.getParameter("pw");
	String nick = request.getParameter("nick");
	
	// 그냥 로그인 성공이라고 가정
	if(id.equals("a1") && pw.equals("123")) {
		session.setAttribute("user_id", id);
		session.setAttribute("user_nick", nick);
		response.sendRedirect("session_welcome.jsp");
	} else {
		response.sendRedirect("session_login.jsp");
	}
	
%>
// 로그인 성공 시 페이지
<%
	// 여기에서 세션이 없다 -> 인증이 안 된 사람
    	if(session.getAttribute("user_id") == null) {
		response.sendRedirect("session_login.jsp");
	}
    
    String user_id = (String)session.getAttribute("user_id");
	String nick = (String)session.getAttribute("user_nick");
%>

<body>
	<%= user_id %>님 환영합니다 ㅋㅋ <br>
	닉네임은? <%= nick %> ㅋㅋ <br>
	<a href="session_logout.jsp">로그아웃하기</a>
</body>
// 로그아웃 페이지
<%
	session.invalidate(); // 세션 삭제
%>

<body>
	로그아웃 성공! <br>
	<a href="session_login.jsp">로그인 화면으로 돌아가기</a>
</body>


🍪쿠키와 ✨세션 비교

  • 쿠키 대신에 세션을 사용하는 가장 큰 이유는 세션이 쿠키보다 보안성이 높기 때문이다.
  • 쿠키의 이름이나 데이터는 네트워크를 통해 전달되기 떄문에 HTTP 프로토콜을 사용하는 경우 중간에서 누군가가
    쿠키의 값을 읽어올 수 있다.
  • 세션은 오직 서버에만 저장되기 때문에 중요한 데이터를 저장하기 유리하다.
  • 세션을 사용하는 또 다른 이유는 웹 브라우저가 쿠키를 지원하지 않거나 강제로 사용자가 쿠키를 차단한 경우에도 사용할 수 있다는 점이다.
  • 세션은 여러 서버에서 공유할 수 없다는 단점이 있다. 
  • 쿠키는 도메인을 이용해 쿠키를 여러 도메인에서 공유할 수 있기 때문에 NAVER, DAUM과 같은 포털사이트들은 
    쿠키에 로그인 방식을 저장하는 것을 선호한다. 


👨‍💻Application 기본 객체

특정 웹 어플리케이션에 포함된 모든 JSP 페이지는 하나의 Application 기본 객체를 공유한다.
application 객체는 웹 어플리케이션 전반에 걸쳐 사용되는 정보를 담고 있다.

728x90

'Programming > JSP' 카테고리의 다른 글

[JSP] Action Tag, 액션 태그  (0) 2024.05.06
[JSP] 예외 페이지  (0) 2024.05.06
[JSP] 쿠키와 세션 - 쿠키  (0) 2024.05.06
[JSP] 내장 객체  (0) 2024.05.06
[JSP] GET과 POST  (0) 2024.05.06