코드 그라데이션

스프링 MVC - 실용적인 방식 본문

Spring/MVC 1

스프링 MVC - 실용적인 방식

완벽한 장면 2023. 10. 5. 19:51

스프링 MVC - 실용적인 방식


MVC 프레임워크 만들기에서 v3은 ModelView를 개발자가 직접 생성해서 반환했기 때문에, 불편했던  기억이 날 것이다.

물론 v4를 만들면서 실용적으로 개선한 기억도 날 것이다.

 

스프링 MVC는 개발자가 편리하게 개발할 수 있도록 수 많은 편의 기능을 제공한다.


실무에서는 지금부터 설명하는 방식을 주로 사용한다.

 

 

SpringMemberControllerV3

* v3
* Model 도입
* ViewName 직접 반환
* @RequestParam 사용
* @RequestMapping -> @GetMapping, @PostMapping

 

@Controller // Spring 컨테이너에 컨트롤러 빈으로 등록됨
@RequestMapping("/springmvc/v3/members") // 클래스 레벨의 URL 매핑
public class SpringMemberControllerV3 {

    private MemberRepository memberRepository = MemberRepository.getInstance();

    @GetMapping("/new-form") // HTTP GET 요청에 대한 "/springmvc/v3/members/new-form" 경로 매핑
    public String newForm() {
        // "new-form" 뷰의 이름을 반환
        return "new-form";
    }

    @PostMapping("/save") // HTTP POST 요청에 대한 "/springmvc/v3/members/save" 경로 매핑
    public String save(
            @RequestParam("username") String username,
            @RequestParam("age") int age,
            Model model) {
        // @RequestParam 어노테이션을 사용하여 HTTP 요청 파라미터를 메서드 파라미터로 바인딩

        // 사용자명(username)과 나이(age)을 이용하여 회원 객체 생성 및 저장
        Member member = new Member(username, age);
        memberRepository.save(member);

        // 모델에 회원 정보를 추가하여 뷰로 전달
        model.addAttribute("member", member);

        // "save-result" 뷰의 이름을 반환
        return "save-result";
    }

    @GetMapping // HTTP GET 요청에 대한 "/springmvc/v3/members" 경로 매핑 (기본값)
    public String members(Model model) {
        // 모든 회원 정보를 조회
        List<Member> members = memberRepository.findAll();

        // 모델에 회원 목록을 추가하여 뷰로 전달
        model.addAttribute("members", members);

        // "members" 뷰의 이름을 반환
        return "members";
    }
}

 

부연

- @GetMapping("/new-form") 어노테이션은 newForm 메서드를

  HTTP GET 요청에 대한 "/springmvc/v3/members/new-form" 경로와 매핑시킴.

  이 메서드는 "new-form" 뷰의 이름을 반환하여 화면을 표시함.

- @PostMapping("/save") 어노테이션은 save 메서드를 HTTP POST 요청에 대한 "/springmvc/v3/members/save" 경로와 

   매핑시킴.

  이 메서드는 @RequestParam 어노테이션을 사용하여 HTTP 요청 파라미터를 메서드 파라미터로 바인딩하고,

  회원 정보를 저장한 후 "save-result" 뷰의 이름을 반환한다.

- 기본적으로 @GetMapping 어노테이션은 메서드에 대한 경로를 명시하지 않으면 클래스 레벨의 경로와 조합하여 매핑함.

 따라서 members 메서드는 HTTP GET 요청에 대한 "/springmvc/v3/members" 경로로 매핑됨.

  이 메서드는 회원 목록을 조회하고 "members" 뷰의 이름을 반환하여 화면에 표시함.

- Model 객체는 모델 데이터를 관리하고 뷰로 전달하기 위해 사용됨.

  model.addAttribute를 통해 모델에 데이터를 추가하고, 이 데이터는 뷰에서 사용할 수 있음.

 

 

 

 

실행
등록: http://localhost:8080/springmvc/v3/members/new-form
목록: http://localhost:8080/springmvc/v3/members

 

 

 

    @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 > MVC 1' 카테고리의 다른 글

요청 매핑 - API 예시  (1) 2023.10.07
요청 매핑  (0) 2023.10.07
스프링 MVC - 컨트롤러 통합  (0) 2023.10.05
스프링 MVC 시작하기  (0) 2023.10.04
검증 헤더와 조건부 요청 1  (0) 2023.10.04
Comments