본문 바로가기
Programming/JSP

[JSP] 쿠키와 세션 - 쿠키

by 공부합시다홍아 2024. 5. 6.
 

[JSP] 내장 객체

[JSP] GET과 POST[JSP] 태그[JSP] 서버와 클라이언트👨‍💻웹 프로그래밍이란?- 웹 프로그래밍이란, 웹 어플리케이션을 구현하는 행위입니다. - 웹 어플리케이션이란 웹을 기반으로 작동되는 프로그

hong-study.tistory.com


🍪 쿠키

  • 웹 브라우저에서 서버로 데이터를 요청하면, 서브측에서는 알맞은 로직을 수행한 후 데이터를 웹 브라우저에 응답한다.
  • Http 프로토콜은 응답 후에 웹 브라우저와의 관계를 종료한다.
  • 연결이 끊겼을 때, 어떤 정보를 지속적으로 유지하기 위한 수단으로 쿠키라는 방식을 사용한다.
  • 쿠키는 서버에서 생성하여, 서버가 아닌 클라이언트측(LOCAL)에 정보를 저장한다.
  • 서버에서 요청할 때마다 쿠키의 속성값을 참조 또는 변경할 수 있다.
  • 쿠키는 개단 4kb로 용량이 제한적이며, 300개까지(1.2MB) 데이터 정보를 가질 수 있다.

🍪 쿠키와 관련된 메서드

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	// 쿠키 = 서버와 클라이언트의 지속적인 관계를 유지하기 위한 수단
	// 서버에서 생성해서 -> 클라이언트에 저장
	
	// 1. 쿠키생성
	Cookie c = new Cookie("aaa", "홍길동"); // 앞은 키, 뒤는 값
	
	// 2. 쿠키에 속성 설정
	c.setMaxAge(30); // 수명이 30초
	
	// 3. response에 담는다
	response.addCookie(c);
%>
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>쿠키만들기</h3>
	쿠키생성완료!
	<a href="cookie_get.jsp"></a>
</body>
</html>

// 쿠키 확인하는 코드
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%
	// 쿠키 사용하기
	// 쿠키는 클라이언트에서 자동으로 전송돼서 request객체에 담김
	
	Cookie[] arr = request.getCookies();

	// 쿠키가 null이 아닐 때 쿠키를 찾는 작업
	if(arr != null) {
		for(Cookie c : arr) {
			out.println(c.getName()); // 쿠키명(키값)
			out.println(c.getValue()); // 쿠키값(값)
			out.println("<br>");
		}
	}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>쿠키확인하기</h3>
</body>
</html>

 

Cookie_set파일
1. 쿠키를 생성하고, 속성을 설정한다(aaa. "홍길동"), 수명 30초
2. response에 담는다.
3. cookie_get으로 보내준다.

Cookie_get 파일
1. 받은 Cookie를 배열로 받는다.
2. 배열에 아무것도 없다면 null이기 때문에 for문으로 출력해준다.
if(arr != null)


로그인시 쿠키를 활용해 로그인해보기

  • 아이디 및 비밀번호는 aaa, 1234로 지정
  • 로그인에 성공했을 시, 쿠키를 저장하는데, 아이디 기억하기 체크를 하고 로그인을 성공하면 쿠키를 하나 더 생성
  • 본문에서 쿠키 받아서 입력 / value에 넣어준다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	Cookie[] arr2 = request.getCookies();
	String rememberMe = "";
	if(arr2 != null) {
		for(Cookie c2 : arr2) {
			if(c2.getName().equals("rememberMe")) {
				rememberMe = c2.getValue();
			}
		}
	}
%>
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>쿠키를 통한 로그인</h3>
	<!-- 
		1. 아이디기억하기를 체크하고, 로그인에 성공하면, 아이디기억하기 쿠키(아이디)를 하나 생성
		2. 이 쿠키는 사용하는 곳이 바로 여기임!
		3. 아이디 기억하기 쿠키를 찾아서 있다면, input의 값을 아이디로 채워넣어주면 됨
	 -->
	<form action="ex01_result.jsp" method="post">
		아이디: <input type="text" name="id" value="<%=rememberMe%>"> <br>
		비밀번호: <input type="password" name="pw"> <br>
		아이디 기억하기: <input type="checkbox" name="check"><br>
		<input type="submit" value="로그인">
	
	</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%
	// 처리하는 영역
	// 아이디가 aaa123이고, 비밀번호 1234라면 로그인 성공 가정
	request.setCharacterEncoding("utf-8");
	
	String id = request.getParameter("id");
	String pw = request.getParameter("pw");
	
	String check = request.getParameter("check");
    
	 if(id.equals("aaa123") && pw.equals("1234")) { // 로그인 성공
     
		// 로그인 성공 시에 아이디를 저장하는 쿠키
		Cookie c = new Cookie("user_id", id); // user_id는 사용할 쿠키의 명칭
		c.setMaxAge(1800); // 30분
		response.addCookie(c);
		
		if(check != null) { // 아이디 기억하기 쿠키 생성
			Cookie c2 = new Cookie("rememberMe", id);
			c2.setMaxAge(30); // 30초
			response.addCookie(c2);
		}
		
		response.sendRedirect("ex01_ok.jsp");
	} else {
		response.sendRedirect("ex01.jsp"); // 다시 로그인페이지로
	}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

</body>
</html>

위 방법을 이용하면, 확인을 하는 처리로직에서 데이터베이스에서 해당 아이디와 비밀번호가 조회가 된다면
쿠키를 생성하는 방식으로 응용할 수 있다.

 

728x90

'Programming > JSP' 카테고리의 다른 글

[JSP] 예외 페이지  (0) 2024.05.06
[JSP] 쿠키와 세션 - 세션  (0) 2024.05.06
[JSP] 내장 객체  (0) 2024.05.06
[JSP] GET과 POST  (0) 2024.05.06
[JSP] 태그  (0) 2024.05.06