들어가기 전에
이번 시간엔 에제를 통해 쿠키에 대한 사용방법을 알아보도록 하겠습니다.
학습 목표
- 웹 어플리케이션에서 쿠키를 사용할 수 있습니다.
- Spring MVC의 CookieValue애노테이션을 이용해 쿠키값을 읽어 들일 수 있습니다.
핵심 개념
- javax.servlet.http.Cookie
- @CookieValue
학습하기
들어가기 전에
이번 시간엔 에제를 통해 쿠키에 대한 사용방법을 알아보도록 하겠습니다.
학습 목표
핵심 개념
학습하기
위의 코드를 Spring MVC가 제공하는 CookieValue애노테이션을 이용해 수정한 소스를 보도록 하겠습니다.
package kr.or.connect.guestbook.controller;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import kr.or.connect.guestbook.dto.Guestbook;
import kr.or.connect.guestbook.service.GuestbookService;
@Controller
public class GuestbookController {
@Autowired
GuestbookService guestbookService;
@GetMapping(path="/list")
public String list(@RequestParam(name="start", required=false, defaultValue="0") int start,
ModelMap model, @CookieValue(value="count", defaultValue="1", required=true) String value,
HttpServletResponse response) {
// 쿠키 값을 1증가 시킨다.
try {
int i = Integer.parseInt(value);
value = Integer.toString(++i);
}catch(Exception ex){
value = "1";
}
// 쿠키를 전송한다.
Cookie cookie = new Cookie("count", value);
cookie.setMaxAge(60 * 60 * 24 * 365); // 1년 동안 유지.
cookie.setPath("/"); // / 경로 이하에 모두 쿠키 적용.
response.addCookie(cookie);
List<Guestbook> list = guestbookService.getGuestbooks(start);
int count = guestbookService.getCount();
int pageCount = count / GuestbookService.LIMIT;
if(count % GuestbookService.LIMIT > 0)
pageCount++;
List<Integer> pageStartList = new ArrayList<>();
for(int i = 0; i < pageCount; i++) {
pageStartList.add(i * GuestbookService.LIMIT);
}
model.addAttribute("list", list);
model.addAttribute("count", count);
model.addAttribute("pageStartList", pageStartList);
model.addAttribute("cookieCount", value); // 쿠키를 추가한다.
return "list";
}
@PostMapping(path="/write")
public String write(@ModelAttribute Guestbook guestbook,
HttpServletRequest request) {
String clientIp = request.getRemoteAddr();
System.out.println("clientIp : " + clientIp);
guestbookService.addGuestbook(guestbook, clientIp);
return "redirect:list";
}
}
생각해보기
참고 자료
https://tomcat.apache.org
https://www.javatpoint.com
comment