23.01.31

이동욱·2023년 8월 6일
0

NaverCloudCamp

목록 보기
21/42

학습내용

  1. forward
  2. Model2 Arch
  3. controller 역할
  4. RequestDispatcher

forward

client request가 servlet1로 들어온 뒤 forward를 통해서 servlet2로 보낸다.
아직 servlet2로 보냈을 뿐이지. response가 된것은아니기에 servlet2는 servlet1이 받은 request를 사용 할 수 있다.
또한 브라우저가 다시 요청을 보낸것이 아닌 서버에서 다른 servlet을 호출한 것이기에 url 변화는 없다.

forward, jsp:include servlet servlet 파일로 변환

  1. <jsp:forward page="09JSPActionForward.jsp"/>
    -> _jspx_page_context.forward("09JSPActionForward.jsp");
  2. <jsp:include page="top.jsp">
    -> _jspx_page_context.forward("09JSPActionForward.jsp");

Model1 arch, Model2 arch

1. Model1 Client의 request가 오면 view에서는 해당 request를 처리할 bean을 호출한다. bean은 Logic을 수행하고 데이터를 view로 반환하면 view는 다시 이 데이터를 처리하여 client에게 view를 보여준다. 이러한 구조는 view와 bean이 coupling 관계가 높아 bean을 수정하면 view 도 수정하기에 유지보수에 좋지 않다. 2. Model2 view와 bean의 coupling 관계를 없애기 위해 등장한 model이다. 중간에 controller라는 계층을 추가하여 view와 bean은 controller를 통해 서로에게 데이터를 보낼 수 있다. 이를 통해 View는 Business Logic에 대한 부분없이 view에만 전념하고 bean은 Business Logic에만 전념하여 decoupling관계로 변하였다.

controller 역할

  1. Business Logic 수행
  • 기존 model1 arch에서는 view를 구성하는 jsp에서 bean을 호출해 Business Logic을 수행하였다.
    나중에 Business Logic이 변경되어 bean의 이름이 바뀌거나 반환 타입이 변한다면 이 bean을 사용하는 모든 jsp는 해당 bean을 수정해야하는 불편함이 존재한다.
    model2 arch에서는 view와 model 사이에 controller라는 계층을 추가하여 bean의 변경사항이 생기더라도 controller 부분만 변경하면 되기에 유지보수에 편하다.
  1. Model/View 연결
  • View에 Bean이 포함되어 유지보수에 방해가되니 Model2 arch에서는 View와 Bean을 분리하였다. Controller는 Viwe와 Bean 사이에서 Bean의 Logic 수행결과를
    View에 전달하여 model과 view를 연결하는 역할은 한다.
  1. Navigation
  • 모든 request는 controller를 통해 들어온다. 따라서 request에 맞는 bean을 호출하여 Business Logic을 수행하고 수행 결과를 알맞는 jps에 전달하여 view를 보여주는
    역할을 수행한다.
  1. Work Flow Controll
  • 정상적인 흐름에 위배되는 request를 사전에 차단하고 그에 맞는 대응을 할 수 있다.
  1. 단일인입점
  • 모든 request는 Controller를 통해 들어오기에 인코딩, 방어적 코딩, 잘못된 입력에 대한 에러페이지 처리등을 할 수 있다.
profile
Backend Developer

0개의 댓글