Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Tags
more
Archives
Today
Total
관리 메뉴

개발자입니다

IT BANK) JSP 10일차 - JSP(쿠키) 본문

JSP/IT BANK - JSP

IT BANK) JSP 10일차 - JSP(쿠키)

끈기JK 2022. 9. 20. 17:29

220920

 

 

■ 쿠키

 : 웹 브라우저가 보관하고 있는 데이터
웹 서버와 웹 브라우저에서 모두 쿠키를 생성할 수 있다.
웹 서버가 쿠키를 생성해서 웹 브라우저에게 전달하고, 웹 브라우저는 서버에게 쿠키를 전달할 수 있다.

1. 클라이언트에서 서버로 페이지를 요청
2. 서버에서 쿠키를 생성한 후 클라이언트의 요청에 대한 응답으로 쿠키를 함께 담아서 전달한다.
3. 클라이언트는 서버가 준 쿠키를 저장한다. vs 세션은 저장하지 않는다. 세션의 정보는 서버에만 저장한다.
4. 클라이언트는 서버에 요청을 보낼 때 마다 쿠키를 함께 전송한다.
5. 서버는 클라이언트가 보내준 쿠키를 확인하여 페이지 관리를 할 수 있다.

 

 

-쿠키 생성

Cookie cookie = new Cookie("CookieName", "CookieValue");

<title>ex2_make</title>
</head>
<body>
	<%
		Cookie cookie = new Cookie("CookieName", "CookieValue");
		cookie.setMaxAge(60*60*24);  // 쿠키의 유지 기간은 하루
		cookie.setMaxAge(60);  // 60초, 60초 동안 유지한다. 60초가 지나면 삭제됨.
		response.addCookie(cookie);
	%>
	
	<a href="ex2_index.jsp">쿠키 확인하러 가기</a>
</body>
<title>ex2_index</title>
</head>
<body>
	<%
		// 클라이언트의 요청에 쿠키가 있다면 쿠키 추출하기.
		Cookie[] cookies = request.getCookies();
		for(Cookie c : cookies){
			out.print("쿠키 이름 : " + c.getName() + "<br>");
			out.print("쿠키 값 : " + c.getValue() + "<br><br>");
		}
	%>
	
	<a href="ex2_make.jsp">쿠키 생성하기</a>
</body>

현재 쿠키 상태 확인은 우측 새로고침 눌러야 한다. 좌측 새로고침 누르면 쿠키 다시 가져온다.

개발자 도구 → Application → Cookies → 해당 페이지

60초 후 내가 만든 쿠키는 사라짐

 

 

-팝업 페이지

<title>ex3_index</title>
</head>
<body>
<h2>인덱스 페이지</h2>
<%
	boolean check = true;
	Cookie[] cookies = request.getCookies();
	for(Cookie c : cookies){
		if(c.getName().equals("cookieName"));
			check = false;
	}
	if(check){
		out.print("<script>window.open('ex3_popup.jsp')</script>");
	}
%>
</body>
<title>ex3_popup</title>
</head>
<body>
<h2>팝업 페이지</h2>
	<br><br>
	<input type="checkbox" onclick="location.href='ex3_make.jsp'">
</body>
<title>ex3_make</title>
</head>
<body>
<h2>팝업 페이지</h2>
	<%
		Cookie cookie = new Cookie("cookieName", "cookieValue");
		cookie.setMaxAge(30);
		response.addCookie(cookie);
	%>
    <script>window.close()</script>
</body>

 

 

-아이디 기억하기 만들기

/*
0. ex4_login -> ex4_loginChk
1. 체크박스를 클릭하고 로그인 시 ID/PW가 일치하면 ex4_login.jsp 에서 아이디의 값을 출력해주세요.
2. 체크박스를 클릭하고 로그인 시 ID/PW가 틀리면 ex4_login.jsp 에서 아이디의 값을 출력하지 않아요.
3. 체크박스를 클릭하지 않고 로그인 성공/실패 두 경우 모두 ex4_login.jsp 에서 아이디의 값을 출력하지 않아요.
*/

<title>ex4_login</title>
</head>
<body>
	<%
		Cookie[] cookies = request.getCookies();
		String id = "";
		for(Cookie c : cookies){
			if(c.getName().equals("rememberId"))
				id = c.getValue();
		}
	%>
	<form action="ex4_loginChk.jsp" method="post">
		<input type="text" placeholder="아이디" name="id" value="<%=id %>"> <br>
		<input type="password" placeholder="비밀번호" name="pw"> <br>
		<input type="checkbox" value="true" name="remember"> 아이디 기억하기 <br>
		<input type="submit" value="로그인">
		<input type="reset" value="취소">
	</form>
</body>
// ex4_loginChk.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String id = request.getParameter("id");
	String pw = request.getParameter("pw");
	String remember = request.getParameter("remember");

	if("admin".equals(id) && "1234".equals(pw)){
		if(remember != null && remember.equals("true")){
			Cookie cookie = new Cookie("rememberId", "admin");
			cookie.setMaxAge(30);
			response.addCookie(cookie);
		}
	}
	response.sendRedirect("ex4_login.jsp");
%>

아이디와 비밀번호 일치후 체크박스 체크시에만 아이디 기억한다.