1저번장에서는 전체 데이터 수와 해당 페이지의 데이터 수 를 출력했습니다.

이제 추가할 기능은 사용자가 3페이지에서 글을 작성하고 다시 목록으로 돌아가면

보통의 다른 사이트 같은 경우 1페이지로 돌아가지만 3페이지로 페이지를 유지할 수 있는 기능을 해보려고 합니다.

 /board/listPage?page=6&perPageNum=10 , /board/read?page=6&perPageNum=10&bno=118

이런식으로 구현을 할건데요.

이렇게 하기 위해 UriComponenets와 UriComponentsBuilder 클래스를 이용할 것입니다.

 

해당 테스트 코드는  다음과 같습니다.

 

package kr.co.web;

import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.util.UriComponents;
import org.springframework.web.util.UriComponentsBuilder;

public class URITestData {
	private static final Logger logger = LoggerFactory.getLogger(URITestData.class);
	
	@Test
	public void uriTest() {
		int page = 4;
		int perPageNum = 10;
		
		UriComponents uriComponets = UriComponentsBuilder.newInstance()
				.path("/board/listPage")
				.queryParam("page", page)
				.queryParam("perPageNum", perPageNum)
				.build();
		
		String uri = "/board/listPage?page=" + page + "&perPageNum=" + perPageNum;
		
		logger.info(uri);
		logger.info(uriComponets.toString());
	}
}

 

이렇게 코드를 작성하고 테스트를 진행 해보면

 

            

다음과 같이 uri가 생성되었습니다.

또 encode()메서드도 제공하는데 URI에 허용되지 않는 값들이 인코딩 됩니다.

 

package kr.co.web;

import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.util.UriComponents;
import org.springframework.web.util.UriComponentsBuilder;

public class URITestData {
	private static final Logger logger = LoggerFactory.getLogger(URITestData.class);
	
	@Test
	public void uriTest() {
		int page = 4;
		int perPageNum = 10;
		
		UriComponents uriComponets = UriComponentsBuilder.newInstance()
				.path("/board/listPage")
				.queryParam("page", page)
				.queryParam("perPageNum", perPageNum)
				.queryParam("search", "진연석")
				.build()
				.encode();
		
		String uri = "/board/listPage?page=" + page + "&perPageNum=" + perPageNum;
		
		logger.info(uri);
		logger.info(uriComponets.toString());
	}
}

 

결과는

 

 

다음과 같이 진연석이라는 문자가 인코딩되었습니다.

 

이제 본격적으로 해당 프로젝트에 URIcomponents를 추가할건데요

PageMaker와 Criteria에 makeQuery라는 메서드를 추가해줍니다.

 

public String makeQuery(int page) {
	UriComponents uriComponents = UriComponentsBuilder.newInstance()
			.queryParam("page", page)
			.queryParam("perPageNum", this.cri.getPerPageNum())
			.build()
			.encode();
	return uriComponents.toString();
}

 

'JAVA > blog' 카테고리의 다른 글

페이징 처리(5)  (0) 2020.07.19
페이징 처리(4)  (0) 2020.07.16
페이징 처리(2)  (0) 2020.07.11
페이징 처리(1)  (0) 2020.07.11
게시글 삭제, 수정 기능 추가  (0) 2020.07.09

+ Recent posts