본문 바로가기

Language/Java / JSP

[JSP] session(세션)을 이용한 로그인

반응형

우리가 일반적으로 사용하는 회원 로그인등을 구현할때 많이 사용되는것이 세션(session) 객체이다.

사용자의 로그인 정보를 쿠키나 세션등에 저장하여 로그인 여부를 확인할 수 있는데, 클라이언트에 저장되는 쿠키와는 달리
세션(session) 정보는 웹 서버(컨테이너)에 저장이 되므로 보안상 더 유리하다.

위와 같은 이유로 많은 사람들이 로그인 구현시 세션(session)을 활용하여 많이 구현한다.
세션은 클라이언트의 브라우저 1개당 1개씩 생성이 되며, 동일 클라이언트(동일 PC)라 할지라도 브라우저 종류(FF,Chrome,IE)가 다르면 세션을 추가로 생성하는게 가능하다.

이 경우 특별한 로그인 방식을 취하지 않으면 여러 브라우저에서 동시 로그인이 가능하다는 이야기가 된다.


JSP에서의 세션은 javax.servlet.http 의 HttpSession을 사용하며, JSP의 request, response와 마찬가지로 기본 내장객체로 지정되어 있어 별도의 구현없이 손쉽게 사용이 가능하다.


세션(session) 객체에서 사용할 수 있는 메소드는 다음과 같다.


 Method

 Return

 Description

setAttribute(String name, Object value)

void

 세션 객체를 생성한다

 getAttribute(String name)

Object

 해당 세션 객체를 가져온다

 getAttributeNames()

Enumeration

 해당 세션 이름 전체를 가져온다.

 setMaxInactiveInterval(int interval)

void

 세션 유지시간을 지정한다.(초 단위)

 removeAttribute(String name)

void

 세션 객체를 삭제한다.

 getMaxInactiveInterval()

int

 세션 유지시간을 가져온다

 getId()

String

 세션 고유 ID를 가져온다

 invalidate()

 void

 전체 세션을 무효화 시킨다.




사실 세션에서 중요한 것은 getId() 부분이다. 위에서 말했듯이 클라이언트의 브라우저 1개당 고유 세션이 생성되는데,

이때 해당 세션을 구분할수 있게끔 하는것이 세션고유ID 이다. 이 고유ID는 처음 세션이 생성되는 시점에 자동으로 생성이 된다.


그렇기 때문에 setAttribute를 이용하여 여러 세션을 만들어도 세션고유ID에 종속되므로 각기 다른 사용자들의 세션을 구분할 수 있는것이다.



마지막으로 jsp 페이지에서의 세션은 아래와 같이 사용하면 된다.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%
	String id = "홍길동" ;
	String addr = "서울" ;


	// 세션 생성
	session.setAttribute("name", id) ;
	session.setAttribute("addr", addr) ;


	// 세션 유지시간 설정(예 : 1시간)
	session.setMaxInactiveInterval(60*60)

	// 세션값 가져오기
	out.println(session.getAttribute("name");
	out.println(session.getAttribute("addr");


	// 세션값 삭제
	session.removeAttribute("addr")


	// 세션값 가져오기
	out.println(session.getAttribute("name");

	// 세션을 삭제했으므로 addr은 안나옴
	out.println(session.getAttribute("addr");



	// 세션 전체 무효화(로그아웃시 주로 사용)
	session.invalidate();

%>