본문 바로가기

BackEnd/JSP

[JSP 웹 프로그래밍] 세션 1 (session 생성, 정보)

728x90
반응형

1. 세션(session)
   ▷ 클라이언트와 웹 서버 간의 상태를 지속적으로 유지하는 방법
      ▶ 예를 들면 웹 쇼핑몰에서 장바구니나 주문 처리와 같은 회원 전용 페이지의 경우 로그인 인증을 통해 사용 권한을 부여
      ▶ 다른 웹 페이지에 갔다가 되돌아와도 로그인 상태가 유지되므로 회원 전용 페이지를 계속 사용할 수 있음
      ▶ 이렇게 사용자 인증을 통해 특정 페이지를 사용할 수 있도록 권한 상태를 유지하는 것
   ▷ 웹 서버에서만 접근이 가능하므로 보안 유지에 유리하며 데이터를 저장하는 데 한계가 없음 

   ▷ 오직 웹 서버에 존재하는 객체로 웹 브라우저마다 하나씩 존재하므로 웹 서버의 서비스를 제공받는 사용자를 구분하는 단위가 됨
   ▷ 웹 브라우저를 닫기 전까지 웹 페이지를 이동하더라도 사용자의 정보가 웹 서버에 보관되어 있어 사용자 정보를 잃지 않음

 

 

 

 

2. 세션 생성
   ▷ session 내장 객체의 setAttribute( ) 메소드를 사용
   ▷ setAttribute( ) 메소드를 이용하여 세션의 속성을 설정하면 계속 세션 상태를 유지할 수 있음
   ▷ 만약 동일한 세션의 속성 이름으로 세션을 생성하면 마지막에 설정한 것이 세션 속성 값이 됨


   ▷ 첫 번째 매개변수 name은 세션으로 사용할 세션 속성 이름을 나타내며, 세션에 저장된 특정 값을 찾아오기 위한 키로 사용
   ▷ 두 번째 매개변수 value는 세션의 속성 값
      ▶ 세션 속성 값은 Object 객체 타입만 가능하기 때문에 int, double, char 등의 기본 타입은 사용할 수 없음

 

◎ 세션 생성하기 예제

1. session01.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Session</title>
</head>
<body>
	<form action="session01_process.jsp" method="POST">
		<p> 아 이 디 : <input type="text" name="id">
		<p> 비밀번호 : <input type="text" name="passwd">
		<p><input type="submit" value="전송">
	</form>
</body>
</html>​

 



2. session01_process.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Session</title>
</head>
<body>
	<%
		String user_id = request.getParameter("id");
		String user_pw = request.getParameter("passwd");
		
		if(user_id.equals("admin") && user_pw.equals("1234")){
			session.setAttribute("userID", user_id);
			session.setAttribute("userPW", user_pw);
			out.println("세션 설정이 성공했습니다<br>");
			out.println(user_id+"님 환영합니다");
		} else{
			out.println("세션 설정이 실패했습니다");
		}
	%>
</body>
</html>​


로그인 성공하면 아래와 같은 화면이 출력됩니다.

 

3. 세션 정보

◎ 단일 세션 정보 얻기
   ▷ 세션에 저장된 하나의 세션 속성 이름에 대한 속성 값을 얻어오려면 getAttribute( ) 메소드를 사용
   ▷ getAttribute( ) 메소드는 반환 유형이 Object 형이므로 반드시 형 변환을 하여 사용해야 함


   ▷ 첫 번째 매개변수 name은 세션에 저장된 세션 속성 이름
   ▷ 해당 속성 이름이 없는 경우 null을 반환

 

◎ 세션에 저장된 속성 값 가져와 출력하기 예제

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Session</title>
</head>
<body>
	<%
		String user_id = (String) session.getAttribute("userID");
		String user_pw = (String) session.getAttribute("userPW");
		
		out.println("설정된 세션의 속성 값 [1] : " + user_id + "<br>");
		out.println("설정된 세션의 속성 값 [2] : " + user_pw);
	%>
</body>
</html>

 

 

◎ 다중 세션 정보 얻기

 

 

◎ 세션에 저장된 모든 세션 속성 이름과 속성 값 가져와 출력하기 예제

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.Enumeration" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Session</title>
</head>
<body>
	<%
		String name;
		String value;
		
		Enumeration en = session.getAttributeNames();
		int i = 0;
		
		while(en.hasMoreElements()){
			i++;
			name = en.nextElement().toString();
			value = session.getAttribute(name).toString();
						
			out.println("설정된 세션의 속성 이름 [ " + i + " ] : " + name + "<br>");
			out.println("설정된 세션의 속성 값 [ " + i + " ] : " + value + "<br>");
		}
	%>
</body>
</html>

 

 

세션은 클라이언트와 웹 서버 간의 상태를 지속적으로 유지하는 방법입니다.

 

웹 서버에서만 접근이 가능하므로 보안 유지에 유리하며 데이터를 저장하는 데 한계가 없다고 하네요!!

 

다른 페이지로 넘어갔다가 다시 원래 페이지로 돌아오면 로그인이 유지되는 것도 세션의 역할이네요!!

 

많은 분들의 피드백은 언제나 환영합니다!  많은 댓글 부탁드려요~~

 

 

728x90
반응형