-
스프링 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