영보의 SystemOut.log

[Spring] MVC / MVC동작 순서 본문

Spring

[Spring] MVC / MVC동작 순서

영보로그 2020. 10. 12. 17:19
반응형

# MVC

 - Model : 요청 처리 => 확장(재사용) 일반 자가

 - Conrtoller : 서블릿 (모델과 뷰를 연결해주는 역할 수행)

 - View : 요청 처리된 결과값을 출력 => JSP(EL,JSTL)

 

 

# 인터페이스

 - 서로 다른 여러개의 클래스를 묶어서 한개의 이름(인터페이스)으로 관리(제어)

 

 

# 상속
 -  extends, implements

    class A ==> A 데이터형
    class B ==> B 데이터형

    interface I
    class C implement I ==> 데이터형 (I,C)
    
    interface 동물
    class 개 implements 동물(개,동물)
     
   동물 ani=new (개)
      → 인터페이스에 존재하는 메소드에 한정 인터페이스에 메소드를 증가 구현하고 있는 모든 클래스 에러 발생
      → POJO (인터페이스 구현(X), 상속(X)) 구분(어노테이션) => Spring

 

 

# 매개변수 전송 방식 

- Call By Value : 다른 메모리에 값을 복사(일반 데이터)

- Call By Reference : 같은 메모리 주소 원본이 넘어간다

 

 

# MVC 동작 순서

 브라우저에서 요청을 받는 경우(JSP/Servlet)

 

             request          (request를 받아서)                 request         데이터베이스 연결

사용자 컨트롤러 Model클래스 데이베이스(DAO)

          결과값을 받는다           request에 값을 담아서    (setAttribute())

Model클래스 컨트롤러 JSP로 전송 ─> 사용자

 

 사용자가 보내준 request를 이용해서 ─> 결과값을 담아 준다 ─> (request는전체 동일하다)

                                                    Call By Reference

 

 

# Controller →연결해야되는 모델과 뷰를 알고 있다

 1) 요청 받는다

    String cmd=request.getRequestURI()

       (list).do

 2) 모델을 찾는다 ListModel

 3) 모델에서 넘겨준 결과 값을 request, session에 담아서 request.setAttribute()

 4) JSP를 찾고 request, session을 넘겨준다

     forward(request, response)

 

     list.do ListModel  list.jsp

     detail.do DetailModel detail.jsp Map을 이용해서 (요청:키,해당 자바파일)

 

   **Controller가 수정하기 위해서 Controller를 소스 수정 ==> 전체 사이트를 구동할 수 없다

 

 

# .jsp VS .do

1
2
3
4
5
6
<beans><!-- 스프링Bean(Model클래스) -->
   <bean id="list.do" class="com.sist.model.ListModel"/>
   <bean id="detail.do" class="com.sist.model.DetailModel"/>
   <bean id="insert.do" class="com.sist.model.InsertModel"/>
   <bean id="insert_ok.do" class="com.sist.model.InsertOkModel"/>
</beans>
cs

 - 위 코드에서 list.do 일 때는 ListModel을 실행하고, 마찬가지로 ~.do일 때는 ~Model을 실행하라 되어있다. ListDataModel이랑 DetailModel은 스프링 실행순서 마지막으로써 화면에 그대로 쏴주기만 하면 되기 때문에 jsp를 리턴하는 것인데,

   InsertOkModel은

    1. list.do를 리턴 
    2. 리턴된 .do를 Controller에서 받아서 
    3. ListModel을 거쳐야됨

  이러한 이유로 .do를 리턴하는 것이다.

 

Controller - Model이 서로 데이터를 주고받고나서 마지막으로 html만 쏴주면 되는 상황에서는 .jsp로 리턴

                  - Model이 서로 데이터를 주고받는 과정 속에서는 .do로 리턴해야 한다.

 

 

반응형