[Spring] MVC 1ํธ (10) - ์ค์ฉ์ ์ธ ์คํ๋ง MVC
๐ @RequestMapping
์คํ๋ง์์๋ ์ ๋ ธํ ์ด์ ์ ํ์ฉํ ๋งค์ฐ ์ ์ฐํ๊ณ ์ค์ฉ์ ์ธ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ ํธ๋ค๋ฌ ๋งคํ๊ณผ ํธ๋ค๋ฌ ์ด๋ํฐ๋ ์ ๋ ธํ ์ด์ ๊ธฐ๋ฐ์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ง์ํ๋ ๊ฐ๊ฐ RequestMappingHandlerMapping๊ณผ RequestMappingAdapter์ด๋ค. ์ค๋ฌด์์๋ ์ด ๋ฐฉ์์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฌ์ฉํ๋ค!
ํ์ ๋ฑ๋ก ํผ
@Controller
public class SpringMemberFormControllerV1 {
@RequestMapping("/springmvc/v1/members/new-form")
public ModelAndView process() {
return new ModelAndView("new-form");
}
}
- @Controller : ์คํ๋ง์ด ์๋์ผ๋ก ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๊ณ , ์คํ๋ง MVC์์ ์ ๋ ธํ ์ด์ ๊ธฐ๋ฐ ์ปจํธ๋กค๋ฌ๋ก ์ธ์ํ๋ค.
- @RequestMapping : ์์ฒญ ์ ๋ณด๋ฅผ ๋งคํํ๋ค. ํด๋น URL์ด ํธ์ถ๋๋ฉด ์ด ๋ฉ์๋๊ฐ ํธ์ถ๋๋ค.
- ModelAndView : ๋ชจ๋ธ๊ณผ ๋ทฐ ์ ๋ณด๋ฅผ ๋ด์์ ๋ฐํํ๋ค.
๐ ์ปจํธ๋กค๋ฌ ํตํฉ
@RequestMapping์ ๋ฉ์๋ ๋จ์์ ์ ์ฉ๋๊ธฐ ๋๋ฌธ์ ํ๋์ ํด๋์ค์ ๊ฐ ์ปจํธ๋กค๋ฌ์ ๋ฉ์๋๋ฅผ ๋ฐฐ์นํ ์ ์๋ค.
MemberController
@Controller
@RequestMapping("/springmvc/v2/members") // ์ค๋ณต์ ์ค์ผ ์ ์์!
public class SpringMemberControllerV2 {
private MemberRepository memberRepository = MemberRepository.getInstance();
@RequestMapping("/new-form")
public ModelAndView newForm() { // ๋ฐํ ํ์
ModelAndView
return new ModelAndView("new-form");
}
@RequestMapping("/save")
public ModelAndView save(HttpServletRequest request, HttpServletResponse response) {
String username = request.getParameter("username");
int age = Integer.parseInt(request.getParameter("age"));
Member member = new Member(username, age);
memberRepository.save(member);
ModelAndView mv = new ModelAndView("save-result");
mv.addObject("member",member);
return mv;
}
@RequestMapping
public ModelAndView members() {
List<Member> members = memberRepository.findAll();
ModelAndView mv = new ModelAndView("members");
mv.addObject("members", members); // Map์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ๊ฐ๋จํ๊ฒ ๊ฐ์ ๋๊ฒจ์ค ์ ์์
return mv;
}
}
- ์ค๋ณต๋๋ ๋ทฐ ์ด๋ฆ์ ํด๋์ค ๋ ๋ฒจ์ @RequestMapping์ ๋์ด ์ค๋ณต์ ์ค์ผ ์ ์๋ค.
๐ ์ค์ฉ์ ์ธ ๋ฐฉ์
์ค๋ฌด์์ ์ฃผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค.
@Controller
@RequestMapping(value = "/springmvc/v3/members")
public class SpringMemberControllerV3 {
private MemberRepository memberRepository = MemberRepository.getInstance();
@GetMapping("/new-form") // ๋ฐ์ดํฐ ๋จ์ ์กฐํ -> GET
public String newForm() { // String์ผ๋ก ๋ฐํํ๋ฉด ๋ทฐ ์ด๋ฆ์ผ๋ก ์ธ์๋จ
return "new-form";
}
@PostMapping("/save") // ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ ๋ฐ์ -> POST
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";
}
@GetMapping
public String members(Model model) {
List<Member> members = memberRepository.findAll();
model.addAttribute("members", members);
return "members";
}
}
- Model ํ๋ผ๋ฏธํฐ : Model์ ๋ฉ์๋์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ ์ ์๋ค. ๊ฐ ๋ฉ์๋๋ ๋ฐ์ดํฐ๋ฅผ addAttribute() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ Model์ ์ ์ฅํ๋ค.
- ViewName : ๊ฐ ๋ฉ์๋๋ฅผ ์คํํ๊ณ ModelView๋ฅผ ๋ฐํํ๋ ๊ฒ์ด ์๋, ๋ทฐ์ ๋ ผ๋ฆฌ ์ด๋ฆ์ ๋ฐํ
- @ReqeustParam : ๋งค๊ฐ๋ณ์๋ก ์ง์ ํ ์ด๋ฆ์ ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ณ์๋ก ๊ฐ์ ธ์จ๋ค. == request.getParameter("username")
- @GetMapping, @PostMapping : URL์ ๋งคํํ๋ ๋์์ HTTP ๋ฉ์๋๋ ํจ๊ป ๊ตฌ๋ถํ ์ ์๋ค.
๊ฐ์ ๋งํฌ
์คํ๋ง MVC 1ํธ - ๋ฐฑ์๋ ์น ๊ฐ๋ฐ ํต์ฌ ๊ธฐ์ - ์ธํ๋ฐ | ๊ฐ์
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋ ํ์ํ ๋ชจ๋ ์น ๊ธฐ์ ์ ๊ธฐ์ด๋ถํฐ ์ดํดํ๊ณ , ์์ฑํ ์ ์์ต๋๋ค. ์คํ๋ง MVC์ ํต์ฌ ์๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๊ณ , ๋ ๊น์ด์๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ก ์ฑ์ฅํ ์ ์์ต๋๋ค., -
www.inflearn.com