728x90
반응형
Controller 다루기
어떻게 Controller 를 실용적이게 쓰는지 알아보자
Controller V1
- 각각 기능에 맞춰 컨트롤러 구현하기
- 여기선 따로 특별하게 없다.
SpringMemberFormControllerV1 class
@Controller
public class SpringMemberFormControllerV1 {
@RequestMapping("/springmvc/v1/members/new-form")
public ModelAndView process() {
return new ModelAndView("new-form");
}
}
SpringMemberListControllerV1
@Controller
public class SpringMemberListControllerV1 {
private MemberRepository memberRepository = MemberRepository.getInstance();
@RequestMapping("/springmvc/v1/members")
public ModelAndView process() {
List<Member> members = memberRepository.findAll();
ModelAndView mv = new ModelAndView("members");
//mv.getModel().put("members", members);
mv.addObject("members", members);
return mv;
}
}
SpringMemberSaveControllerV1
@Controller
public class SpringMemberSaveControllerV1 {
private MemberRepository memberRepository = MemberRepository.getInstance();
@RequestMapping("/springmvc/v1/members/save")
public ModelAndView process(HttpServletRequest req, HttpServletResponse resp) {
String username = req.getParameter("username");
int age = Integer.parseInt(req.getParameter("age"));
Member member = new Member(username, age);
memberRepository.save(member);
ModelAndView mv = new ModelAndView("save-result");
//mv.getModel().put("member",member);
mv.addObject("member", member);
return mv;
}
}
Controller V2
Controller 를 하나로 통합하기
SpringMemberControllerV2
- class 위에 중복되는 URI 를 RequsetMapping 으로 뽑아줬다.
@Controller
// class 에 RequestMapping 을 추가하면 URI 에서 중복제거 가능하다.
@RequestMapping("/springmvc/v2/members")
public class SpringMemberControllerV2 {
private MemberRepository memberRepository = MemberRepository.getInstance();
//@RequestMapping("/springmvc/v2/members/new-form")
@RequestMapping("/new-form")
public ModelAndView newForm() {
return new ModelAndView("new-form");
}
//@RequestMapping("/springmvc/v2/members")
@RequestMapping
public ModelAndView members() {
List<Member> members = memberRepository.findAll();
ModelAndView mv = new ModelAndView("members");
//mv.getModel().put("members", members);
mv.addObject("members", members);
return mv;
}
//@RequestMapping("/springmvc/v2/members/save")
@RequestMapping("/save")
public ModelAndView save(HttpServletRequest req, HttpServletResponse resp) {
String username = req.getParameter("username");
int age = Integer.parseInt(req.getParameter("age"));
Member member = new Member(username, age);
memberRepository.save(member);
ModelAndView mv = new ModelAndView("save-result");
//mv.getModel().put("member",member);
mv.addObject("member", member);
return mv;
}
}
Controller V3
- String 을 반환타입으로 주어 url 을 반환한다.
- @RequestParam 을 사용하여 값을 가져온다.
- 알아서 형변환을 해준다.
- POST, GET 방식에서 둘다 사용할수 있다. - PostMapping, GetMapping 으로 간편하게 사용할수 있다.
@Controller
@RequestMapping(value = "/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(method = RequestMethod.GET)
@GetMapping
public String members(Model model) {
List<Member> members = memberRepository.findAll();
model.addAttribute("members", members);
return "members";
}
//@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";
}
}
728x90
반응형
'Spring > spring mvc 1 스터디' 카테고리의 다른 글
[Spring] Message Converter (0) | 2021.11.25 |
---|---|
[Spring] HTTP 응답 (0) | 2021.11.21 |
[Spring] HTTP 요청메세지 TEXT, JSON (0) | 2021.11.16 |
[Spring] HTTP 요청파라미터 (0) | 2021.11.13 |
[Spring] 요청매핑 (0) | 2021.11.10 |
댓글