[JSP] 15. 쿠키(cookie) 총정리

(13) 쿠키 (API 사용)

 cookieform.html : 로그인정보입력 form태그. 아이디, 비번, 로그인버튼을 post방식으로 cookieset.jsp로 전송한다.


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 정보 입력</title>
</head>
<body>
    <h1> 로그인 정보 입력</h1>
    <form action="cookieset.jsp" method="get">
        아이디: <input type=text name=id>
        비번: <input type=password name=pw>
        <input type=submit value=로그인>
    </form>
</body>
</html>



cookieset.jsp: form정보 쿠키로 생성 클라이언트 저장한다.(jsp에서 받은 값을 쿠키정보에 Setting)

1. 전송받은 값을 변수에 저장하고  쿠키를 생성해서 그 값을 저장한다.


2. 그리고 (무조건) 쿠키 클라이언트 전송한다. (response.addCookie를 사용해서) (기본적으로 : 브라우저 종료시까지만 값이 저장되있다 )

// 단, 24시간 유지하도록 설정가능하다. 

// 쿠키의 나이를 설정해주면 서버, 브라우저 종료이후라도 사용가능하도록한다. setMaxAge();//초단위

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<%@page import="java.net.URLEncoder"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset=UTF-8">
<title> 쿠키 정보값 셋팅</title>
</head>
<body>
<%--
    <% 
    String id= request.getParameter("id");
    String pw= request.getParameter("pw");
    //member 테이블 조회 구현 완료
    //1번 입력 정보 계속 사용하도록 쿠키를 사용하자.
    
    //1. 쿠키 저장 정보 생성
    Cookie cookie1= new Cookie("cookieid",id);
    Cookie cookie2= new Cookie("cookiepw",pw); 
    //pw는 쿠키에 저장하면 안되고(보안연관되기에), 매번 입력할떄 유동적으로
    //id값만 24시간 유지: 브라우저, 서버종료 이후 가능
    cookie1.setMaxAge(60*24*60); //초 단위 ==> 24시간으로 id값만 서버, 브라우저가 종료되도 보이도록
    
    //2. 쿠키 클라이언트 전송(기본적으로 : 브라우저 종료시까지 )
    // 단, 24시간 유지하도록 설정가능하다.
    response.addCookie(cookie1);
    response.addCookie(cookie2);    
    %> 
--%>
    
    <%
    //1. 사용자 현재 서버 방문시마다 최근 방문시각 출력
    // 2017/08/10/11/12/13; 시간 날짜 객체 생성
    // 유효기간: 30일 지속 저장
    // 쿠키 저장
    String today= new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date());
    //Date now= new Date();
    //String today= now.toLocaleString();
    today= java.net.URLEncoder.encode(today,"utf-8");
    Cookie cookie3 = new Cookie("todayEx",today); //today를 넣을때 문자형만 넣을  있다
    
    cookie3.setMaxAge(60*60*24*30);
    
    response.addCookie(cookie3);    
    //cookieget.jsp: 쿠키 출력 => 2017/8/9 xxxx 최근접속
    %>
</body>
</html>


 cookieget.jsp : 다음서버 연결 쿠키 전송


3. 클라이언트로부터 쿠키 전송받아서 배열에 저장후 출력 (java 객체x) /쿠키 보안정보 저장 권장x



실행방법 : form => set -> get (이떄, set과 get실행 브라우저는 동일한 인터넷으로해야함. 크롬과 explore11 X)



저장된 쿠키 파일형식을 확인해보기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset=UTF-8">
<title> 저장된 쿠키값 출력 </title>
</head>
<body>
<%-- 
    <% 
    //클라이언트자리 저장
    //동일 클라이언트: 동일ip의 동일브라우저
    //(크롬 경우: ie cookie)
    //3. 클라이언트로부터 쿠키 전송받음
    
    Cookie[] cookies = request.getCookies();
    
    for(int i=0; i<cookies.length; i++){
        out.println("<h4>"    +cookies[i].getName()    +"="    +cookies[i].getValue()    +"</h4>");    
        }
    %> 
--%>
 
    <%
    Cookie[] cookies = request.getCookies();
    for(int i=0; i<cookies.length; i++){
        if(cookies[i].getName().equals("JSESSIONID")){ //JSESSIONID=~~~~~~~는 그냥 session=true로 인해 자동으로 만들어지는 id값
        continue;
        }    
        else if(cookies[i].getName().equals("todayEx")){ //날짜정보가 들어있는 todayEx가 보여지는대로 화면에 출력이된다면........
            String today=
                    java.net.URLDecoder.decode(cookies[i].getValue(),"utf-8"); //set쿠키에 한글이 들어온경우, 인코딩을 했는데 get에서 출력할때 원래의 값으로 바꾸라는 문장
            
            out.println("<h3>마지막 방문 시각은"+today+"입니다</h3>");
        }
        else{
            out.println("<h3>"+cookies[i].getName()+"</h3>");
        }
        out.println("<h3>"+cookies[i].getValue()+"</h3>");
    }
    %>
 
</body>
</html>





※ 추가적으로 Cookieset과 Cookieget을 다음과 같이 바꾸어서 출력해봅시다.


//1. 사용자 현재 서버 방문시마다 최근 방문시각 출력한다.

// 2017/08/10/11/12/13; 시간 날짜 객체 생성한다.

// 유효기간: 30일 지속 저장한다.

// 쿠키 저장한다.




//2. cookieget.jsp: 쿠키 출력 => 2017/8/9 xxxx 최근접속