Controller의 메서드는 Model이라는 타입의 객체를 파라미터로 받을 수 있습니다.
순수하게 JSP Servlet으로 웹 어플리케이션을 만들 때 보통 request나 session 내장객체에 정보를 담아 JSP에 넘겨주곤 했는데 Spring에서는 Model이라는 객체를 사용합니다.
즉 <request.setAttribute()>
와 비슷한 역할을 하는 것.
request.setAttribute("time", new java.util.Date());
RequestDispatcher dispatcher = request.getRequestDispatcher("url");
dispatcher.forward(request, response);
위 코드는 jsp로 게시판을 만들 때 많이 사용했던 형태의 코드입니다.
하지만 스프링에서는 다음과 같이 처리합니다.
public String home(Model model) {
model.addAttribute("time", new java.util.Date());
return "home";
}
-스프링MVC의 Controller는 기본적으로 Jaba Beans 규칙에 맞는 객체는 자동으로 화면에 전달해줍니다. Java Beans의 규칙에 맞는다는 것은 단순히 생성자가 없거나 빈 생성자를 가지며, getter/setter/를 가진 클래스의 객체들을 의미합니다.
전달될 때는 클래스명의 앞글자를 소문자로 처리하여 전달합니다.
@GetMapping("/ex04")
public String ex04(SampleDTO dto, int page){
return "ex04";
}
<h2>Sample DTO : ${sampleDTO}</h2>
<h2>page : ${page}</h2>
이렇게 기본자료형은 어떻게 view에 전달을 할까?
-1. 파라미터에 Model타입의 객체를 선언. 이후 addAttribute()를 통해 전달
-2. @ModelAttribute어노테이션을 사용
2번은 다음과 같이 사용합니다.
@GetMapping("/ex04")
public String ex04(SampleDTO dto, @ModelAttribute("mypage")int page){
return "ex04";
}
<h2>page : ${mypage}></h2>