Controller

CHM·2022년 6월 10일
0

Spring

목록 보기
10/26

Controller

  • 사용자 요청(URL 기반)에 해당하는 Controller의 특정 메서드가 호출됨
  • Controller는 요청의 파라미터가 있음녀 처리하고
  • 비지니스 처리를 위해서 Service 컴포넌트를 주입받아서 실행
  • 실행 결과를 전달받아(화면 정보와 함께) DispatcherServlet에게 반환
  • 사용되는 어노테이션
    • @Controller
    • @RequestMapping
    • @Autowired

@RequestMapping

  • 클래스 레벨 매핑, 메서드 레벨 매핑으로 구분
  • 클래스 레벨에서 엮여진 URL과 메서드 레벨에서의 URL이 결합되어 실제 메서드가 호줄됨
  • 요청 방식 선택
    • GET
    • POST
    • PUT
    • DELETE
@Controller
@RequestMapping("/bbs")
public class BbsController {
   
   @RequestMapping("/list)
   public String lisf() {
      retrun "bbs/list";
   }
   
   // /bbs에서 write & POST 방식으로 요청 됐을 때 호출되는 메서드
   @RequestMapping(value="/write", method=RequestMethod.POST)
   public string doWrite() {
      return "bbs/write_ok";
   }
}
  • Spring4.3 이후에는 위 요청방식을 따로 적어주는 @RequestMapping 대신 @GetMapping, @PostMapping, @PutMapping, @DeleteMapping을 사용할 수 있다.

@RequestMapping :: @PathVariable

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

ModelAndView를 사용한 모델/뷰 처리

  • 응답으로 View(JSP)와 Model(Domain 객체, VO)을 함께 처리할 때 사용
  • 서비스로부터 받아온 데이터를 뷰로 전달해주는 역할

Redirect & Forward

Redirect(Forward) 처리

  • 컨트롤러에서 클라이언트 요청을 처리한 후에 다른 페이지로 리다이렉트 하고 싶을 때
    • return "redirect:/bbs/list";
    • cf) forword 이용 : return "forward:/bbs/list";
  • 경로 부분이 "/"로 시작하면 웹 어플리케이션 내의 절대경로로 리다이렉트
  • "/"로 시작하지 않으면 @RequestMapping 어노테이션의 경로를 기준으로 상대경로로 리다이렉트
  • 아래 코드의 경우 "redirect:/header/main"과 동일한 URL로 리다이렉트
@RequestMapping("/header/createuth")
public String createAuth() {
   return "redirect:main";
}
  • "redirect:"뒤에 완전한 URL을 적으면, 해당 URL로 리다이렉트 된다.
@RequestMapping("/header/createuth")
public String createAuth() {
   return "redirect:http://localhost8080/TotalTest";
}

0개의 댓글