카테고리 없음

[JSP] session의 사용

유호야 2020. 12. 2. 11:07
반응형

웹에서 세션(session)의 사용

 

1. 세션(session)의 개요

 

쿠키가 웹 브라우저에 사용자의 상태를 유지하기 위한 정보를 저장했다면, 세션(session)은 웹 서버 쪽의 웹 컨테이너에 상태를 유지하기 위한 정보를 저장한다.

 

세션은 사용자의 정보를 유지하기 위해 javax.servlet.http 패키지의 HttpSession 인터페이스를 구현해서 사용한다. 쿠키는 사용자의 상태 유지를 위한 정보를 웹 브라우저에 저장해서 웹 서버가 쿠키 정보를 읽어서 사용한다.

이것은 웹 브라우저에 저장된 쿠키는 웹 서버에서 열어볼 수 있다는 점에서 보안상 문제가 발생할 수 있다.

따라서 사용자의 정보를 유지하기 위해서는 쿠키를 사용하는 것보다 세션을 사용한 웹 브라우저와 웹 서버의 상태 유지가 훨씬 안정적이고, 보안상의 문제도 해결할 수 있다.

 

세션은 웹 브라우저 당 1개씩 생성되어 웹 컨테이너에 저장된다.

 

웹 서버는 각각의 웹 브라우저로부터 발생한 요청에 대해서 특별한 식별자를 부여한다. 이후에 이 식별자를 웹 브라우저에서 발생한 요청들과 비교해서 같은 식별인지를 구별하게 된다. 이 특별한 식별자에 특정한 값을 넣을 수 있으며, 이것을 사용해서 세션을 유지하게 된다.

 

2. 세션(Session) 메소드 리스트

 

3. 세션(Session)의 속성

- 세션의 속성 설정은 session 객체의 setAttribute() 메소드를 사용한다.

session.setAttribute("id", "value");

이때 주의할 사항은 세션의 속성 값은 객체 형태만 올 수 있다는 것이다.

session 객체는 웹 브라우저와 매핑되므로 해당 웹 브라우저를 닫지 않는 한 같은 창에서 열려진 페이지는 모두 같은 session 객체를 공유하게 된다. 따라서 session 객체의 setAttribute() 메소드를 사용해서 세션의 속성을 지정하게 되면 계속 상태를 유지하는 기능을 사용할 수 있게 된다.

- 세션의 속성을 사용하려면 session 객체의 getAttribute() 메소드를 사용한다.

String id = (String)session.getAttribute("id");

getAttribute() 메소드는 리턴 타입이 Object 타입이므로 사용 시 실제 할당된 객체 타입으로 형변환(casting)을 해야 한다.

- 세션의 속성을 삭제하려면 session 객체의 removeAttribute() 메소드를 사용한다.

session.removeAttribute("id");

- 세션의 모든 속성을 삭제할 때는 session 객체의 invalidate() 메소드를 사용한다.

session.invalidate();

4. 세션(Session) 사용 예제

- 세션(Session) 설정 (로그인 성공시에 로그인 아이디를 세션에 저장한다.)

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



<% request.setCharacterEncoding("euc-kr");%>



<%

String id = request.getParameter("id");                        // request에서 id 파라미터를 가져온다

String passwd = request.getparameter("passwd");      // request에서 passwd 파라미터를 가져온다.



--- 로그인 처리 ...   로그인 성공시 check 는 TRUE --



if(check){                                                        // 로그인 성공시



session.setAttribute("id", id);                 // 세션에 "id" 이름으로 id 등록

response.sendRedirect("main.jsp");               // 로그인 성공 메인페이지 이동



}else{%>                                                        // 로그인 실패

<script>

alert("로그인 실패");

history.go(-1);                                    // 이전 페이지로 이동

</script>

<%}%>

 

- 세션(Session) 가져오기 (세션에서 아이디를 가져와 로그인 상태를 인증하고, 값이 없을 경우 로그인 페이지로 넘긴다.)

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



<% request.setCharacterEncoding("euc-kr");%>



<%



String id = "";



try{

id = (String)session.getAttribute("id");            // request에서 id 파라미터를 가져온다



if(id==null||id.equals(""){                            // id가 Null 이거나 없을 경우

response.sendRedirect("loginform.jsp");    // 로그인 페이지로 리다이렉트 한다.

}

<%}%>

 

 

- 세션(Session) 제거하기 (로그아웃 시 현재의 세션 정보를 제거한다.)

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



<% session.invalidate(); %>                         // 세션 정보 제거



<script>

alert("로그아웃 되었습니다.");

location.href="logout.jsp";                                    // 로그아웃 페이지로 이동

</script>



출처: https://hyeonstorage.tistory.com/125 [개발이 하고 싶어요]

 

 

 

출처 : hyeonstorage.tistory.com/125

반응형