-
스프링(6) - 도서 구매 프로젝트(3)웹 개발/스프링 2023. 4. 4. 22:47
경로 변수
- 웹 요청 URL에 포함된 파라미터 값을 전달받는 데 사용하는 변수
- @RequestMapping(단순화한 @RequestMapping 포함)에 중괄호({})를 사용하여 웹 요청 URL에 포함된 요청 조건 값을 전달 받는다.
- 중괄호 안에 명시된 것이 경로 변수이며 두 개 이상 들어가는 것 역시 가능하다.
요청 URL 경로 변수 예시
- 순서
1. 웹 요청 URL이 http://.../cars/red라면 @GetMapping 안에 있는 경로 변수 color는 값으로 red를 전달받아서
2. 요청 처리 메서드의 파라미터에 @PathVariable로 경로 변수의 값을 전달받을 수 있게 된다.
@PathVariable 애너테이션
- @PathVariable은 @RequestMapping에 설정된 경로 변수의 값을 요청 처리 메서드의 매개변수로 전달받는다.
형식
- 경로 변수 이름을 그대로 사용할 때
@RequestMapping("경로 변수") public String 메서드 이름(@PathVariable 경로 변수, ...) { ... }
- 경로 변수 이름을 재정의해서 사용할 때
@RequestMapping("경로 변수") public String 메서드 이름(@PathVariable(경로 변수) 매개변수, ...) { ... }
@PathVariable을 이용하여 경로 변수에 접근하는 예시
과정
1. 웹 요청 URL로 전송된 파라미터 값을 경로 변수 이름 bookId로 전달받음
2. 이를 요청 처리 메서드 requestMethod()에서 동일한 경로 변수 이름으로 전달받게 된다.
위의 예시 코드에 대한 뷰가 webpage06.jsp으로 출력된다.
<%@ page contentType="text/html; charset=utf-8" %> <html> <head> <title>chap06</title> </head> <body> <p>${data} </body> </html>
경로 변수 여러개에 접근하는 예시
- 웹 요청 URL에 포함된 파라미터 값들을 경로 변수 category와 publisher로 전달받고, 이를 요청 처리 메서드 requestMethod()에서 동일한 경로 변수 이름으로 전달받게 된다.
@PathVariable을 이용하여 도서 분야(category)와 일치하는 도서 목록을 출력해줘보기
1. com.springmvc.repository 패키지의 BookRepository 인터페이스에 getBookListByCategory() 메서드를 선언해준다.
package com.springmvc.repository; import java.util.List; import com.springmvc.domain.Book; public interface BookRepository { List<Book> getAllBooks(); List<Book> getBookListByCategory(String category); }
BookRepository.java
package com.springmvc.repository; import java.util.List; import com.springmvc.domain.Book; public interface BookRepository { List<Book> getAllBooks(); List<Book> getBookListByCategory(String category); // getBookListByCategory() 메서드를 BookRepository 인터페이스 안에서 선언해준다. }
2. com.springmvc.repository 패키지의 BookRepositoryImpl 클래스에 getBookListByCategory() 메서드를 구현하였음
BookRepositoryImpl.java
package com.springmvc.repository; ... @Repository public class BookRepositoryImpl implements BookRepository { ... public List<Book> getAllBookList() { return listOfBooks; } public List<Book> getBookListByCategory(String category) { List<Book> booksByCategory = new ArrayList<Book>(); for (int i = 0; i < listOfBooks.size(); i++) { Book book = listOfBooks.get(i); if (category.equalsIgnoreCase(book.getCategory())) booksByCategory.add(book); } return booksByCategory; } }
'웹 개발 > 스프링' 카테고리의 다른 글
스프링(7) - 도서 구매 프로젝트(4) (0) 2023.04.10 스프링(5) - 도서 구매 프로젝트(2) (0) 2023.04.02 스프링(4) - 도서 구매 프로젝트(1) (0) 2023.03.27 스프링(3) - 계층적 구조 (0) 2023.03.27 스프링(2) - 프로젝트 구조 (0) 2023.03.25