웹 프로그래밍을 하다보면, 다른 자원이 컨텐츠를 포함해야 할 일이 생긴다. 나 또한 jsp 페이지로 작업을 하다보면, 포함해야 경우가 있는데 매번 검색하고 갖다썼다. 그러니깐 내 지식이 되지 못해서 이번에 정리할 겸 작성하게 되었다.
[ 웹 프로그래밍, Servlet & JSP ] 관한 링크
기본적인 것들을 제대로 알고가면, 누가 이건 뭐야? 라고 물었을때 가볍게 답할 수 있으며 누군가에게 설명할 때 바르게 설명할 수 있다.
- include 디렉티브
<%@ include file = "header.jsp" %>
include 하는 특정한 jsp 페이지를 단순하게 텍스트로 포함시키는 기능을 가진다. 주로 조각코드를 삽입할 때 사용한다고 한다. 위의 그림을 살펴보자.
Client 가 Server 로 특정 명령을 요청하고, 이후에 Including jsp 는 Included jsp 를 텍스트 형태로 포함하고 있다. 그리고 이 과정에서 포함될 페이지를 포함시킨 jsp 파일은 이후에 서블릿으로 변환되고(.java 파일) 그 다음에 컴파일러에 의해서 컴파일 된다.
컴파일 된 결과는 우리가 잘 아는 바이너리 파일(.class) 로 되며 이 파일은 Client 에게 html문서로 랜더링되어 보여진다. 따라서 include 디렉티브는 정적인 방식으로 컨텐츠를 포함하고 있는 것이다. 공통적인 변수나 저작권과 관련된 '공통된' 문장들을 포함하기에 적합하다.
결과적으로 include 디렉티브는,
두 개의 jsp 파일을 하나의 Servlet 파일로 생성된다.
- <jsp:include> 표준 액션
<jsp:include page = "header.jsp" />
include 디렉티브와는 달리 동적인 방식으로 컨텐츠를 포함한다. 결국 포함시킬 페이지의 처리 결과를 포함한다는 것이다. 위의 그림을 살펴보자. 포함된 Including jsp 가 먼저 서블릿으로 변환되고 컴파일 되며, 이후에 Included jsp 가 서블릿으로 변환되고 클래스 파일로 컴파일된다.
위와 같은 경우는 jsp 페이지를 모듈화 할 때 사용한다. 공통으로 사용하는 중복적인 부분들을 JSP 파일로 모듈화하면 향후 유지보수 하기 편리하다. 해당 레이아웃들이 각각 독립적으로 존재하며, 개발자는 전체를 뜯어고치는 것이 아닌 일부만 뜯어고치면 되기 때문이다. 그리고 동적 include 는 해당 파일이 수정되면 다시 컴파일이 된다.
결과적으로 <jsp:include> 는,
두 개의 JSP 파일이 존재하면, 두 개의 Servlet 파일이 생성된다.
- <c:import> JSTL 태그
<c:import var="data" url="header.jsp" />
<jsp:include> 와 동일하게 동적인 방식으로 컨텐츠를 포함한다.
'Spring' 카테고리의 다른 글
20180206 DispatcherServlet ? (디스패처 서블릿) (0) | 2018.02.06 |
---|---|
20180205 <context:component-scan base-package="" /> (수정 : 2018 12 06) (0) | 2018.02.05 |
20180125 스프링(Spring Framework) 특징 3 : POJO (0) | 2018.01.25 |
20180122 스프링(Spring Framework) 특징 2 : 스프링 핵심 (0) | 2018.01.22 |
20180121 스프링(Spring Framework) 특징 1 : 스프링 목적 및 전략 (0) | 2018.01.21 |