스프링17_쿠키

charl hi·2022년 2월 3일
0

Spring

목록 보기
18/25
post-thumbnail

쿠키

요런거

CookieController


@Controller
@RequestMapping("/cookie")
@Slf4j
public class CookieController {

	//쿠키 만들기
	@GetMapping("create")
	@ResponseBody
	public String create(HttpServletResponse response) {
		
		//쿠키 준비
		Cookie c = new Cookie("k01", "v01");
		c.setPath("/");
		
		//쿠키 전달
		response.addCookie(c);
		
		return "cookie create~!";
	}
	
	//쿠키 삭제
	@GetMapping("delete")
	@ResponseBody
	public String delete(HttpServletResponse response) {
		
		//쿠키 준비
		Cookie c = new Cookie("k01", "v01");
		c.setPath("/");
		
		//쿠키는 삭제는 못하고, 시간을 지정해야 한다.
		c.setMaxAge(0);
		
		
		//쿠키 전달
		response.addCookie(c);
		
		
		return "cookie delete!!!";
	}
	
	// 쿠키 확인(jsp)
    @GetMapping("check")
    public String check() {
        return "cookie/check";
    }

    // 쿠키 확인(Controller)
    @GetMapping("check-ctrl")
    @ResponseBody
    public String checkctrl(@CookieValue(required=false) Cookie k01) {
//    	System.out.println(k01.getValue());
    	if(k01 != null) {
    		//log로 출력하기
    		log.info(k01.getValue());
    	}
    	
    	return "cookie check at controller!!!";
    }
    
	
}



cookie/delete

  • jsp 아님!!!!



cookie/check.jsp

	<h1>cookie check page</h1>
	
	<!-- el을 활용해서 쿠키를 체크하자 -->
	
	<br>
    쿠키 > k01 존재함?? ::: ${ not empty cookie.k01 }
	<br>
    쿠키 > k01 ::: ${ cookie.k01 }
    <br>
    쿠키 > k01 > name ::: ${ cookie.k01.name }
    <br>
    쿠키 > k01 > value ::: ${ cookie.k01.value }
    <br>

create 갔다가 check

  • ✨✨cookie의 출처는 클라이언트->서버에서 클라이언트가 갖고 있는 쿠키!!
    -> 따라서 요청을 새로 할 때마다(새로고침) 쿠키 객체가 새로 생성된다!!


cookie/check-ctrl

  • jsp 아님!!!!!



login.jsp

<body>
	<h1>로그인 페이지</h1>
	<!-- 아이디 저장하기 -->
	<!-- 쿠키가 있으면 아이디를 넣어서 보여주기 -->
	<!-- 쿠키가 없으면 그냥 로그인 화면 -->
	<c:choose>
		<c:when test="${empty cookie.k01 }">
		    <form action = "" method = "post">
		        아이디 : <input type ="text" name = "id" placeholder="아이디"/><br>
		        아이디 기억하기 : <input type="checkbox">
		    </form>	
		</c:when>
	<%-- 쿠키가 있으면 아이디를 입력해서 보여주기 --%>
        <c:otherwise>
            <form >
                아이디 : <input type = "text" name = "id" placeholder="아이디" value="${cookie.k01.value}" /> <br>
                아이디 기억하기 <input type="checkbox" checked/>                
            </form>
        </c:otherwise>
	</c:choose>
</body>
  • cookie/create -> member/login

  • cookie/delete -> member/login




광고 n일 동안 안띄우기

CookieController

@Controller
@RequestMapping("/cookie")
@Slf4j
public class CookieController {

	//쿠키 만들기
	@GetMapping("create")
	@ResponseBody
	public String create(HttpServletResponse response) {
		
		//쿠키 준비
		Cookie c = new Cookie("k01", "v01");
		c.setPath("/");
		c.setMaxAge(60 * 60 * 24);
		//24시간 동안 보지 않기
		
		//쿠키 전달
		response.addCookie(c);
		
		return "cookie create~!";
	}
	
	//쿠키 삭제
	@GetMapping("delete")
	@ResponseBody
	public String delete(HttpServletResponse response) {
		
		//쿠키 준비
		Cookie c = new Cookie("k01", "v01");
		c.setPath("/");
		
		//쿠키는 삭제는 못하고, 시간을 지정해야 한다.
		c.setMaxAge(0);
		
		
		//쿠키 전달
		response.addCookie(c);
		
		
		return "cookie delete!!!";
	}
	
	// 쿠키 확인(jsp)
    @GetMapping("check")
    public String check() {
        return "cookie/check";
    }

    // 쿠키 확인(Controller)
    @GetMapping("check-ctrl")
    @ResponseBody
    public String checkctrl(@CookieValue(required=false) Cookie k01) {
//    	System.out.println(k01.getValue());
    	if(k01 != null) {
    		//log로 출력하기
    		log.info(k01.getValue());
    	}
    	
    	return "cookie check at controller!!!";
    }
    
	
}


AdController

@Controller
public class AdController {

	@GetMapping("ad")
	public String ad() {
		return "ad";
	}
}


ad.jsp

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>    
...
<body>
	<h1>광고 페이지</h1>
	
	<!-- 광고 띄우기 -->
	<!-- 쿠키가 있으면 광고 띄우기 -->
	
	<!-- 쿠키가 없으면 광고 띄우기 -->
	<c:if test="${empty cookie.k01}">
		<script>
			window.open("http://www.naver.com", "test", "width=300, height=300");
		</script>
	
	</c:if>
	
</body>
  • 없으면 광고 띄우기

  • 있으면 광고 ㄴㄴ

0개의 댓글