ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JSP] cookie, session, removeAttribute
    WEB/JSP 2022. 9. 9. 19:14

    cookie

    -쿠키는 웹사이트 접속시 접속자의 개인장치에 다운로드 되고 브라우저에 저장되는 텍스트 데이터임

    -웹사이트는 쿠키를 통해 접속자의 장치를 인식하고 접속자의 설정과 과거 이용내역에 대한 일부 데이터를 저장함

    -쿠키에는 만료일이 있음. 브라우저를 닫는 경우 자동으로 삭제되는 쿠키가 있을 수 있으며 일부는 수동으로 삭제 되기 전까지 남아 있는 쿠키가 있음

    필수쿠키 페이지 탐색 웹사이트의 보안 영역 접속 그리고 검색을 포함한 웹사이트의 기본기능을 활성화할 목적으로 사용함
    기능쿠키 웹사이트가 접속자의 지역 및 언어 등 웹사이트의 행태 및 외관에 영향을 줄 수 있는 접속자 설정을 저장하도록 허용하며, 접속자 설정에 따라 웹사이트가 작동하도록 도움을 줌
    성능쿠키 정보의 익명 수집 및 보고를 통해 웹사이트 운영자가 방문자와 웹사이트 사이의 상호 작용을 이해하는데 도움을 주며, 유저와 상호관계에 대한 통계자료를 제공함으로서 웹사이트 운영자가 더욱 최적화된 웹사이트 개발에 기여함

     

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>01_setCookies.jsp</title>
    </head>
    <body>
    <%
    	// 1. Cookie 객체 생성
    	Cookie c=new Cookie("id","hong123");
    
    	// 2. 쿠키의 유효기간 설정
    	c.setMaxAge(365*24*60*60); // 1년간의 쿠키 수명 유지
    	
    	// 3. 클라이언트에 쿠키 전송
    	response.addCookie(c);
    	
    	// 4. new 쿠키를 생성하여 클라이언트에 바로 전송
    	response.addCookie(new Cookie("pwd","text1234"));
    	response.addCookie(new Cookie("age","20"));
    %>
    <!-- pageContext, request, session,application 등은 
         서버에 존재하며 이용할 수 있는 저장소라면
         쿠키는 클라이언트 쪽에 저장되는 저장소임 -->
    </body>
    </html>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>02_getCookies.jsp</title>
    </head>
    <body>
    <% 
    Cookie[] cookies=request.getCookies(); 
    // 쿠키내용 한번에 다 얻어오는 명령-쿠키객체 배열로 얻어옴
    for(Cookie c:cookies){
    	out.println("<h2>"+c.getName()+" : "+c.getValue()+"</h2>");
    }
    %>
    </body>
    </html>

     

    01_setCookies.jsp 실행 창을 열어둔 채로 02_getCookies.jsp 실행한 결과
    위를 진행한 후 02_getCookies.jsp만 실행한 결과. setMaxAge로 유효기간 설정한 id만 남음


    session

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>03_Session.jsp</title>
    </head>
    <body>
    <%
    session.setAttribute("id","hong");
    session.setAttribute("pwd","1234");
    session.setAttribute("age",20);
    %>
    </body>
    </html>

     

    1. 세션에 저장된 값 하나씩 추출

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>04_getSession.jsp</title>
    </head>
    <body>
    <h3>세션에 저장된 값 하나씩 추출</h3>
    <%
    String id=(String) session.getAttribute("id");
    String pwd=(String) session.getAttribute("pwd");
    Integer age=(Integer) session.getAttribute("age");
    // Attribute에 저장되었던 모든 자료는 getAttribute로 꺼냈을 때 
    // Object형이므로 원래의 자료형으로 사용하기 위해서는 
    // (자료형) 같은 형변환이 필요함
    %>
    id: <%=id %><br>
    pwd: <%=pwd %><br>
    age: <%=age %><br>
    </body>
    </html>

     

    2. 세션에 설정된 모든 값 얻어오기

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>04_getSession.jsp</title>
    </head>
    <body>
    <h3>세션에 설정된 모든 값 얻어오기</h3>
    <%
    java.util.Enumeration<String> names=session.getAttributeNames(); 
    // 세션에 저장된 키값들만 얻어서 저장함
    while(names.hasMoreElements()){
    
    	// nextElement를 String형 변수에 저장
    	String name=names.nextElement().toString();
    	// (String) 형변환을 사용하지 않고 형변환 메서드를 사용
    
    	// 얻어낸 키(name)값으로 세션에서 getAttribute로 value 값을 추출함
    	String value=session.getAttribute(name).toString();
    	// (String) 형변환을 사용하지 않고 형변환 메서드를 사용
    
    	out.println(name+" : "+value+"<br>");
    }
    %>
    </body>
    </html>

    03_Session.jsp 실행한 창 열어놓고 실행

     

    3. 세션 정보를 얻어오는 메서드를 사용하기

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>05_Session_Info.jsp</title>
    </head>
    <body>
    <h3>세션 정보를 얻어오는 메서드를 사용하기</h3>
    <%
    	String id_str=session.getId(); // 현재 세션의 고유코드 얻음
    	
    	long createdtime=session.getCreationTime(); // 생성시간: 밀리초
    	long lasttime=session.getLastAccessedTime(); // 마지막 접근 시간: 밀리초
    	
    	// 사용시간(마지막 접근시간-생성시간): 밀리초 -> 1000으로 나누어 초단위로
    	long time_used=(lasttime-createdtime)/1000;
    	session.setMaxInactiveInterval(3600); // 세션의 수명(단위: 초)
    	int inactive=session.getMaxInactiveInterval()/60; // 수명을 분단위로 변환
    	boolean b_new=session.isNew(); // 새로 만든 세션의 여부
    %>
    [1] 세션 ID는 [<%=id_str %>] 입니다.<br><hr>
    [2] 당신이 웹사이트에 머문 시간은 <%=time_used %>초입니다.<br><hr>
    [3] 세션의 유효 시간은 <%=inactive %>분입니다. <br><hr>
    [4] 세션이 새로 만들어졌나요?<br>
    <%
    	if(b_new) out.print(" 예! 새로운 세션을 만들었습니다.");
    	else out.print(" 아니오! 새로운 세션을 만들지 않았습니다.");
    %>
    </body>
    </html>

    03_Session.jsp 실행한 창 열어놓고 실행


    removeAttribute

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>06_RemoveAttribute.jsp</title>
    </head>
    <body>
    <%
    	session.setAttribute("s_name1","저는 세션에 저장된 첫번재 값");
    	session.setAttribute("s_name2","저는 세션에 저장된 두번재 값");
    	session.setAttribute("s_name3","저는 세션에 저장된 세번재 값");
    	
    	out.print("<h3> >>세션값을 삭제하기 전<< </h3>");
    	java.util.Enumeration<String> names=session.getAttributeNames(); 
    	while(names.hasMoreElements()){
    		String name=names.nextElement().toString();
    		String value=session.getAttribute(name).toString();
    		out.println(name+" : "+value+"<br>");
    	}
    
        // 이름을 지정하여 세선에 저장된 객체를 제거함
    	session.removeAttribute("s_name2"); 
    
    	out.print("<hr><h3> >>세션값을 삭제한 후<< </h3>");
    	names=session.getAttributeNames();
    	while(names.hasMoreElements()){
    		String name=names.nextElement().toString();
    		String value=session.getAttribute(name).toString();
    		out.println(name+" : "+value+"<br>");
    	}
    %>
    </body>
    </html>

     

    'WEB > JSP' 카테고리의 다른 글

    [JSP] bean  (0) 2022.09.09
    [JSP] session을 이용한 loginform  (0) 2022.09.09
    [JSP] servlet, action tag form  (0) 2022.09.09
    [JSP] login form, forward form, server object  (0) 2022.09.09
    [JSP] variable, import, request, include  (0) 2022.09.09

    댓글

Designed by Tistory.