[Spring] Controller, Model, ModelAndView

2023. 2. 17. 14:00·A - 종료 및 관심 밖/spring

Controller

  • 사용자의 요청이 진입하는 지점(entry point)
  • 요청에 따라 어떤 처리를 할지 결정해준다. 실질적인 처리는 서비스에서 처리한다
  • 사용자에게 view를 응답으로 보내준다

왜 쓰는가

  • 대규모로 갈수록 처리해야할 서비스가 많아지는데, 이를 하나의 클래스에서 몰아서 처리하는게 아니라 A요청에 대한 것은 A controller에서 맡아 로직처리를 위한 서비스를 호출한다
  • spring은 기본적으로 MVC 패턴을 사용하는데 이 때 controller를 사용하며 역할에 따른 설계가 가능하여 유지보수에 유리하다

사용방법

  • spring 설정파일에 등록된 패키지 안에서 검색하기 때문에 컨트롤러를 스캔할 경로를 지정해주어야 한다
  • @Controller를 이용해 클래스 생성
  • @RequestMapping을 이용해 view의 요청 경로를 지정한다
  • view의 이름을 return한다. return하면 spring의 viewResolver를 통해 view와 ModelAndView를 DispathcerServlet에 전달한다
@Controller // 컨트롤러 지정 
@RequestMapping(value = "/home") // 컨트롤러와 메스드에 각각 mapping하면 깔끔하게 코드를 구현할 수 있다
public class HomeController { 

    @RequestMapping(value = "/list", method = RequestMethod.GET) // 뷰의 요청 경로 지정 
    public String home(Locale locale, Model model) { 
            // 로직 수행 
            ...

        // Model 객체를 paramater로 받아서 view로 Data를 전달할 수 있다
            // jsp 파일에서는 ${변수이름} 형태로 값을 사용할 수 있다
        model.addAttribute("변수이름", "변수에 넣을 데이터값"); 
            return "home"; // 뷰 파일 리턴 
    } 

    @RequestMapping("/content")
    public ModelAndView content() { // model과 거의 동일하다

        // 데이터와 뷰를 동시에 설정이 가능
        ModelAndView mv = new ModelAndView();
        mv.setViewName("/content"); // 뷰의 경로
            // model과 마찬가지로 jsp 파일에서는 ${변수이름} 형태로 값을 사용할 수 있다
        mv.addObject("변수이름", "데이터 값"); // 뷰로 보낼 데이터 값

        return mv;
    }
}

레퍼런스

https://wonos.tistory.com/380

https://po9357.github.io/spring/2019-05-11-Spring_Controller/

https://sudo-minz.tistory.com/25

저작자표시 비영리 변경금지 (새창열림)
'A - 종료 및 관심 밖/spring' 카테고리의 다른 글
  • [Spring] @RequestBody, @ResponseBody
  • [Spring] MVC 패턴
  • [스프링] 웹 개발 개론
  • [스프링] 스프링 입문_디자인 패턴_03_프록시(proxy)
dev-moons
dev-moons
주니어 개발자의 개발지식 학습 내용부터 java, python 등 실무 중심으로 필요한 내용들을 정리하는 블로그입니다
  • dev-moons
    dev-moons의 개발 블로그 | 프론트부터 백엔드까지
    dev-moons
  • 전체
    오늘
    어제
    • 분류 전체보기 (29)
      • P - 기한이 있는 목표 (4)
        • 개발지식 (4)
      • A - 장기적인 목표 (0)
      • R - 일반적인 관심사 (1)
      • A - 종료 및 관심 밖 (25)
        • 독서 (1)
        • spring (11)
        • javascript (2)
        • sql (6)
        • db (1)
        • 자료구조론 (2)
        • springboot 게시판 만들기 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    m1mac
    SQL고득점KIT
    디자인패턴
    java
    자료구조론
    mysql
    스프링입문
    SQL
    Spring
    스프링
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
dev-moons
[Spring] Controller, Model, ModelAndView
상단으로

티스토리툴바