반응형
본 포스팅은 https://www.youtube.com/watch?v=tPEf5VLKJI0을 참고하여 작성했습니다.
모델1은 컨트롤러와 뷰가 물리적으로 분리되지 않은 방식을 의미한다.
모델2은 컨트롤러와 뷰가 물리적으로 분리된 방식을 의미한다. 그리고 DisPatcher를 집중화한 후의 모델이다.
즉, 모델2 방식은 자바 코드와 JSP 코드가 분리되어 있다.
그렇다면 자바 코드로 전달받는 데이터를 어떻게 JSP에서 받을 수 있을까? (서블릿과 JSP 사이에 저장되는 저장소가 필요할텐데..)
포워드(forward를 사용하면 된다. foward은 redirect와 상이하다.
forward는 현재 작업한 내용을 이어갈 수 있도록 무언가를 공유하는 것이고 redirect는 현재 작업하던 내용과 상관없이 새로운 요청을 하게 만드는 것이다.
forward 예제
// 아래 코드는 test.java이고 같은 경로에 test.jsp가 존재한다고 가정
// url상으로 같은 디렉토리에 있다고 가정하여 경로는 삽입하지 않고 파일명(test.jsp)만 삽입했다.
request.setAttribute("sum", 100);
getRequestDispatcher dispatcher = request.getRequestDispatcher("test.jsp");
dispatcher.forward(request, response);
// 아래 코드는 test.jsp 파일이다.
<body>
<%= request.getAttribute("sum"); %> // {sum}도 동일함
</body>
test.java에서 test.jsp로 forward를 통해 전달한 sum값을 test.jsp에서 <%= %>를 사용해 손쉽게 표현할 수 있다.(EL태그로도 가능)
test.java에서 test.jsp로 데이터를 전달하는 과정이 바로 모델2와 모델1의 차이이다.
코드도 굉장히 깔끔한 것을 볼 수 있다.
반응형
'Programming > Servlet' 카테고리의 다른 글
[JSP] JSTL로 현재 날짜와 특정 날짜 비교하기 (1) | 2020.12.16 |
---|---|
[JSP] JSTL <fmt: formatDate> 태그로 날짜 형식 변경하기 (0) | 2020.08.06 |
서블릿(Servlet) 필터(Filter)를 사용하여 한글 처리 문제를 해결하기(어노테이션 방식) (0) | 2020.08.03 |
서블릿(Servlet) url 매핑기법 2가지(web.xml 방식, 어노테이션 방식) (0) | 2020.07.30 |
[JSP] JSTL(Jsp Standard Tag Library) 정리 - <c:set>,<c:out>,<c:remove>,<c:if>,<c:choose>,<c:when>,<c:otherwise>,<c:forEach>,<c:forTokens> 등 (1) | 2019.10.27 |