221130 Cookie
쿠키세션
쿠키와 세션은 역할이 비슷하다.
addCookie(Cookie c) 쿠키를 지정합니다.
쿠키(Cookie)
브라우저(클라이언트)-서버
->요청과 응답
->응답받으면 연결을 해제한다.
1:1로 통화를 하는게 아님. 하나의 어플리케이션에는 여러 동접자가 있다. 그래서 응답하면 연결을 끊는 것
때문에 사실 우리가 보고 있는 브라우저는 사실 멈춰있는 화면이다.
a페이지-장바구니
b페이지-주문
c페이지-장바구니
3개의 페이지를 돌아다니더라도 로그인은 유지가 되어 있는 상태. 연결이 끊어지더라도.
이렇게 유지해주는 수단이 쿠키와 세션.
+)연결을 계속 유지하는 게 소켓
쿠키는 서버에서 생성하여, 서버가 아닌 '클라이언트측(local)'에 정보를 '저장'한다.
+)쿠키는 자바에서도 사용하지만 자바스크립트에서 굉장히 많이 쓴다.
쿠키는 최대 300개까지 데이터를 저장할 수 있다.
쿠키문법:쿠키클래스에서 쿠키 생성(서버에서 쿠키 생성)
쿠키는 만료 시간이 있다.
->setter메서드로 쿠키의 속성 설정(시간설정)
->response객체에 쿠키를 탑재하여 클라이언트에 보냄
->클라이언트에 쿠키 저장
클라이언트에서 서버에 요청이 들어올 때마다 response객체에서 쿠키를 확인할 수 있음
쿠키는 전부 다 문자열
쿠키시간이 만료될 떄 까지 계속해서 저장이 된다.
어떤 사이트의 창에서 7일간 열지 않기를 클릭하고 다른 컴퓨터에서 같은 사이트를 들어가도 그 창이 뜬다. 이게 쿠키
쿠키 메서드
setter메서드와 getter메서드가 있다
setMaxAge()-쿠키의 유효시간을 설정함
getName()-쿠키의 이름을 얻음
getValue()-쿠키의 값을 얻음
쿠키는 맵. 중복저장 안함. 이름이같으면 덮어씌워짐
쿠키는 f12를 하면 확인할 수 있다. 때문에 개인정보같은것도 확인이 되므로 암호화가 필요
cookie_ex01
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//쿠키는 서버에서 생성해서 response에 담아서 클라이언트로 보냅니다.
//1.쿠키 생성문
Cookie idCookie=new Cookie("user_id","kkk123");//이름과 값이 필요. 둘 다 문자열. 기본생성자가 없음
Cookie nameCookie = new Cookie("user_name", "홍길동");
//2.쿠키 시간 설정
idCookie.setMaxAge(3600);//초 단위. 1시간
nameCookie.setMaxAge(30);//30초
//3.쿠키를 response에 담는다
response.addCookie(idCookie);
response.addCookie(nameCookie);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="cookie_ex01_ok.jsp">쿠키 확인하기</a>
</body>
</html>
쿠키는 기본생성자가 없다. 이름(key값)과 value값을 넣어주어야 함
둘 다 문자열.
cookie_ex01_ok
쿠키는 nullpointexception을 피하는 것이 중요. null이 아닐 때 실행하는 구문을 잘 넣을 것
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//쿠키 확인하기
//브라우저에 쿠키는 request객체에 자동으로 넘어와서 저장됩니다.(만료되기 전까지 어디서든 사용가능)
Cookie[] cookies =request.getCookies();
//쿠키가 없으면 null이기때문에 에러가 발생
if(cookies!=null){
for(Cookie c : cookies){
out.println(c.getName()+"<br>");
out.println(c.getValue()+"<br>");
}
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>쿠키 사용하기</h3>
<a href="cookie_ex01_reset.jsp">쿠키삭제</a>
</body>
</html>
JSE~ 2DA~
이 쿠키는 크롬에서 설정된 것으로, 암호화되어 있는 형태임
nameCookie내용이 보이지 않는데, 이는 30초가 지나서 쿠키가 만료되었기 때문
cookie_reset
쿠키는 삭제가 없다. 동일한 이름의 쿠키시간을 0초로 만들어서 삭제하는 것
map과 비슷함. 같은이름으로 생성하면 대체한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//쿠키삭제-쿠키는 삭제가 없어서 동일이름의 쿠키의 시간을 0초로 만들어서 삭제
Cookie idCookie = new Cookie("user_id","kkk123");
idCookie.setMaxAge(0);
response.addCookie(idCookie);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>쿠키삭제</h3>
</body>
</html>