쿠키 :
서버가 클라이언트를 관리 하기 위해 변수 값을 단말, 클라이언트 쪽에 저장하는 개념이다. 클라이언트가 웹 사이트에 처음 방문 할 때 웹사이트는 클라이언트에 대한 정보를 웹 서버가 아닌 클라이언트 pc 에 저장한다. 텍스트파일로 만들어진 데이터유형을 이용하고 있기 때문에 보안상의 문제로 중요한 정보는 저장 하지 않는다.
● Cookie c = new Cookie ("키","값");
쿠키 생성. 쿠키 수정하고 싶다? 그러면 하기와 같이 동일한 키 값에 새 값만 지정 해 주면 된다.
→ Cookie c = new Cookie ("변경하고 싶은 키 이름 ","새 값");
● response.addCookie(c);
생성한 쿠키를 response 에 담는다.
=> c 에담긴 정보가 클라이언트에 저장 된다
● Cookie[ ] cookies = request.getCookies();
=> request 에 담긴 전체 쿠키를 getCookies() 로 읽는다
쿠키가 여러개 일 수 있음으로 반환 값을 배열로 한다.
● 쿠키이름 :
jsp = c.getName() / servlet = ${cookie.키.name}
● 쿠키 값 :
jsp = c.getValue () / servlet = ${cokkie.키.value}
● cookie.setMaxAge(60*60*24)
쿠키 유효 시간 설정하는 것으로 초, 분, 시 순서이며 (60*60*24)는 하루이다
● cookie.setMaxAge(0);
쿠키 삭제는 쿠키 유효시간 설정을 0 으로 해주면 된다.
▶@WebServlet("/CookieTest")
package test;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class CookieTest
*/
@WebServlet("/CookieTest")
public class CookieTest extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public CookieTest() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("euc-kr");
response.setCharacterEncoding("euc-kr");
response.setContentType("text/html; charset = EUC-KR");
String name = request.getParameter("name");
String hobby = request.getParameter("hobby");
//쿠키 생성 후
Cookie c1= new Cookie ("name", "해현"); //쿠키 하나에 정보 하나 저장
Cookie c2 = new Cookie ("hobby","티비보기");
// response 에 쿠키를 담아서 응답함 그로 인해 클라이언트 컴퓨터에 쿠키가 저장이 된다.
response.addCookie(c1);
response.addCookie(c2);
//forward 안쓰는 이유 : 쿠키는 맨 처음 딱 한 번 클라이언트 컴퓨터에 심어야 하는데
//forward 를 하면 다른 페이지로 이동 하다 클라이언트의 컴퓨터에 저장 될 수 가 없기 때문
response.sendRedirect(request.getContextPath()+ "/index.jsp");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
▶@WebServlet("/CookieRead")
package test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class CookieRead
*/
@WebServlet("/CookieRead")
public class CookieRead extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public CookieRead() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("euc-kr");
response.setCharacterEncoding("euc-kr");
response.setContentType("text/html; charset = EUC-KR");
PrintWriter pw = response.getWriter();
pw.append("<html><body>");
//reqeust에 담긴 모든 쿠키 객체를 담는다 그래서 배열로 Cookie [] cookies 담는것임
Cookie [] cookies = request.getCookies();
for (Cookie c : cookies) {
pw.append("<h3>");
pw.append(c.getName() + ":"); // c.getName() 쿠키 이름을 반환 한다.
pw.append(c.getValue() + "<br/>"); // c.getValue() 쿠키 값을 반환 한다.
pw.append("</h3>");
}
pw.append("</body></html>");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
▶index,jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>내가 만든 cookie~~~~ 너를 위해 구웠쯰~~ </h3>
<!-- EL표현식 {쿠키.키의.이름(키)속성 ] : EL표현식 {쿠키.키의.값속성} -->
${cookie.name.name } : ${cookie.name.value} <br/>
${cookie.hobby.name } : ${cookie.hobby.value} <br/>
${cookie.JSESSEIONID.name } : ${cookie.JSESSEIONID.value }
</body>
'MVC > 세션과 쿠키' 카테고리의 다른 글
세션(session)을 이용하여 회원 가입 시 아이디 중복 체크 (0) | 2023.03.31 |
---|---|
Scope개념 이해하기 (1) | 2023.03.31 |
세션(Session) 기초 (0) | 2023.03.30 |
쿠키(Cookie)와 세션(Session) (0) | 2023.03.30 |