[스프링MVC 24] MVC 프레임워크 만들기: Model 추가 (*중요*) (tistory.com)
MVC 프레임워크 만들기 v3는 ModelView를 개발자가 직접 생성해서 반환했기 때문에 불편했다.
[스프링MVC 25] MVC 프레임워크 만들기: 단순하고 실용적인 컨트롤러 (tistory.com)
그래서 v4에서 실용적으로 개선하였다.
스프링 MVC는 개발자가 편리하게 개발할 수 있도록 수많은 편의 기능을 제공한다.
실무에서는 이 방식을 주로 사용한다.
/**
* Model 도입
* ViewName 직접 반환
* @RequestParam 사용
* @RequestMapping -> @GetMapping, @PostMapping
*/
@Controller
@RequestMapping("/springmvc/v3/members")
public class SpringMemberControllerV3 {
private MemberRepository memberRepository = MemberRepository.getInstance();
//@RequestMapping(value = "/new-form", method = RequestMethod.GET)
@GetMapping("/new-form")
public String newForm(){
return "new-form";
}
//@RequestMapping(value = "/save", method = RequestMethod.POST)
@PostMapping("/save")
public String save(
@RequestParam("username") String username,
@RequestParam("age") int age,
Model model){
Member member = new Member(username, age);
memberRepository.save(member);
model.addAttribute("member", member);
return "save-result";
}
//@RequestMapping(method = RequestMethod.GET)
@GetMapping
public String members(Model model) {
List<Member> members = memberRepository.findAll();
model.addAttribute("members", members);
return "members";
}
}
- Model 파라미터
- save() , members()와 같이 Model을 파라미터로 받을 수 있다. 스프링 MVC도 이런 편의 기능을 제공한다.
- ViewName 직접 반환
- 뷰의 논리 이름(String)을 반환할 수 있다.
- @RequestParam 사용
- 스프링은 HTTP 요청 파라미터를 @RequestParam 으로 받을 수 있다.
- @RequestParam("username") 와 req.getParameter("username") 는 거의 같은 코드
- GET 쿼리 파라미터, POST Form 방식을 모두 지원
- @RequestMapping → @GetMapping, @PostMapping
- @RequestMapping은 URL만 매칭하는 것이 아니라, HTTP Method도 함께 구분할 수 있다.
- 예를 들어, URL이 /new-form 이고, HTTP Method가 GET인 경우를 모두 만족하는 매핑을 하려면 다음과 같이 처리하면 된다.
- @RequestMapping은 URL만 매칭하는 것이 아니라, HTTP Method도 함께 구분할 수 있다.
@RequestMapping(value = "/new-form", method = RequestMethod.GET)
- 이를 @GetMapping , @PostMapping으로 더 편리하게 사용할 수 있다.
- Get, Post, Put, Delete, Patch 모두 애노테이션이 준비되어 있다.
@GetMapping("/new-form")
- @GetMapping 코드를 열어보면, @RequestMapping 애노테이션을 내부에 가지고 있다.
728x90
반응형
'Spring Tutorial' 카테고리의 다른 글
[스프링MVC 기본 기능 1] 요청 매핑 (0) | 2023.08.13 |
---|---|
로그 사용법 (0) | 2023.08.11 |
[스프링MVC 31] 스프링 MVC: 컨트롤러 통합 (0) | 2023.08.08 |
[스프링MVC 30] 스프링 MVC: 시작 (0) | 2023.08.07 |
[스프링MVC 29] 스프링 MVC 구조: 뷰 리졸버 (0) | 2023.08.06 |