본문 바로가기

Room 102. Back-end/Spring

[실전 개발자를 위한 Spring Framework ] 강의 - @Controller

08강 @Controller

  • 목차
    • 내용
      • 컨트롤러 컴포넌트
      • @RequestMapping 과 @PathVariable
    • 학습 목표
      • 컨트롤러의 개념을 이해하고 컨트롤을 작성해봅니다.
        • 웹 요청방식에 대해 대응하는 코드를 작성하고, HTTP URL 경로를 통한
          변수를 처리할 수 있습니다.
  • DispatcherServlet
    • 1. 웹 어플리케이션 최전방에서 사용자 요청을 압수.
    • 2. URL을 기준으로 요청을 처리할 Controller를 찾음.
    • 3. 해당 Controller를 호출 및 실행
  • Controller
    • 1. 사용자 요청(URL 기반)에 해당하는 Conroller의 특정 메소드가 호출됨.
    • 2. Controller는 요청의 파라미터가 있으면 처리하고
    • 3. 비즈니스 처리를 위해서 서비스 컴포넌트를 주입 받아서 실행함.
    • 4. 실행된 결과를 전달받아 View정보와 함께(리턴url 등) DispatcherServlet에게 반환합니다.
    • 사용되는 Annotation
      • @Controller (Class Level)
      • @RequestMapping (Method Level)
        • GET/POST/DELETE/PUT 요청 방식이 있음.
        • Spring 4.3 이후 각 요청 방식에 따른 어노테이션이 있음.
      • @Autowired (멤버변수에 Service 컴포넌트 주입)

 

  • @RequestMapping :: @PathVariable
    • 요청 URL을 파라미터로 사용(경로변수)
      • ex) http://cafe.daum.net/sq99/2hq/68443
      • 요청 URL : /bbs/{articleId}
      • 파라미터로 처리 : @PathVariable("articleId") String articleId

 

  • ModelAndView 를 사용한 모델/뷰 처리
    • 응답으로 View(JSP)와 Model(Domain Object, VO)을 함께 처리할 때 사용.
    • 서비스로부터 받아온 데이터를 뷰로 전달해주는 역할.
      • ModelAndView 객체를 생성하여, ViewName/Data 를 담아 return.
      • view.setViewName("bbs/list"); --> 리졸버를 통해 bbs/list 페이지로 반환되도록 처리
      • view.addObject("articleList", list); --> key/value 로 바인딩하여 데이터를 반환.
      • jsp 페이지에서는 전달 받은 데이터를 ${key값} 이라는 표현을 통해 사용 가능함.
        • string 일 경우 그대로 표현되고,
        • 객체일 경우 객체네임.프로퍼티네임을 통해 사용 가능.
  • Redirect & Forward
    • 리다이렉트(포워드) 처리
      • 컨트롤러에서 클라이언트의 요청을 처리한 후에 다른 페이지로 리다이렉트 하고 싶을 때
        • return "redirect:/bbs/list";
        • cf) forward : return "forward:/bbs/list";.
      • 경로 부분이 "/"로 시작하면 웹 어플리케이션 내에서의 절대 경로로 리다이렉트
      • "/"로 시작하지 않으면 @RequestMapping 애노테이션의 경로를 기준으로 
        상대 경로로 리다이렉트!
  • 실습 내용!
    • BbsController 작성 & BbsServier 사용.
    • HTTP 파라미터 사용.
    • 기타. Postman HTTP client 사용하여 테스트.