[์ฐธ๊ณ ๊ฐ์] ๊น์ํ๋์ ์คํ๋ง MVC 1ํธ - ๋ฐฑ์๋ ์น ๊ฐ๋ฐ ํต์ฌ ๊ธฐ์
@RequestMapping
์คํ๋ง์ ์ ๋
ธํ
์ด์
์ ํ์ฉํ ๋งค์ฐ ์ ์ฐํ๊ณ , ์ค์ฉ์ ์ธ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ง๋ค์๋๋ฐ ์ด๊ฒ์ด ๋ฐ๋ก @RequestMapping ์ ๋
ธํ
์ด์
์ ์ฌ์ฉํ๋ ์ปจํธ๋กค๋ฌ์ด๋ค.
@RequestMapping
- RequestMappingHandlerMapping
- RequestMappingHandlerAdapter
๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ ํธ๋ค๋ฌ ๋งคํ๊ณผ ํธ๋ค๋ฌ ์ด๋ํฐ๋ RequestMappingHandlerMapping , RequestMappingHandlerAdapter ์ด๋ค.
์ด๊ฒ์ด ๋ฐ๋ก ์ง๊ธ ์คํ๋ง์์ ์ฃผ๋ก ์ฌ์ฉํ๋ ์ ๋
ธํ
์ด์
๊ธฐ๋ฐ์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ง์ํ๋ ํธ๋ค๋ฌ ๋งคํ๊ณผ ์ด๋ํฐ์ด๋ค. ์ค๋ฌด์์๋ ์ฌ์ฉํ๋ค.
@Controller
public class SpringMemberFormControllerV1 {
@RequestMapping("/springmvc/v1/members/new-form")
public ModelAndView process() {
return new ModelAndView("new-form");
}
}
@Controller
public class SpringMemberSaveControllerV1 {
private MemberRepository memberRepository = MemberRepository.getInstance();
@RequestMapping("/springmvc/v1/members/save")
public ModelAndView process(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;
}
}
@Controller
public class SpringMemberListControllerV1 {
private final MemberRepository memberRepository = MemberRepository.getInstance();
@RequestMapping("/springmvc/v1/members")
public ModelAndView process() {
List<Member> members = memberRepository.findAll();
ModelAndView mv = new ModelAndView("members");
mv.addObject("members", members);
return mv;
}
}
@Controller
@RequestMapping("/springmvc/v2/members")
public class SpringMemberControllerV2 {
private final MemberRepository memberRepository = MemberRepository.getInstance();
@RequestMapping("/new-form")
public ModelAndView newForm() {
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);
return mv;
}
}
ํด๋์ค ๋ ๋ฒจ์ ๋ค์๊ณผ ๊ฐ์ด @RequestMapping ์ ๋๋ฉด ๋ฉ์๋ ๋ ๋ฒจ๊ณผ ์กฐํฉ์ด ๋๋ค.
ex)
ํด๋์ค ๋ ๋ฒจ @RequestMapping("/springmvc/v2/members")
๋ฉ์๋ ๋ ๋ฒจ @RequestMapping("/new-form")
์ต์ข
์กฐํฉ : /springmvc/v2/members/new-form
@Controller
@RequestMapping("/springmvc/v3/members")
public class SpringMemberControllerV3 {
private final MemberRepository memberRepository = MemberRepository.getInstance();
@GetMapping("/new-form")
public String newForm() {
return "new-form";
}
@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";
}
@GetMapping
public String members(Model model) {
List<Member> members = memberRepository.findAll();
model.addAttribute("members", members);
return "members";
}
}
Model ํ๋ผ๋ฏธํฐ
save(), members()๋ฅผ ๋ณด๋ฉด Model์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
ViewName ์ง์ ๋ฐํ
๋ทฐ์ ๋
ผ๋ฆฌ ์ด๋ฆ์ ๋ฐํํ ์ ์๋ค.
@RequestParam ์ฌ์ฉ
์คํ๋ง์ HTTP ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ @RequestParam์ผ๋ก ๋ฐ์ ์ ์๋ค.
@RequestParam("username") ์ request.getParameter("username") ์ ๊ฑฐ์ ๊ฐ์ ์ฝ๋๋ผ ์๊ฐํ๋ฉด ๋๋ค.