(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 최근접속
'WEB 기초 > Jsp' 카테고리의 다른 글
[JSP] 17. 방문자 문제 (Cookie 이용) (0) | 2018.04.23 |
---|---|
[JSP] 16. 세션(Session) 총 정리 (0) | 2018.04.23 |
[JSP] 14. 도서구매 정보입력창 문제 (0) | 2018.04.23 |
[JSP] 13. 표준 액션 태그 (java Bean & java Property) (0) | 2018.04.23 |
[JSP] 12. forward 이용하기 (include 대신해서) (0) | 2018.04.23 |