스프링) 쿠키를 통한 조회수 증가

청룡·2022년 2월 14일
0
@RequestMapping("courseDetail")
	public String courseDetail(
			int course_no,  
			HttpServletResponse response,
			HttpServletRequest request) {
        
        boolean cookieHas = false;
		
		Cookie[] cookies = request.getCookies();
		if(cookies != null) {
			for(Cookie cookie : cookies) {
				String name = cookie.getName();
				String value = cookie.getValue();
				if("boardView".equals(name) && value.contains("|" + course_no + "|")) {
					cookieHas = true;
					break;
				} 
			}
		}
		
		if(!cookieHas) {
			Cookie cookie = new Cookie("boardView", "boardView|" + course_no + "|");
			cookie.setMaxAge(-1);
			response.addCookie(cookie);
			boardService.addCourseViewCount(course_no);
		}
       }

컨트롤러에 필요한 파라미터인 HttpServletResponse response, HttpServletRequest request 이 두가지를 추가해준다.

먼저 쿠키를 보내기 전에 사용자에게 쿠키를 가지고 있는지 요청을 하고 없으면 쿠키를 보내줘야 한다.

그렇기 때문에 Cookie[] cookies = request.getCookies();를 통해 클라이언트의 쿠키를 가져온다음, null이 아니면 찾아봐야 하기 때문에,
Cookie를 반복문으로 돌려준다.

쿠키는 name과 value를 지니고 있기 때문에 두가지의 값을 추출하고,
if 문을 통해 조회수 증감을 나타내는 쿠키에 설정한 name와 value가 맞는지 확인하는 작업을 통해
맞으면 cookieHas에 있다는 것을 알려주고 반복문을 끝내고

반복문을 돌려도 없다면 cookie를 생성하는 단계로 넘어간다.

쿠키는 생성자에 name과 value를 입력해 생성할 수 있고,
setMaxAge()를 통해 초단위의 수명을 부여한다.
parameter에 올려준 response의 method인 addCookie에 생성한 쿠키 인스턴스를 넣어서 보내준다음, 쿠키가 하나 생성했으니 해당 글의 조회수도 1 올려주는 서비스와 DAO 쪽으로 보내준다.

profile
새대갈🕊️에서 돌고래🐬

0개의 댓글

관련 채용 정보