ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JSP- 세션(Sesssion)
    기타/Servlet 2020. 12. 9. 16:44

    정의

    클라이언트가 서버에 접속해있는 상태

    쿠키와 마찬가지로 상태 정보를 유지하는 기술

    방문자가 웹 브라우저를 열어 서버에 접속하고 다시 닫아 서버와의 연결을 종료하는 순간까지의 한 단위

    세션은 브라우저당 하나의 세션을 가진다

    세션의 종료 시점은 브라우저를 닫거나 아무 행동 없이 세션 유지시간이 다되었을 때 종료된다.

    로그인 등의 인증처리를 할 때 사용된다.

    쿠키에 비해 보안이 비교적 강하다

    세션은 쿠키와 다르게 서버에 저장된다.

    세션의 기본 유지시간은 30분이다.

    page 지시어의 session 속성이 true인 경우에만 사용할 수 있다.

     

    세션 메소드

    session.setAttribute("name", "value"); Object로 저장
    session.setAttribute("name"); 해당 이름의 session 반환
    session.getId(); 세션 고유 아이디 저장
    session.setAttributeNames(); 세션의 모든 name을 불러온다 (Enumeration 대입)
    session.removeAttibute("name"); 세션삭제
    session.invalidate(); 세션 모두 초기화

     

    예제

    로그인 페이지

    <%
    	request.setCharacterEncoding("UTF-8");
    %>
    
    <body>
    	<div class="wrap">
    		<form action="loginOk.jsp" method="post">
    			<span>아이디</span> <input type="text" name="id" class="f_input"/>
    			<span>비밀번호</span> <input type="password" name="pw"  class="f_input"/>
    			
    			<input type="submit" value="로그인" class="b_input"/>
    		</form>
    	</div>
    </body>

     

     

     

    로그인 확인 페이지

    <%
    	String id = request.getParameter("id");
    	String pw = request.getParameter("pw");
    	
    	if(id.equals("madang") && pw.equals("madang")){
    		session.setAttribute("id", id);
    		session.setAttribute("pw", pw);
    		session.setAttribute("name", "arashi");
    	}else{
    		response.sendRedirect("login.jsp");
    	}
    	response.sendRedirect("sessionInfo.jsp");
    %>

    request객체의 getParameter 메서드를 이용하여 데이터가 넘어왔다.

    이 정보를 session에 저장한다.

    세션을 저장할 때는 setAttribute(); 메서드를 이용한다.

     

    정보 저장이 끝나면 세션 정보를 가지고 sesstionInfo.jsp 페이지로 이동한다.

     

     

    세션정보페이지

    <%
    	session = request.getSession();
    	out.println(session.getAttribute("name") + "님 환영합니다 <br/>");
    %>

    단순하게 하나의 session을 불러올 때는 getSession(); 메서드를 이용한다.

    <%@ page import ="java.util.Enumeration" %>
    <%
    	out.println(session.getAttribute("name") + "님 환영합니다 <br/>");
    
    	//세션에 있는 모든 데이터의 이름을 가져온다
    	Enumeration sessionNames = session.getAttributeNames();
    	
    	//sessionNames 객체의 모든 요소들
    	while(sessionNames.hasMoreElements()){
    		String key = sessionNames.nextElement().toString();
    		String value = session.getAttribute(key).toString();
    		out.println("세션 key: " + key + "=" + value + "<br/>");
    	}
    %>
    <a href="logout.jsp">로그아웃</a>

     

     

    로그아웃

    <%
    	session.removeAttribute("id");
    	session.removeAttribute("pw");
    	// import java.util.Enumeration
    	// 세션의 모든 정보를 얻는 방법
    	// 모든 세션정보 제거하는 법
    	// session.invalidate();
    	
    	// 세션 정보가 유효한지를 식별하는 법
    	if(request.isRequestedSessionIdValid()){
    		out.println("세션 valid");
    		Enumeration<String> sessionNames = session.getAttributeNames();
    		while(sessionNames.hasMoreElements()){
    			String key = sessionNames.nextElement().toString();
    			String value = session.getAttribute(key).toString();
    			out.println("세션 key: " + key + "=" + value);
    		}
    	}else{
    		out.println("세션 invalid");
    	}
    %>

    모든 정보를 날릴 때는 session.invalidate(); 를 사용한다

    '기타 > Servlet' 카테고리의 다른 글

    JSP - 자바빈(Bean)  (0) 2020.12.10
    JSP - 예외처리 (Exception)  (0) 2020.12.10
    JSP- 쿠키(Cookie)  (0) 2020.12.09
    JSP - 액션태그  (0) 2020.12.09
    JSP - 리퀘스트 (Request) 기본객체  (0) 2020.12.09

    댓글

Designed by Tistory.