ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] 컨트롤러, Model, ModelAndView 사용법
    개발 모음집/Spring 2020. 11. 29. 22:16

    client가 요청을 하면, @Controller에 진입한다. 컨트롤러는 요청에 대한 작업을 수행하고, 뷰쪽으로 데이터를 전달한다.

    컨트롤러 클래스 제작 순서

    • @Controller를 이용해서 클래스를 생성한다.
    • @RequestMapping을 이용해, view의 요청 경로 지정한다.
    • 요청 처리 메소드(로직) 구현한다.
    • 뷰 이름 리턴한다.
    @Controller // 컨트롤러 지정
    public class HomeController {
    
        // 뷰의 요청 경로 지정
        @RequestMapping(value = "/", method = RequestMethod.GET)
        public String home(Locale locale, Model model) {
            // 로직 수행
            logger.info("Welcome home! The client locale is {}.", locale);
            Date date = new Date();
            DateFormat dateFormat =
                DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
            String formattedDate = dateFormat.format(date);
    
            // Model 객체를 이용해서, view로 Data 전달
            model.addAttribute("serverTime", formattedDate);
            return "home"; // 뷰 파일 리턴
        }
    }
    

    Model 객체 사용법

    Model 객체를 파라미터로 받아서 데이터를 뷰로 넘길 수 있다.

    @RequestMapping("/board/view")
    public String view(Model model) {
        // 데이터만 설정이 가능
        model.addAttribute("id", "hongku");
        return "board/view";
    }
    

    Model 객체를 파라미터로 받는다.

    model.addAttribute("변수이름", "변수에 넣을 데이터값");

    뷰(.jsp 파일)에서는 ${}를 이용해서 값을 가져온다.

    당신의 ID는 ${id} 입니다.

    jsp 파일 내용

    브라우저 결과 화면

    ModelAndView 객체 사용법

    Model 객체와 크게 다르지 않다.

    @RequestMapping("/board/content")
    public ModelAndView content() {
        // 데이터와 뷰를 동시에 설정이 가능
        ModelAndView mv = new ModelAndView();
        mv.setViewName("/board/content"); // 뷰의 이름
        mv.addObject("data", "12341234"); // 뷰로 보낼 데이터 값
        return mv;
    }
    

    setViewName()으로 뷰 경로를, addObject()로 데이터를 담고 return mv;로 반환한다.

    mv.setViewName("뷰의 경로");
    mv.addObject("변수 이름", "데이터 값");
    return mv;

    jsp에서도 동일하게 ${}를 사용한다.

    Data : ${data}

    jsp 파일 내용

Designed by Tistory.