본문 바로가기
공부/springboot

MVC -- Model(1): 데이터 전송하기

by 샤샤샤샤 2023. 1. 25.

Model 클래스

model 클래스는 mvc패턴을 따라 웹을 설계할수 있도록 스프링프레임워크에서 지원하는 클래스이다.

mvc의 m을 맡고잇는 model은 데이터를 보관하는 역할을 한다.

model은 데이터를 controller로 보내거나 받으며,

controller는 데이터를 가공하고,

view는 받은 데이터를 토대로 화면을 구현하거나, 입력된 controller로 데이터를 보낸다.

그림에서 model과 view가 이어져 있지만, 엄밀히 말해 직접 상호작용을 하지는 않는다.

model에 의해 불러와지는 데이터는 크게 4가지 종류로 존재한다.

 

내장객체의 생명주기

1. application : 웹브라우져 닫을때까지 객체가 살아있다.

2. session : 로그아웃을 하거나 브라우져를 닫을때까지 살아있다.

3. request : 요청에 대한 응답이 있을때까지 살아있다.

4. model : request와 동일하다.

 

데이터 수신/ 발신 클래스

1. HttpServletRequest :

         .setAttribute( "이름", 데이터 ) : 데이터에 이름을 부여해 사용할수 있게 만든다. 이때 데이터의 타입은 제한이 없다.

                                                          request값으로 전달한다.

          .getSession( true/false ) : 디폴트 값은 true. 생성된 세션 데이터가 있으면 반환하고, 없으면 새로 만든다.

                                                 false의 경우, 세션 데이터를 반환하고, 만약 데이터가 없으면 그냥 null값을 반환한다.

         .getParameter ( 'name값' ) : html view폴더에서 사용자가 입력한 입력값을 받는다. name값과 같은 name을 가진                                                              테그에 입력된 값을 가져온다.

 

2. Model :

         .addAttribute( '이름', 데이터) : 데이터에 이름을 부여해 사용할수 있게 한다. 이때 데이터 타입의 제한은 없다.

                                                          request값으로 전달한다.

 

3. ModelAndView: 모델(데이터)과 뷰(html)를 동시에 저장/ 응답하는 객체.

         .addObject: ( "이름", 데이터 ) : 데이터에 이름을 부여해 사용할수 있게 한다. 데이터 타입의 제한은 없다.

                                                           request값으로 전달한다.

         .setViewName( "html파일 이름" ) : 전달된 데이터를 받을 html파일을 지정한다. 다른 클래스들은 return으로 지정해                                                                     주지만, ModelAndView는 미리 함수를 통해 지정하는 것이다.

**이미 setViewName() 를 통해 열릴 html파일을 지정해주었으니, return값으로 ModelAndView의 객체를 전달해주어야 한다.

   // MoedlAndView : 모델(데이터)와 view(HTML)을 동시에 저장/응답하는 객체
    @RequestMapping("/model4")
    public ModelAndView model2(HttpServletRequest request, ModelAndView mv){
        mv.addObject("name","춘향이");
        mv.addObject("age",18);

        // 뷰 설정
        mv.setViewName("index"); // index.html로 응답

        return mv;
    }

 

'공부 > springboot' 카테고리의 다른 글

MVC -- Model(2) : 데이터 받아오기  (0) 2023.01.25
데이터의 전송 타입( Get/ Post)  (0) 2023.01.25
타임리프 레이아웃  (0) 2023.01.25
46일차 복습  (1) 2023.01.19
45일차 복습  (0) 2023.01.17