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>
세션은 클라이언트와 웹 서버 간의 상태를 지속적으로 유지하는 방법입니다.
웹 서버에서만 접근이 가능하므로 보안 유지에 유리하며 데이터를 저장하는 데 한계가 없다고 하네요!!
다른 페이지로 넘어갔다가 다시 원래 페이지로 돌아오면 로그인이 유지되는 것도 세션의 역할이네요!!
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~
'BackEnd > JSP' 카테고리의 다른 글
[JSP 웹 프로그래밍] 쿠키 1 (Cookie 생성) (0) | 2023.03.12 |
---|---|
[JSP 웹 프로그래밍] 세션 2 (session 삭제, 유효 시간 설정) (0) | 2023.03.12 |
[JSP 웹 프로그래밍] 필터 2 (web.xml 파일의 필터 구성) (0) | 2023.03.08 |
[JSP 웹 프로그래밍] 필터 1 (Filter 인터페이스) (0) | 2023.03.08 |
[JSP 웹 프로그래밍] 예외 처리 3 (try-catch-finally 이용한 예외 처리) (0) | 2023.03.08 |