Free Lines Arrow
본문 바로가기
Spring/spring mvc 1 스터디

[Spring] Spring Controller 다루기

by skahn1215 2021. 11. 6.
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

댓글