ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스프링(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; 
        }
    }

     

Designed by Tistory.