ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스프링 MVC
    스프링/스프링 MVC 패턴 2023. 2. 12. 18:28

    스프링 MVC를 이용하면 이전까지 웹 페이지를 구축해서 회원 가입, 회원 저장, 회원 목록 조회했던 것들을 하나의 클래스에서 작성할 수 있다. 또한 코드가 간결하여 파악하기도 쉽다는 장점이 있다.

     

     

    클래스 선언과 컨트롤러, 매핑 애노테이션

    @Controller
    @RequestMapping("/springmvc/v3/members")
    public class SpringMemberControllerV3 {
        private MemberRepository memberRepository = MemberRepository.getInstance();

    클래스 위에 @Controller, @RequestMapping 애노테이션이 들어갔다.

    @Controller는 이 클래스를 컨트롤러로 사용한다는 의미를 가지고 있는 애노테이션이다.

    @RequeustMapping은 아래 코드와 연결되니까 아래에서 다시 설명하겠다.

     

     

    회원 가입

        // @RequestMapping(value = "/new-form", method = RequestMethod.GET) // method를 통해 GET으로만 호출 가능
        @GetMapping("new-form")
        public String newForm() {
            return "new-form"; // modelAndView도 되지만 스프링 MVC는 유연하기에 그냥 return 해도 됨
        }

    우선 new-form이다. 회원 가입을 하는 페이지를 만들어주는 코드이다.

    @RequestMapping("/new-form")을 입력하면 new-form 페이지로 변경한다. 클래스 위에 @RequestMapping("springmvc/v3/members")라는 애노테이션이 있어서 http:localhost:8080/springmvc/v3/members/new-form의 url로 연결 시켜주는 것이다.

    뒤에 method = RequestMethod.GET은 GET으로만 호출 가능하게 하라는 것인데, 단순히 페이지를 조회하는 메서드이기때문에 GET 방식을 사용해야한다.

    위의 주석 한 줄을 간단히 @GETMapping으로 변경할 수 있다.

     

     

    회원 저장

    @PostMapping("/save")
    // @RequestMapping(value = "/save", method = RequestMethod.POST)
    public String save(@RequestParam("username") String username,
                             @RequestParam("age") int age,
                             Model model) {
        /*String username = request.getParameter("username");
        int age = Integer.parseInt(request.getParameter("age"));
         */ // 애노테이션을 이욯해서 생략 가능
    
        Member member = new Member(username, age);
        memberRepository.save(member);
    
        model.addAttribute("member", member); // 모델에 담기
        return "save-result"; // view 이름 반환
    }

    회원 저장을 하는 메서드이다. http:localhost:8080/springmvc/v3/members/save로 연결시켜주는 코드이다.

    파라미터 안에 @RequestParam이 있는데, 이 애노테이션은 username과 age의 파라미터가 넘어와서 사용할 수 있도록 만들어주는 애노테이션이다. 회원 저장하는 코드도 이전과 비교해서 훨씬 간단해진 것을 확인할 수 있다.

    save는 저장을 하는 목적이기 때문에 POST를 사용해야해서 @POSTMapping("/save")를 사용했다.

     

     

    회원 목록 조회

    @GetMapping
    // @RequestMapping(method = RequestMethod.GET)
    public String members(Model model) {
    
        List<Member> members = memberRepository.findAll();
    
        model.addAttribute("members", members);
        return "members";
    }

    마지막으로 회원 목록을 조회하는 메서드이다. 회원 목록을 조회하는 것도 단순 조회이기에 @GetMapping 애노테이션을 사용했다. 다른 메서드와 다르게 @GetMapping뒤에 아무것도 안붙어있는데 그것은 url을 http:localhost:8080/springmvc/v3/members로 했기 때문이다. 클래스 선언에 RequestMapping으로 springmvc/v3/members가 지정되어있으므로 아무것도 안 붙여도 회원 목록 조회 사이트로 넘어간다.

    회원 저장과 회원 목록 조회 모두 model.addAttribute를 사용했는데 이 메서드는 모델에 담는다는 메서드이다.

    컨트롤러와 뷰를 연결시켜주는 역할을 한다.

     

     

     

     

    스프링 MVC를 활용해서 회원가입 웹 사이트를 구축해봤는데 이전에 서블릿을 이용했을 때보다 훨씬 간결해서 좋았다.

    하지만 스프링 MVC 역시 서블릿 기반이기 때문에 기초 부분을 잘 기억하고 있어야지 나중에 수정하거나 추가할 일이 생겼을 때 도움이 될 것 같다.

    '스프링 > 스프링 MVC 패턴' 카테고리의 다른 글

    특정 조건 매핑  (0) 2023.02.14
    로그 출력  (0) 2023.02.13
    view resolver  (0) 2023.02.12
    핸들러 어댑터  (0) 2023.02.12
    프론트 컨트롤러 패턴  (0) 2023.02.10
Designed by Tistory.