JSP - #4 Session

임다이·2023년 11월 2일
0

Jsp/Servlet

목록 보기
9/10

Session

Web Server에 있는 데이터 영역을 통해서 데이터를 전달하는 방법
브라우저가 종료되기 전까지 클라이언트의 정보를 유지하게 해주는 기술

  • 사용자 정보 파일을 서버 측에서 관리


  • Session 특징
    • 각 클라이언트에게 고유 ID를 부여
    • 보안 면에서 Cookie 보다 우수
    • 사용자가 많아질수록 서버 메모리를 많이 차지하게 됨
    • 저장위치 : ServerPC
    • 보안 : 우수
    • 용량 : 서버가 허용하는만큼 가능
    • 저장형식 : 객체 저장 가능

  • Session 사용 예
    로그인 같이 보안상 중요한 작업을 수행할 때 사용

  • Session 동작원리

    → J SESSION ID : 브라우저를 구별하기 위한 임시 키

  • Session 객체 생성
  • Session에 데이터 저장
  • Session 유효기간 설정
  • Session 조회
  • Session 삭제

  • Cookie와 Session의 차이


    → Cookie는 지워지거나, 조작되거나, 가로채이더라도 괜찮은 정보들
    → Session은 서비스 제공자가 직접 관리해야 할 정보들

실습

  • makeSession.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    
        <ol>
            Session : Client의 정보를 유지하기 위해서 사용하는 방법
            <li> 저장위치 : ServerPC </li>
            <li> 보안 : 우수 </li>
            <li> 용량 : 서버가 허용하는만큼 가능 </li>
            <li> 저장형식 : 객체 저장 가능 </li>
        </ol>
    
        <%
            // 1. 세션 값 설정 setAttribute(name(String), value(Object))
            session.setAttribute("id", "test");
            session.setAttribute("age", 20);
    
            // 어차피 서버가 알아서 세션 아이디를 부여해줄 거기 때문에 따로 응답X
        %>
    
        <a href="./Ex04_showSession.jsp"> 세션확인 </a>
    
    </body>
    </html>
  • showSession.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    
        <%
            // 세션 값 가져오기
            String id = (String)session.getAttribute("id");
            Integer age = (Integer)session.getAttribute("age");
        %>
    
        아이디 : <%= id %> <br>
        나이 : <%= age %>
    
        <a href="Ex05_deleteSession.jsp"> 세션삭제 </a>
        <a href="Ex06_InvalidateSession.jsp"> 모든세션삭제 </a>
    
        기본 세션 유효시간 : <%= session.getMaxInactiveInterval() %> <br>
        세션 아이디 : <%= session.getId() %>
    
        <br>
    
        <% session.setMaxInactiveInterval(5); %>
        세션 유효시간 : <%= session.getMaxInactiveInterval() %>
    
    </body>
    </html>
  • deleteSession.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    
        <%
            session.removeAttribute("id");
            session.removeAttribute("age");
        %>
    
        <a href="Ex04_showSession.jsp"> 세션확인 </a>
    
    </body>
    </html>
  • InvalidateSession.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    
        <%
            // 세션 값 모두 삭제
    
            session.invalidate(); // 무효화하다
    
        %>
    
        <a href="Ex04_showSession.jsp"> 세션확인 </a>
    
    </body>
    </html>

profile
노는게 제일 좋아~!

0개의 댓글