[Spring]Model객체2

윤재열·2022년 2월 14일
0

Spring

목록 보기
22/72
post-custom-banner

Spring Model객체

  • 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";
    }
  • 편리한 점은 개발자는 직접 model을 생성할 필요가 없습니다. 다만 파라미터로 선언만 해주면 스프링이 알아서 만들어줍니다.

-스프링MVC의 Controller는 기본적으로 Jaba Beans 규칙에 맞는 객체는 자동으로 화면에 전달해줍니다. Java Beans의 규칙에 맞는다는 것은 단순히 생성자가 없거나 빈 생성자를 가지며, getter/setter/를 가진 클래스의 객체들을 의미합니다.
전달될 때는 클래스명의 앞글자를 소문자로 처리하여 전달합니다.

  • 그러나 기본자료형(int,double 등등)은 파라미터로 선언되었떠라도 화면에 자동으로 전달되지 않습니다.
  • 예를 들어 Controller에 다음과 같은 메서드가 있다고 가정해보면
    SampleDTO는 String name, int page를 인스턴스 변수로 가집니다.
@GetMapping("/ex04")
public String ex04(SampleDTO dto, int page){
return "ex04";
}
  • ex01.jsp에 다음과 같이 전달받은 데이터를 출력하는 코드를 작성해봅니다.
<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>
profile
블로그 이전합니다! https://jyyoun1022.tistory.com/
post-custom-banner

0개의 댓글