studyplan
spring boot 게시판 만들기 7. @service , HttpServletResponse response 사용 , HttpServletRequest request 사용 , WebUtils.getCookie() 사용법 본문
spring boot 게시판 만들기 7. @service , HttpServletResponse response 사용 , HttpServletRequest request 사용 , WebUtils.getCookie() 사용법
무한머니 2022. 7. 20. 02:45
@Service
@Controller 와 @Repository 사이의 중간 관계이다
저장소에서 컨트롤까지 가는데 중간에 비즈니스 로직이 들어있는 코딩의 집합소 !
Board 타입에 board 라는 값을 saveService 에 주면
@Repository 에 있는 save메서드에 board 를 넣어준다
List<Board> boardList = repository.findAll();
리스트로 받아온 boardList 를
processConverting에 넣는다
그러면 processConverting() 메서드가 도는데
메서드 안에는
2개의 메서드가 돌아간다 !!
convertDateFormat(b); 와 substringTitle(b); 메서드 인데
boardList 라는 리스트를 포문을 돌려서 나온 하나 하나의 값에
convertDateFormat(b); 와 substringTitle(b); 메서드 를 사용한다
먼저
convertDateFormat(b); 이 메서드는
Board 타입에 b 라는 객체인데
b.getRegDate()으로 날짜 객체인 date 값을
yy-MM-dd a hh:mm
이런 형식으로 형식을 바꿔준다 !!
b.set 변경된 문자열에 SimpleDateFormat타입인 sdf에 포멧한다 바뀌기 전 date 값을 넣는다
참고 예시 ~
두번째 substringTitle는
글 제목이 너무 길어졌을 경우 짧게 보여주는 것 !
Board 타입인 b에서 title 을 가져와서
길이를 잰 후
길이가 5 를 넘어가면
처음부터 5번째까지 자른 문장 + ... 을 합쳐서 반환한다
게시판 상세 조회 요청 중간 처리!!
내가 어떤 게시글을 눌렀을때 그 게시글 정보를 가지고 오는 메서드이다 // 게시글을 눌렀을때 작동 된다 !!
그렇다면 우리는 조회를 한것이기때문에 조회수를 올릴수도있다
그렇게 그 게시글에 들어갔을때 조회수가 올라가는데 , 악질적인 사람들 때문에
F5 를 계속 눌러서 게시글의 조회수를 올리는 사람들이 있어서 그런걸 막기 위해서
Cookies 를 만들어서 제한을 걸어준다
일상속에서 어떤 사이트에 가면 자동 로그인설정이 있는데
그 사이트에 방문해서 자동로그인 설정을 해놓는 즉시 우리 컴퓨터에 쿠키라는걸 주고 그 쿠키가 살아있는 동안 우리는 그 사이트에서 계속 자동로그인을 사용할수 있다
Cookie foundCookie = WebUtils.getCookie(request, "b" + boardNo);
Cookie 타입의 foundCookie 는
WebUtils.getCookie(들어온 요청 , 쿠키에 붙여준 이름 ) 이다
이 뜻은 들어온 요청에서 쿠키를 get 하라는 뜻이다
만약 쿠키가 있다면 viewCount 가 올라가지 않을것이고
if( foundCookie 가 없다면 )
viewCount 를 올리고
cookie.setMaxAge(60); 60초 짜리 쿠키
cookie.setPath("/board/content"); 여기경로에서만 사용하는
response.addCookie(cookie); 전달해준다 ~
원본 make
makeViewCount() 메소드는
쿠키 없이 , @controller 와 @repository 사이를 이어주는 중간 다리 역할이었다
다시 쿠키 얘기로 돌아가면
쿠키라는것은 일단 제한을 걸어두거나 , 어떤 상태인지를 나타내는 장치로써 시간과 장소를 제한해서 걸어둘수 있다
무작정 계속 발급하면 용량도 금방 생겨나니
if 절로 만들어서 있으면 안주는 형식으로 만드는것이다 .
이때 중요한점은 쿠키에서 필요한 정보는
정보를 받을 request 객체와 , 정보를 돌려줄 response 객체이다 // 이게 있어야 만들지 말지를 정하는것이다