교재
https://thebook.io/080266/0157/
스프링 코딩 공작소: 5.3 @RequestMapping을 이용한 요청 매핑 경로 설정
더북(TheBook): (주)도서출판 길벗에서 제공하는 IT 도서 열람 서비스입니다.
thebook.io
5장
@Requestmapping
속성 | 타입 | 설명 |
value | String | 기본 매핑 경로 이름 |
method | RequestMethod | 매핑할 HTTP 요청 방식(GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE) |
headers | String | 매핑된 요청의 헤더 |
name | String | 해당 매핑에 이름 지정 |
params | String | 매핑된 요청 매개변수 |
path | String | 서블릿 환경에서만 경로 매핑 URL |
consumes | String | 매핑된 요청의 소비 가능한 미디어 유형 |
produces | String | 매핑된 요청의 생산 가능한 미디어 유형 |
ReqeustMapping
URL에 매핑되어 있는 것을 처리하기 위해 Method를 사용함
@RequestMapping(value="/exam02", method=RequestMethod.GET)
example02Controller.java
=> controller Mapping 예제 코드
package com.springmvc.chap05;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping(value="/exam02", method=RequestMethod.GET)
//@RequestMapping("/exam02")도 가능
public class example02Controller {
@RequestMapping
public void requestMethod() {
System.out.println("RequestMapping 예제임");
System.out.println("웹 요청 URL은 /exam02 입니다.");
}
}
원래 했던 내용과 동일함을 보여줌
bookController.java
package com.springmvc.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.springmvc.domain.Book;
import com.springmvc.service.BookService;
@Controller //클라이언트에서 요청이 오면 처리역할을 담당
@RequestMapping("/books")
public class BookController {
@Autowired // setter를 하지 않아도 외부 컴포넌트를 불러올 수 있음
private BookService bookservice; // 저장소 객체인 BookRepository로 직접 접근하지 않고 서비스 객체로 저장소에 접근 -> 데이터베이스와 직접 연결 X
@RequestMapping
public String requestBookList(Model model) {
List<Book> list= bookservice.getAllBookList(); // getAllBookList()를 가지고 옴
model.addAttribute("bookList", list); // 모델에 booklist라는 키에 booklist를 저장
return "books"; // view 이름, books.jsp
}
}
reqeustmethod.GET : 기본으로 적용되어 있으니까 생략 가능
GET : 조회, 데이터를 받기 위해서 사용
POST : 데이터를 처리, 요청 기능이 추가됨
GET이 기본으로 되어 있기 때문에 POST일 때에만 추가됨
5.3.5. 메소드 수준의 @Reqeustmapping 단순화
애너테이션 | 설명 | method 속성 사용 |
@GetMapping | 매핑할 HTTP 요청 방식이 GET인 경우 | method = RequestMethod.GET |
@PostMapping | 매핑할 HTTP 요청 방식이 POST인 경우 | method = RequestMethod.POST |
@PutMapping | 매핑할 HTTP 요청 방식이 PUT인 경우 | method = RequestMethod.PUT |
@DeleteMapping | 매핑할 HTTP 요청 방식이 DELETE인 경우 | method = RequestMethod.DELETE |
@PatchMapping | 매핑할 HTTP 요청 방식이 PATCH인 경우 | method = RequestMethod.PATCH |
GetMapping
package com.springmvc.chap05;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/home")
public class Example04Controller {
@GetMapping("/exam04")
public void requestMethod() {
System.out.println("@RequestMapping 예제입니다.");
System.out.println("웹 요청 URL은 /home/exam04 입니다.");
}
}
요청 처리 메소드와 모델 유형
@RequestMapping(...)
public String 메서드 이름() {
// 모델(객체)에 응답 데이터 저장
return "뷰 이름";
}
모델 : 사용자의 웹 요청을 처리한 결과 데이터를 관리하고 전달
뷰 : 처리된 결과 데이터를 웹 브라우저에 출력하는 웹페이지 역할
모델(&뷰) 클래스 | 설명 |
Model | 데이터(또는 객체) 정보를 저장하는 데 사용합니다. |
ModelMap | 데이터(또는 객체) 정보를 저장하는 데 사용합니다. |
ModelAndView | 모델 정보 및 뷰 정보를 저장하는 데 사용합니다. |
** ModelAndView : 모델이랑 뷰랑 같이 씀
모델 인터페이스를 이용한 메소드 작성
Model addAttribute(String attributeName, Object attributeValue)
• 역할: 제공된 이름으로 제공된 속성을 등록합니다.
• 매개변수:
- attributeName: 모델 속성 이름(null이 될 수 없음)
- attributeValue: 모델 속성 값(null이 될 수 있음)
>> 컨트롤러가 /home/exam05라는 url로 들어가면
>> webpage05.jsp를 불러옴
ModelMap 클래스를 이용한 메소드 작성
model객체에 addAttribute()메소드에 담아 전달
ModelMap addAttribute(String attributeName, Object attributeValue)
• 역할: 지정된 이름(attributeName)과 속성(attributeValue)을 등록합니다.
• 매개변수:
- attributeName: 모델 속성의 이름(null이 될 수 없음)
- attributeValue: 모델 속성의 값(null이 될 수 있음)
attributeName
attributeValue
를 이용하여 값을 보냄
modelandview
setViewName() 메소드로 뷰 이름을 설정함
ModelAndView addObject(String attributeName, Object attributeValue)
• 역할: 지정된 이름(attributeName)으로 제공된 속성(attributeValue)을 등록합니다.
• 매개변수:
- attributeName: 모델 속성의 이름(null이 될 수 없음)
- attributeValue: 모델 속성의 값(null이 될 수 있음)
void setViewName(String viewName)
• 역할: ModelAndView를 위한 뷰 이름을 설정합니다.
• 매개변수:
- viewName: 뷰 이름
bookMarket 프로젝트
Bookcontroller.java
package com.springmvc.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.springmvc.domain.Book;
import com.springmvc.service.BookService;
@Controller //클라이언트에서 요청이 오면 처리역할을 담당
@RequestMapping("/books")
public class BookController {
@Autowired // setter를 하지 않아도 외부 컴포넌트를 불러올 수 있음
private BookService bookService; // 저장소 객체인 BookRepository로 직접 접근하지 않고 서비스 객체로 저장소에 접근 -> 데이터베이스와 직접 연결 X
// @GetMapping("/all")
// public String requestBookList(Model model) {
// List<Book> list= bookservice.getAllBookList(); // getAllBookList()를 가지고 옴
// model.addAttribute("bookList", list); // 모델에 booklist라는 키에 booklist를 저장
// return "books"; // view 이름, books.jsp
// }
// @GetMapping
// public String requestBookList(Model model) {
// List<Book> list = bookService.getAllBookList();
// model.addAttribute("bookList", list);
// return "books";
// }
@GetMapping("/all") // URL => books/all
public ModelAndView reqeustMethod(Model model) { // modelandview로 바꾸기
List<Book> list= bookService.getAllBookList();
ModelAndView mav = new ModelAndView(); // modelandview 객체 생성
mav.addObject("bookList", list); // modelandview객체의 bookList 라는 객체를 생성하고 list 데이터를 추가
mav.setViewName("books"); // 보여주는 view(jsp파일)의 이름이 books
return mav; // return
}
}
'IoT 빅데이터 응용 교육 과정_하계' 카테고리의 다른 글
[IoT 빅데이터 응용 교육과정]23.07.04 파일 업로드 (0) | 2023.07.04 |
---|---|
[IoT 빅데이터 응용 교육과정] 23.07.03_1 8장 스프링 시큐리티 (0) | 2023.07.03 |
[IoT 빅데이터 응용 교육 과정] 웹 애플리케이션 (23.06.26_1) (0) | 2023.06.26 |
[IoT 빅데이터 응용 교육 과정] 스프링 MVC 애플리케이션 분석 (0) | 2023.06.22 |
[IoT 빅데이터 응용 교육 과정] mvc 패턴 (0) | 2023.06.21 |