2015년 2월 5일 목요일

@CookieValue, @MVC(스프링컨트롤러쿠키사용예,카운터,Spring MVC)

@CookieValue, @MVC(스프링컨트롤러쿠키사용예,카운터,Spring MVC)

@CookieValue :

HTTP쿠키 값을 HttpServletRequest등을 통해 읽을 필요없이 스프링 컨트롤러에서 파라미터로 전달 받을 수 있게해주며, 쿠키가 존재하지 않으면 오류가 발생하고 required 속성 값을 이용해 필수여부 설정도 가능하고, defaultValue 속성 값을 이용해서 기본값을 지정하는 것도 가능하다.

해당하는 쿠키가 없다면 다음과 같은 오류가 발생한다.

java.lang.IllegalStateException: Missing cookie value '쿠키이름' of type java.lang.String

이를 해결하기 위해서 defaultValue를 사용하면 된다.

@RequestMapping("/hello.html")
public String hello(@CookieValue(value = "쿠키이름", defaultValue = "oraclejavacommunity")  String var) {
......
}


[예 : 쿠키를 이용한 간단한 카운터]

컨트롤러

@Controller
public class HomeController {
 
@RequestMapping(value = "/hello.html")
    public String hello(
            @CookieValue(value = "onjCounter",defaultValue = "0") Integer onjCounter,
            HttpServletResponse response) {
 
        //쿠키값을 읽어 우선 counter, 1증가
onjCounter++;
 
        // 응답에 쿠키를 셋팅
        Cookie cookie = new Cookie("onjCounter", onjCounter.toString());
        response.addCookie(cookie);
 
        // view이름
        return "home";
    }
}



JSP

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Spring MVC Cookie example</title>    
</head>
<body> 
    <h1>OracleJavaCommunity </h1>
    <h1>Spring Cookie Example</h1> 
    Page hit counter: <b> ${cookie.onjCounter.value} </b> 
</body>
</html>

댓글 없음:

댓글 쓰기