예비개발자/JSP

[ 웹 쇼핑몰 ] 섹션3 JSP 쿠키 & 세션 4

삼푸요정 2023. 4. 16.
반응형
반응형

 

 

[ 웹 쇼핑몰 ] 섹션3 JSP 쿠키 & 세션 3

[ 웹 쇼핑몰 ] 섹션3 JSP 쿠키 & 세션 1,2 쿠키에 대한 내용을 정리하여 그림으로 만들어봤다. 네이버 로그인 페이지에 보면 로그인 상태 유지라는 체크 칸이 존재하는 것을 볼 수 있다. 우리가 로그

shampooelf.tistory.com

세션은 사용자로부터 넘어온 정보를 브라우저에서 저장하는 것이 아니라 서버 측에서 저장한다. 

쿠키는 웹브라우저 자체 내 쿠키 저장소에 저장되는 반면 세션은 서버 측에 저장된다는 점에서 차이가 있다. 

세션은 쿠키와 달리 재시작을 하면 내용이 사라지게 된다. 

그 이유는 데이터베이스에 저장되는 것이 아닌 서버측의 메모리에 저장되기 때문이다. 

웹 브라우저 당 하나의 세션이 웹 컨테이너(톰캣 서버)에 저장된다.

 

세션을 사용하는 이유는

페이지가 바뀌어도 내용을 유지하고 싶을 때 사용한다. 

 

은행 모바일 어플을 예를 들어보자면

내가 로그인 한 후 

송금을 한 다음 계좌 잔액을 조회하고 또 누군가에게 송금하였다고 가정해보자

내 로그인 상태는 풀리지 않은 상태에서 여러가지 일을 수행하였다.

세션이라는 기능이 있었기 때문에 

나의 로그인이 풀리지 않고 여러 페이지를 왔다 갔다 할 수 있었다.

 

request.getparameter 를 통해서도 가능하지만 

그렇다면 

 

위 주소창 처럼 아이디와 패스워드 값이 고스란히 노출될 위험이 있고 

복잡하기 때문에 session을 사용하는 것이 더 좋다.

 

< SessionLoginForm.jsp >

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<body>
<center>
	<h2> 세션 로그인 </h2>
	<form action="SessionLoginProc.jsp" method="post">
	<table width="400" border ="1">
	<tr height="50">
		<td width="150">아이디</td>
		<td width="250"><input type="text" name="id"></td>
	</tr>
	<tr height="50">
		<td width="150">패스워드</td>
		<td width="250"><input type="password" name="pass"></td>
	</tr>
	<tr height="50">
		<td colspan="2" align="center"><input type="submit" value="로그인"></td>
	</tr>
	</table>	
	</form>	
	</center>
</body>
</html>

세션이 끊기지 않고 잘 이어지는지 확인하기 위해서는 

SessionLoginProc과 SessionLoginProc2 jsp 파일을 생성하였다.

SessionLoginProc에서 SessionLoginProc2로 이동해도 

입력했던 정보가 안끊기는지 확인하기 위함이다..!

 

< SessionLoginProc.jsp >

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<body>
<center>
<h2> 세션 로그인 처리1 </h2>	
	

<%

	request.setCharacterEncoding("euc-kr");
	
	//사용자로부터 데이터를 읽어드림
	String id = request.getParameter("id");
	String pass = request.getParameter("pass");
	
	//아이디와 패스워드를 저장(저장 시 setAttribute 사용)
	session.setAttribute("id", id);
	session.setAttribute("pass", pass);
	
	//세션을 유지 시간 설정
	session.setMaxInactiveInterval(60);
%>
	<h2>당신의 아이디는 <%=id %> 입니다. 패스워드는 <%=pass %>입니다.</h2>
	<a href="SessionLoginProc2.jsp">다음 페이지로 이동</a>
</center>
</body>
</html>

session.setAttribute를 통해 아이디와 패스워드를 저장한다.

그리고 setMaxInactiveInterval 메소드를 통해 유지 시간을 설정해준다. 

현재 나는 60초로 설정되어있는 상태이다. 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<body>
<center>
<h2> 세션 로그인 처리2 </h2>	
	

<%
	//세션을 이용하여 데이터를 불러옴
	String id = (String)session.getAttribute("id");
	String pass = (String)session.getAttribute("pass");
	//오브젝트 타입으로 담겨지기 때문에 string타입으로 캐스트가 필요하다. 	
%>
	<h2>당신의 아이디는 <%=id %> 입니다. 패스워드는 <%=pass %>입니다.</h2>
</center>
</body>
</html>

세션을 저장한 것을 불러올 때는 getAttribute를 사용한다. 

여기서 (String으로 캐스팅하였는데 이는 오브젝트로 담겨지기 때문에 스트링 타입으로 따로 캐스트가 필요하다. 

 

반응형

댓글