티스토리 뷰
1. 쿠키
클라이언트와 웹 서버 간의 상태를 지속적으로 유지하는 방법
클라이언트(웹 브라우저)에 저장. (↔ 세션과 다른 점)
웹 서버 부하를 줄일 수 있으나 웹상에 저장하기 때문에 보안상 문제
※ 쿠키와 세션의 차이점 ※
쿠키 | 세션 | |
사용 클래스 | Cookie 클래스 | HttpSession 인터페이스 |
저장 형식 | 텍스트 형식 | Object형 |
저장 장소 | 클라이언트 | 서버 (세션 아이디만 클라이언트 저장) |
종료 시점 | 쿠키 저장 시 설정 설정하지 않을 경우 웹 브라우저 종료 시 소멸 |
정확한 시점 불분명 |
리소스 | 클라이언트 리소스 사용 | 서버 리소스 사용 |
보안 | 클라이언트 저장. 보안 취약 | 서버 저장. 상대적 안정성 |
(1) 동작과정
-생성 : 웹 서버측에서 생성. 응답 데이터와 함께 저장되어 웹브라우저에 전송
-저장 : 응답 데이터에 포함된 쿠키를 쿠키 저상소에 보관. 메모리나 파일로 저장
-전송 : 웹 브라우저는 한 번 저장된 쿠키를 요청이 있을 때마다 웹 서버에 전송
웹 서버는 웹 브라우저가 전송한 쿠키를 사용하여 필요한 작업 수행.
웹 브라우저에 쿠키가 저장되면 쿠키가 삭제도기 전까지 웹 브라우저는 웹 서버에 쿠키 전송. 웹 애플리케이션을 사용하는 동안 지속적으로 유지해야 하는 정보는 쿠키를 이용해 저장.
(2) 쿠키 클래스 메소드(15)
getName() | getValue() | setValue() | |
쿠키 이름 반환 | 쿠키에 설정된 값 반환 | 쿠키의 값 설정 | |
getMaxAge() | setMaxAge(0) | getComment() | setComment() |
사용 가능 기간 반환 | 쿠키 유효 기간 설정 (쿠키 삭제 시 이용) |
쿠키 설명 반환 | 쿠키 설명 설정 |
getDomain() | setDomain() | getPath() | setPath() |
유효한 도메인 정보 반환 | 유효한 도메인 설정 | 디렉토리 정보 반환 | 디렉토리 정보 설정 |
getSecure() | setSecure() | getVersion() | setVersion() |
보안 설정 반환 | 보안 설정 | 쿠키 버전 반환 | 쿠키 버전 설정 |
2. 쿠키 생성
-쿠키 메소드 사용 : Cookie()
생성 후 response 내장 객체의 addCookie() 메소드로 쿠키 설정해야 함.
쿠키 사용 : 쿠키 클래스로 쿠키 생성 → 쿠키 설정(response 내장 객체 addCookie() 메소드)
<!--쿠키 식별 이름 / 쿠키 값-->
Cookie cookie = new Cookie("userID", user_id);
response.addCookie(cookie);
#예제) 쿠키 생성
-입력 폼 페이지
<form action="cookie01_process.jsp" method="post"> <!--쿠키생성 프로세스 연결-->
<p>ID : <input type="text" name="id"></p>
<p>PW : <input type="text" name="pw"></p>
<p><input type="submit" name="전송"></p>
</form>
-프로세스 페이지 : 쿠키 생성
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Cookie</title>
</head>
<body>
<%
String user_id = request.getParameter("id"); <!--입력값 가져오기-->
String user_pw = request.getParameter("pw");
if(user_id.equals("admin")&&user_pw.equals("1234")){
Cookie cookie_id = new Cookie("userID", user_id);
Cookie cookie_pw = new Cookie("userPW", user_pw);
response.addCookie(cookie_id); <!--쿠키 생성 시 해야하는 작업-->
response.addCookie(cookie_pw);
out.println("쿠키 생성이 성공<br>");
out.println(user_id+"님 환영합니다.");
}else{
out.println("쿠키 생성에 실패했습니다.");
}
%>
</body>
</html>
-출력 결과
쿠키 생성이 성공 admin님 환영합니다. |
3. 쿠키 정보
생성된 쿠키 정보 : request 내장 객체의 getCookie() 메소드 사용해 쿠키 객체 얻어옴
>> getName(), getValue() 메소드로 쿠키 이름과 값을 가져옴
클라이언트에 저장된 모든 쿠키 객체 가져오기
Cookie[] cookies = request.getCookies()
#예제) 쿠키 객체에 저장된 모든 쿠키 값 가져와 출력
(에러 뜬 상태) → 전체 지웠다가 다시 붙여넣으니 아무것도 수정 안 했는데 정상 출력됨. 이거 뭐야...진짜;;
<%@ 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>
<%
Cookie[] cookies = request.getCookies(); //모든 쿠키 값 가져오기
out.println("현재 설정된 쿠키의 개수 : "+ cookies.length + "<br>");
out.println("--------------------------------<br>");
for(int i=0; i<cookies.length; i++){
out.println("설정된 쿠키의 속성 이름 [ "+ i + " ] : "+ cookies[i].getName()+"<br>");
out.println("설정된 쿠키의 속성 값 [ "+ i + " ] : "+ cookies[i].getValue()+"<br>");
out.println("--------------------------------<br>");
}
%>
</body>
</html>
-출력 결과
현재 설정된 쿠키의 개수 : 3 -------------------------------- 설정된 쿠키의 속성 이름 [ 0 ] : userID 설정된 쿠키의 속성 값 [ 0 ] : admin -------------------------------- 설정된 쿠키의 속성 이름 [ 1 ] : userPW 설정된 쿠키의 속성 값 [ 1 ] : 1234 -------------------------------- 설정된 쿠키의 속성 이름 [ 2 ] : JSESSIONID 설정된 쿠키의 속성 값 [ 2 ] : 9B1B9A1DDA4F8477B85282E3442ADC7C -------------------------------- |
4. 쿠키 삭제
쿠키의 유효기간을 0으로 설정해 쿠키를 삭제. setMaxAge(0)
#예제) 쿠키 객체에 저장된 모든 쿠키 삭제
<%@ 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>
<%
Cookie[] cookies = request.getCookies();
for(int i=0; i<cookies.length; i++){
cookies[i].setMaxAge(0); //쿠키 유효기간을 0으로 설정해 삭제하는 것.
response.addCookie(cookies[i]);
}
//쿠키 출력하는 곳으로 이동
response.sendRedirect("cookie02.jsp");
%>
</body>
</html>
[연습문제03]
'수업 > └JSP' 카테고리의 다른 글
[CH18]Ajax (0) | 2022.02.21 |
---|---|
[CH16]JDBC (0) | 2022.02.18 |
[CH13]세션 연습문제 (0) | 2022.02.17 |
[CH13]세션(Session) (0) | 2022.02.17 |
[CH07]파일업로드 (0) | 2022.02.15 |
- Total
- Today
- Yesterday
- 입력양식
- border-spacing
- html
- improt
- 스크립태그
- CascadingStyleSheet
- html atrribute
- Java
- A%B
- caption-side
- html a tag
- ScriptTag
- empty-cell
- 기본선택자
- html base tag
- text formatting
- typeof
- html layout
- css
- html input type
- selcetor
- 미디어 태그
- BAEKJOON
- input type 종류
- 변수
- 외부구성요소
- scanner
- html pre
- JavaScript
- initialized
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |