일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 18233 java
- django The requested operation has failed!
- django windows 배포 에러
- 2961 도영이가 만든 맛있는 음식
- windows 원격 연결 설정
- 2661 java
- 1188 음식 평론가
- apache pythonpath
- django
- django httpd error
- The requested operation has failed!
- Problems occurred while performing provisioning operation
- windows apache wsgi 에러
- 2661 좋은 수열
- 공유기 원격 설정
- 1188 java
- django 웹 페이지
- django apache deploy error
- 2643 java
- django 프로젝트 시작
- 14711 java
- 18233 러버덕
- 원격 연결 포트 포워딩
- 2643 색종이 올려 놓기
- 2961 java
- 18233 비트마스킹
- APPEND_SLASH = FALSE
- django settings.py
- java di
- 14711 타일 뒤집기
라이브러리는 도서관 아닌가요
JSP 7 - model 1 to model 2 본문
흔히 웹 개발을 하다 보면 '포워딩을 한다'거나 '리디렉팅을 한다'고 한다.
단어의 뜻을 살펴보면 직관적으로 어떤 역할을 하는지 어느정도 이해할 수 있다.
forwarding
새로운 페이지를 불러 온다. 그리고 이전 페이지에서 하던 작업(data)을 이어나갈 수 있다.
redirecting
새로운 페이지를 불러 온다. 하지만 작업 이어가기 불가능.
Controller
입력과 제어를 담당
< JSP MVC model1 >
JSP 내에서 자바 코드도 돌리고 배포될 뷰 파일도 다 작성하는 방식이다.
상단에 <style>을 따로 빼듯 <% 데이터 입력 및 제어만 %>
하단에 <body> 안에서 <% 데이터 출력만 %>
< JSP MVC model2 >
model1의 서블릿(jsp)에서 하나로 묶여 있던 controller, model, view를
controller, model && view로 분리한다.
즉 jsp가 담당하는 view만 따로 빼내는 것이다.
그리고 model2는 디스패처(Dispatcher)라는 개념을 가져온다.
controller는 이 Dispatcher를 이용해서 포워딩(forwarding)이라는 작업을 한다.
이 포워딩이라는 작업은
controller, model에서 생성되는 서블릿(1)으로부터
view에서 관리하는 서블릿(2)으로 데이터를 넘겨주는 역할을 한다.
흔히들 view(jsp)에 포워딩한다고도 한다.
일반적으로 간소화된 model2에서는 컨트롤러 하나에 뷰 하나가 연결된다고 보는데,
해당 작업을 계속하다보면 결국 각각의 연결을 위해 디스패처도 하나씩 늘어나게 된다.
나중에는 이런 비효율적인 과정을 멈추고 디스패처를 하나로 집약화한다.
그래서 Controller는 더 이상 business 로직에 속하지 않고,
일반적으로 사용되는 POJO 클래스로 분리되고, 집약화된 하나의 디스패처에 의해 관리된다.
요약하면 사용자 요청이 들어오면 디스패처가 적절한 컨트롤러를 찾아 연결해주고,
해당 컨트롤러가 특정 뷰를 호출하게 된다.
두 서블릿(controller측과 view측) 간에 데이터를 주고 받으려면 결국 저장소가 필요해진다.
이 때 여러 저장소가 존재하는데, forwarding에 사용되는 저장소는 request이다.
1. page (모든 세션에서 공유)
2. request
3. session (현재 세션에서만 공유)
4. application
5. cookie
'Java > JSP' 카테고리의 다른 글
JSP 6 - 서블릿의 필터 (filter) (0) | 2022.01.08 |
---|---|
JSP 5 - form 태그 POST 요청, HttpServletRequest의 메서드 (0) | 2022.01.05 |
JSP 4 - GET 쿼리스트링 ( GET Query String ) (0) | 2022.01.04 |
JSP 3 - @WebServlet 어노테이션, 프로젝트 생성 (0) | 2022.01.04 |
JSP 2 - Context, Servlet Class (0) | 2022.01.04 |