JSP &Servlet

페이지 모듈화와 요청 흐름 제어

Lurutia 2018. 8. 4. 00:22

<jsp:include>

웹페이지의 중복되는 부분(헤더, 사이드바, 푸터)을 모든 페이지마다 작성하는건 관리하기도 어렵고 비효율적이다 이때 <jsp:include> 태그를 사용하면 문제를 해결할 수 있다.

 

<jsp:include page="포함할페이지" flush="true />

page: 포함할 JSP페이지의 경로를 지정한다.

flush: 포함할 JSP를 호출하기 전에 출력버퍼를 flush할지를 결정한다. 기본값은 false

 

<jsp:param>으로 포함할 페이지에 파라미터 추가하기

<jsp:include page="/sidebar.jsp">
	<jsp:param name="login" value="true" />
    <jsp:param name="profile" value="<% profile %>" />
</jsp:include>

 

param 가져오기

<%
	Boolean login = request.getParameter("login");
    if(login == null) return;
%>

 

include 디렉티브

<%@ include file="포함할파일.jspf" %>

 

※ 디렉티브로 include될 파일의 확장자는 jspf로 보통 지정한다. jsp fragment의 약자로 일반 jsp파일과 포함될 파일임을 구분하기 위해서다.

 

include 디렉티브는 jsp:include와 다르게 코드 자체를 삽입한다.

jsp:include의 경우 해당 jsp 페이지로 이동한 뒤 출력버퍼에 데이터를 쌓은뒤 호출한 jsp로 돌아와서 작업을 수행하지만 include 디렉티브는 include할 파일의 코드를 호출한 자리에 삽입한다. 때문에 선언하지 않은 변수도 사용하는등의 작업을 할 수 있다.

 

위와 같은 이유로 크게 2가지 경우로 사용한다

  • 모든 JSP 페이지에서 사용하는 전역변수 지정
  • 저작권 표시와 같은 모든 페이지에서 중복되는 간단한 문장

jspf 자동으로 포함하기

web.xml

<jsp-config>
	<jsp-property-group>
    	<url-pattern>/view/*</url-pattern>
        <include-prelude>/variable.jspf</include-prelude>
        <include-coda>/footer.jspf</include-coda>
    </jsp-property-group>
</jsp-config>

jsp-property-group : JSP의 프로퍼티를 포함한다.

url-pattern : 프로퍼티를 적용할 JSP 파일의 URL 패턴을 지정

include-prelude : JSP 파일의 앞에 삽입할 파일 지정

include-coda : JSP 파일의 뒤에 삽입할 파일 지정

 

<jsp:forward>

하나의 JSP 페이지에서 다른 JSP페이지로 요청처리를 전달할 때 사용한다.

클라이언트가 from.jsp 에 요청을 한뒤 from.jsp 에서 to.jsp로 foward할 경우 to.jsp가 한 응답이 클라이언트에게 전달된다. 이 때 from.jsp는 to.jsp에게 request, response를 그대로 전달한다.

 

<jsp:forward page="이동할페이지" />

유의할점은 forward 액션태그를 사용하게되면 생성했던 출력결과는 모두 제거되고 forward된 page가 새로 작성합니다.

 

forward param

<jsp:forward page="to.jsp">
	<jsp:param name="last" value="tony"/>
    <jsp:param name="first" value="stark" />
<jsp:forward>