728x90
URL 빌더 알아보기
Spring Framework의 org.springframework.web.util 패키지는
웹 개발에서 유용하게 사용되는 다양한 유틸리티 클래스를 제공한다.
그 중 UriComponents와 UriComponentsBuilder는 동적인 URI를 쉽게 생성할 수 있게 해 주는 클래스이다.
이를 통해 REST API, 페이지 네비게이션, 쿼리 파라미터 생성 등을 손쉽게 처리할 수 있다.
UriComponents
URI를 구성하는 각 요소(스키마, 호스트, 경로, 쿼리 파라미터 등)를 객체화한 클래스로,
URI를 재구성하거나 조작할 수 있다.
UriComponentsBuilder
UriComponents의 빌더 클래스이다.
URI를 생성하고, 쿼리 파라미터를 추가하거나 수정하는 등 URI 구성에 필요한 다양한 메서드를 제공한다.
예제 코드
public String makeQuery(int currentPage) {
UriComponents uriComponents = UriComponentsBuilder.newInstance()
.queryParam("currentPage", currentPage) // 현재 페이지를 쿼리 파라미터로 추가
.queryParam("rowsPerPageCount", cri.getRowsPerPageCount()) // 행 개수 파라미터 추가
.build();
return this.mappingName + uriComponents.toString(); // 최종 URI 반환
}
- UriComponentsBuilder.newInstance()
- UriComponentsBuilder의 인스턴스를 생성.
- queryParam(key, value)
- .queryParam("currentPage", currentPage): URI에 currentPage라는 이름의 쿼리 파라미터와 currentPage 변수의 값을 추가.
- .queryParam("rowsPerPageCount", cri.getRowsPerPageCount()): URI에 rowsPerPageCount라는 파라미터와 해당 값을 추가.
- build()
- 쿼리 파라미터를 모두 추가한 후 build() 메서드로 UriComponents 객체를 생성.
- toString()으로 URI 반환
- 최종적으로 URI 문자열을 반환, 이 문자열은 mappingName이라는 URI 경로와 조합.
- 완성된 URI 형태
{mappingName}?currentPage=7&rowsPerPageCount=10
주의점:
UriComponentsBuilder는 자동으로 ?를 포함하여 쿼리 파라미터를 생성하므로 JSP 코드에서 ?를 별도로 추가하지 않아야 한다.
- jsp 사용의 old 버젼
//old 버전
<a href="bPageList?currentPage=1&rowsPerPageCount=5">FP</a>
<a href="bPageList?currentPage=${pageMaker.startPageNumber-1}&rowsPerPageCount=5"><</a>
- jsp 사용의 new 버젼
//new 버전
<a href="${pageMaker.makeQuery(1)}"><<</a>
<a href="${pageMaker.makeQuery(pageMaker.startPageNumber-1)}"><</a>
- 검색 + 페이지네이션의 쿼리 메이커 활용
public String makeQuery(int currentPage) {
//버전 1
// UriComponents uriComponents = UriComponentsBuilder.newInstance()
// .queryParam("currentPage",currentPage)
// .queryParam("rowsPerPageCount", cri.getRowsPerPageCount())
// .build();
//버전 2
UriComponents uriComponents = UriComponentsBuilder.newInstance()
.queryParam("currentPage",currentPage)
.queryParam("rowsPerPageCount", cri.getRowsPerPageCount())
.queryParam("searchType", cri.getSearchType())
.queryParam("keyword", cri.getKeyword())
.build();
return this.mappingName+uriComponents.toString();
}
'Developer > Spring eGov4.0 (Java11, Tomcat9)' 카테고리의 다른 글
Java Servlet을 활용한 간단한 로그인 구현 (0) | 2024.11.05 |
---|---|
Servlet Scope와 세션 관리 이해하기: 객체 생성부터 소멸까지 (0) | 2024.11.04 |
Servlet 알아보기 3 ( 화면 간의 이동 처리 ) (0) | 2024.11.01 |
Servlet 알아보기 3 (lifecycle) (0) | 2024.11.01 |
Servlet 알아보기 2 (메서드 사용) (0) | 2024.11.01 |