고똘이의 IT 개발이야기

안녕하세요.

 

오늘은 세션(session)에 대해서 알아보겠습니다.

 

- 세션(session)이란?

세션(session)이란 클라이언트와 웹서버간의 네트워크 통신이 이루어질때 클라이언트가 누구인지 식별할때 사용합니다. 즉 클라이언트가 서버로 요청을 하면 서버는 이 클라이언트의 세션 아이디를 판단하여 이 사용자가 누구인지 판단합니다. 간단하게 말하면 'A'라는 사용자가 로그인을 하면 서버에서 세션(session)을 생성하고 'A'라는 사용자에게 세션아이디를 다시 전달합나디. 'A'라는 사용자의 브러우저의 메모리에 저장이되며 추 후 서버로 요청을 할경우 브라우저에 저장된 세션 아이디를 가지고 내가 'A'라는 사용자라는 것을 증명합니다.

 

- 세션의 특징

● 세션이 계속 유지되면 클라이언트를 계속 구분 할 수 있다.

● 보안적인 면에서 쿠키보다 우수하다.

● 세션의 만료 시간을 두어 클라이언트가 서버에서 설정한 시간만큼 미동작 시 클라이언트의 세션을 만료 시킨다.

 

- 세션의 장단점

1. 사용자 정보를 서버에 두어서 쿠키 보다 보안상 좋다.

2. 각 클라이언트에게 고유 ID를 부여한다.

 

1. 사용자가 너무 많을경우 서버의 메모리를 많이 차지하여서 서버의 성능을 저하 시킬수 있다.

 

- 세션의 동작 순서

클라이언트(사용자)가 서버에 접속 시 세션 ID를 발급합니다.

㉯ 서버에서 받은 세션 ID를 클라이언트(사용자)브라우저의 쿠키에 저장하여 가지고 있습니다.

㉰ 클라이언트(사용자)가 무엇인가 행위를 하여 서버에 요청을할 경우 세션 ID를 같이 서버에 전달 합니다.

㉱ 서버는 세션 ID를 판변하여 클라이언트(사용자)가 누구인지 판별합니다.

 

 

- 소스코드

● 간단하게 아래와 같이 세션(session) 선언 및 메소드 몇개를 적어 놨습니다. 도움이 되었으면 좋겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
public void sessionTest(HttpServletRequest req) {
        
        // 세션 선언
        HttpSession session  = req.getSession();
        
        // 사용자 session 저장
        session.setAttribute("userId""aboc11");
        
        // 사용장 session 가져오기
        String userId = (String)session.getAttribute("userId");
        
        // 유저의 아이디는 위에 셋팅한 'aboc11'를 표츌.
        System.out.println("유저 아이디 :: " + userId);
        
        // session의 고유 Id를 반환한다.
        session.getId();
        
        // 현재 생성된 session를 무효화 시킨다.  
        session.invalidate();
        
}
 
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

 

- 글을 마치며

대단히 장황하고 이런 글은 아니지만 처음 세션를 접하는 분들에게는 조금이라도 개념을 잡고 도움이 되었으면 하는 마음으로 글을 썼습니다.

 

글을 읽으시는 분들에게 모두 도움이 되었으면 좋겠습니다.

감사합니다.

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band