@RequestMapping
: 클라이언트의 요청(url)에 맞는 클래스나 메서드를 연결시켜주는 @어노테이션
사용 예)
@RequestMapping("list.bo")
public String selectList() {
//코드
}
list.bo가 호출 됐을 때 해당 메서드를 실행하도록 맵핑하는 것
+ 해당 메서드가 @Controller로 지정되어있다면 메서드가 String을 반환했을 때 반환 값은 view이름으로 인식됨.
+ @RestController로 지정되어있으면, Rest API요청에 대한 응답(JSON)을 반환한다.
ex) URL 다중설정
@RequestMapping("list.bo","detail.bo")
public String selectList() {
//코드
}
이렇게 URL을 여러개 설정도 가능함
그런데 mapping을 해주는 어노테이션이 @RequestMapping말고도 더 있는데
@GetMapping과 @PostMapping이 있다 ( 더 있지만 우선 이 2개만 다룸)
@RequestMapping가 제공해주고 있는 기능
안 쓸 경우 직접 해야하는 것 ( = Java사용 시 )
1. 서블릿 맵핑
//JAVA
@WebServlet(name = "list.bo", urlPatterns = { "list.bo" })
//SPRING
@Controller
@RequestMapping("/shoppingPurchase")
2. POST / GET 요청처리
//JAVA
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
// GET 요청 처리 로직
}
//SPRING
@PostMapping("list.bo")
public String purchaseProduct(...) {
// POST 요청 처리 로직
return "viewName";
}
3. 파라미터 수집
//JAVA
int productNo = Integer.parseInt(request.getParameter("productNo"));
//SPRING
public String purchaseProduct(int productNo) {
}
4. request.setAttribute와 getRequestDispatcher로 포워딩
//JAVA
request.setAttribute("userId", userId);
request.getRequestDispatcher("views/shopping/list.jsp").forward(request, response);
//SPRING
model.addAttribute("userId", userId);
return "views/shopping/list"; // 자동으로 JSP 포워딩
@GetMapping
:Spring MVC에서 HTTP GET요청을 처리할 때 사용되는 어노테이션
주로 데이터를 조회할 때 사용되고 리소스를 가져오는 역할을 수행하며
다음 어노테이션와 같은 기능을 한다
@RequestMapping(method = RequestMethod.GET)
RequestMapping어노테이션을 단축시킨 어노테이션인 것
GetMapping의 특징
- HTTP GET 요청처리: GET방식으로 전달된 요청만 처리하기 때문에 URL과 요청메서드를 통해 어떤 데이터를 가져오려고 하는지 쉽게 파악가능함
- URL파라미터 사용: GET요청은 URL에 쿼리 파라미터를 포함할 수 있어서 데이터 필터링이나 페이징처리에 자주 사용됨
- 조회 작업에 사용: GET은 서버의 리소스를 단순히 조회하는 작업을 위해 사용되기 때문에 서버상태에 영향을 미치지 않게 설계하는게 일반적임
@PostMapping
:Spring MVC에서 HTTP Post요청을 처리할 때 사용되는 어노테이션
주로 서버에 데이터를 생성하거나 전송할 때 사용함 클라이언트에서 서버로 새로운 데이터를 보내고 서버는 이 데이터를 저장/처리함
마찬가지로 @RequestMapping(method = RequestMethod.Post) 과 같은 기능을 한다
@RequestMapping을 단축시킨 어노테이션
PostMapping의 특징
- post방식으로 전달된 요청만 처리하기 때문에 url과 요청메서드를 통해 데이터 생성작업임을 알 수 있음
- 데이터를 본문에 담아서 보내기 때문에 클라이언트에서 대용량 데이터나 보안이 필요한 데이터를 보낼 때 좋다
- 서버의 상태변경: 서버에 데이터를 추가/변경하는 작업을 수행하기 때문에 서버의 상태를 변경시킴
# 대신해주는 기능의 경우 앞서 설명한 RequestMapping의 경우와 같다.
Q. 그럼 @RequestMapping이 있는데 굳이 @Get/Post Mapping을 사용해야하는거지?
(RequestMapping은 method를 생략하면 요청받은 request httpMethod에 맞게 get/post 둘 다 처리해줌)
RequestMapping이 GET / POST의 기능을 모두 가지고 있는데도 불구하고 get/post를 사용하는 이유는66
1. 코드의 명확성과 유지보수
@RequestMapping은 GET, POST 등의 메서드를 한 메서드에서 다루려 할 때 사용할 수 있지만, 코드가 복잡해질 수 있음
@GetMapping, @PostMapping을 사용하면 메서드를 명확히 구분시켜 작성할 수 있어서 코드의 유지보수가 쉬워짐
2. 사용 용도 구별
post / get 은 사용 용도가 다름 get은 조회, post는 서버의 상태를 변경시킴
equestMapping으로 작성한다면 post요청만 받아야 할 때에도 get요청까지 받아버린다
나중에 추가로 서술할 예정인데 스프링부트에서는 확실하게 용도를 나눠서 사용한다고 한다. 이건 배울때 추가로 포스팅할 예정
'Spring' 카테고리의 다른 글
SPRING의 기본적인 어노테이션 정리 (0) | 2024.10.31 |
---|---|
@ResponseBody (0) | 2024.10.30 |
Spring - Cookie (0) | 2024.10.18 |
Spring 개념정리(DispatcherServlet, 매개변수 바인딩, DB 커넥트풀, 싱글톤 패턴) (0) | 2024.10.18 |
Spring - Filter / Interceptor (0) | 2024.10.18 |