jsp

2022_11_30 Cookie_02

0304호 2022. 11. 30. 18:43

쿠키(cookie)
 서버는 응답후에 웹과의 관계를 끊음
 서버와 웹이 연결이 끊겼을때 지속적으로 정보를 유지하기 위한 수단으로 사용하는 방식
 쿠키는 서버에서 생성하며 클라에 정보를 저장
 JAVA보단 JAVASCRIPT에서 많이씀(java에서 쓰기도함)
 쿠키는 최대 300개까지 저장가능하고 개당 4kb용량임
 쿠키는 문자열 형식(필수)
 쿠키는 유효시간이 만료될때까지 계속 저장이됨 (MaxAge()가 되기전까지)


 쿠키문법 : 
1. 쿠키클래스에서 쿠키 생성
2. setter 메서드로 쿠키의 속성 설정
3. response 객체에 쿠키 탑재
4. 로컬환경에 저장

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%
    
	/* 
	이 페이지를 처음 진입하면 idCheck쿠키를 찾아서 값을 얻고
	id태그안에 미리 값을 넣어주는 코드를 작성합니다.
	input태그에 value속성을 쓰면 됨
	*/    
    Cookie[] cook = request.getCookies();
    String IdCheck ="";
	if(cook!=null){
		
	    for(Cookie c:cook){
	    	if( c.getName().equals("IdCheck")){
	    		IdCheck=c.getValue();
	    	}
	    }
	}
    
    %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<h2> 쿠키 로그인 연습</h2>

	<form action="cookie_ex02_ok.jsp" method="post">
	
		아이디 : <input type="text" name ="id" size="10" value="<%=IdCheck %>"><br>
		비밀번호 : <input type="password" name ="pw" size="10"><br>
		
		<input type="submit" value="로그인">
		<input type="checkbox" name="idCheck" value="y">아이디 기억하기
	
	</form>


</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%	
    	//user_id쿠키를 찾는 작업
    	Cookie[] arr =request.getCookies();
    	String id = "";	
    
    	if(arr!=null){
    		for(Cookie c:arr){
				
    			if(c.getName().equals("user_id")){
    				id = c.getValue();
    			}
    		}
    	}    
    %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	어서오세요. (<%=id %>님)
	<a href="cookie_ex02.jsp">돌아가기</a>
</body>
</html>

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%  
    	//
    	request.setCharacterEncoding("utf-8");
    
	    String id = request.getParameter("id");
	    String pw = request.getParameter("pw");
	    String idCheck = request.getParameter("idCheck");
	    //로그인 성공이라 가장
	    if(id.equals("aaa123") && pw.equals("1234")){
	    	
	    	//로그인 성공시 id쿠키생성
	    	Cookie idCookie = new Cookie("user_id",id);
	    	idCookie.setMaxAge(1800);
	    	response.addCookie(idCookie);
	    	
	    	//idCheck쿠키
	    	//사용자가 체크박스를 체크했다면 idCheck를 생성 시간은 30초
		    Cookie idCheckCookie = new Cookie("IdCheck",id);
	    	
	    	if(idCheck!=null){
			    idCheckCookie.setMaxAge(999999999);
			    response.addCookie(idCheckCookie);
	    	}else{
	    		idCheckCookie.setMaxAge(0);
		    	response.addCookie(idCheckCookie);
	    	}
	    	
	    	response.sendRedirect("cookie_ex02_welcome.jsp");	//성공 페이지
	    }else{
	    	response.sendRedirect("cookie_ex02.jsp");		//로그인 페이지로 복귀
	    }
    
    %>