https://www.youtube.com/playlist?list=PLieE0qnqO2kTyzAlsvxzoulHVISvO8zA9
쿠키
웹브라우저에서 서버로 어떤 데이터를 요청하면(request), 서버에서는 알맞은 로직을 수행 한 후 데이터를 웹브라우저에 응답한다(response).
그리고, 서버는 웹브라우저와의 관계를 종료한다. 응답 후 관계를 끊는 것은 http 프로토콜의 특징이다.
따라서, 연결이 끊겼을 때 어떤 정보를 지속적으로 유지하기 위한 수단으로 쿠키 를 사용한다.
쿠키는 서버에서 생성하여, 서버가 아닌 클라이언트 측에 특정 정보를 저장합니다. 그리고 서버에 요청 할 때마다 쿠키의 속성값을 참조하거나 변경할 수 있다.
쿠키는 4kb 로 용향이 제한적이며, 300개까지 데이터 정보를 가질 수 있다.
로컬 상에 텍스트가 있으므로 해킹의 위험이 있다. 점차 사용하지 않는 추세이다.
생성 방법
쿠키는 서버에서 샡성되고, 클라이언트에 전송되어 저장된다.
- 쿠키 생성: 쿠키 클래스를 이용한다.
- 속성 설정: setter 를 이용한다.
- response 객체에 쿠키 탑재: response.addCookie() 를 이용한다.
- 쿠키를 삭제한다.
메소드
- setMaxAge(), getMaxAge(): 유효기간
- setPath(), getPath(): 유효 디렉토리 - 어떤 파일까지 사용 가능한지
- setValue(), getValue(): 값 설정
- setVersion(), getVersion(): 버전 설정
- getName()
예제
<!-- cookieset.jsp -->
<%
Cookie cookie = new Cookie("cookieName", "cookieValue");
cookie.setMaxAge(60*60); //1시간
response.addCookie(cookie);
%>
<a href="cookieget.jsp">cookie get</a>
<!-- cookieget.jsp -->
<%
Cookie[] cookies = request.getCookies();
for(int i=0; i<cookies.length; i++) {
String str = cookies[i].getName();
if(str.equals("cookieName")) {
out.println("cookies[" + i + "] name : " + cookies[i].getName() + "<br />");
out.println("cookies[" + i + "] value : " + cookies[i].getValue() + "<br />");
out.println("=====================<br />");
}
}
%>
<a href="cookiedel.jsp">cookie delete</a>
<!-- cookiedel.jsp -->
<%
Cookie[] cookies = request.getCookies();
for(int i=0; i<cookies.length; i++) {
String str = cookies[i].getName();
if(str.equals("cookieN")) {
out.println("name : " + cookies[i].getName() + "<br />");
cookies[i].setMaxAge(0); //삭제
response.addCookie(cookies[i]); //수정하거나 삭제 할 때 다시 탑재해야
}
}
%>
<a href="cookietest.jsp">쿠키확인</a>
<!-- cookietest.jsp -->
<%
Cookie[] cookies = request.getCookies();
if(cookies != null) {
for(int i=0; i<cookies.length; i++){
out.println(cookies[i].getName() + "<br />");
out.println(cookies[i].getValue() + "<br />");
}
}
%>
쿠키로 로그인 & 로그아웃 구현
DB 연결 없이 특정 아이디와 비밀번호를 판단하는 로그인/아웃을 구현한다.
<!-- login.html -->
<form action="loginOk.jsp" method="post">
아이디 : <input type="text" name="id" size="10"><br />
비밀번호 : <input type="password" name="pw" size="10"><br />
<input type="submit" value="로그인">
</form>
<!-- loginOk.jsp -->
<%!
String id, pw;
%>
<%
id = request.getParameter("id");
pw = request.getParameter("pw");
if(id.equals("abcde") && pw.equals("12345")) {
Cookie cookie = new Cookie("id", id); //쿠키제작
cookie.setMaxAge(60); //시간 설정
response.addCookie(cookie); //응답 객체에 결부
response.sendRedirect("welcome.jsp"); //성공
} else {
response.sendRedirect("login.html"); //실패
}
%>
<!--welcome.jsp -->
<%
Cookie[] cookies = request.getCookies();
for(int i=0; i<cookies.length; i++) {
String id = cookies[i].getValue();
if(id.equals("abcde")) out.println(id + "님 안녕하세요." + "<br />");
}
%>
<a href="logout.jsp">로그아웃</a>
<!-- logout.jsp -->
<%
Cookie[] cookies = request.getCookies();
if(cookies != null) {
for(int i=0; i<cookies.length; i++) {
if(cookies[i].getValue().equals("abcde")){
cookies[i].setMaxAge(0);
response.addCookie(cookies[i]);
}
}
}
//response.sendRedirect("login.html");
response.sendRedirect("cookietest.jsp");
%>
