seong

(11)블로그만들기 Session 저장 공간 활용 - 검색 후 keyword,currentPage값 가져가기. 본문

Spring/블로그 만들기

(11)블로그만들기 Session 저장 공간 활용 - 검색 후 keyword,currentPage값 가져가기.

hyeonseong 2022. 9. 19. 11:04

조건

  • 사용자가 특정 키워드 검색 후 게시글을 클릭 했다.
  • 게시글로 이동 했을 때 키워드와, 현재 페이지를 가지고 가야한다.

기존의 동작

검색을 하고 게시글을 눌렀을 때 keyword와, currentPage가 없어진다. 

저 부분에 검색 keyword와 currentpage를 담아줘야한다. 

Session의 영역

  • 작성하기 앞서서 Session에 대해 알아야한다.
  • Session영역은 간단하게 로그아웃 전 까지 남아있다.

시작

키워드와, 현재 페이지를 가져가기 위해선 PagingDto의 keyword,와 currentPage가 필요하다. 

 

아래 코드로는 pagingDto가 request, reponse하면 없어진다. 

Session을 사용해 keyword값,currentPage값을 가져가보자.

Controller

해시맵을 이용해 코드 작성

	//게시글 목록 보기
	@GetMapping({"/","/boards"})
	public String getBoards(Model model,Integer page, String keyword) {
		PagingDto pagingDto = boardsService.게시글목록보기(page, keyword);
		Map<String,Object> referer = new HashMap<>();
		referer.put("page",pagingDto.getCurrentPage());
		referer.put("keyword",pagingDto.getKeyword());
		session.setAttribute("referer", referer);
		model.addAttribute("pagingDto", pagingDto);
		return "/boards/main";
	}

상세 보기 페이지에 코드 추가

	<input id ="page" type = "hidden" value="${sessionScope.referer.page}">
	<input id = "keyword" type = "hidden" value="${sessionScope.referer.keyword}">

js에 코드 추가 작성

function deleteBoard(){
		let id = $("#id").val();
		let page = $("#page").val();
		let keyword = $("#keyword").val();
		
	$.ajax("/boards/" + id, {
		type: "DELETE",
		dataType: "json"
	}).done((res) => {
		if (res.code == 1) {
			location.href = "/?page="+page+"&keyword="+keyword; //?page=?&keyword=?
		}
		else {
			alert("게시글 삭제 실패");
		}
	});
}

결과 확인

test검색 -> 게시글 클릭 

keyword와 page가 잘 가져가졌다.

 

수정 전 코드는 삭제 하면 "/" 메인 페이지로 이동 하기 였지만

지금은 test검색 했던 페이지로 이동 된다.