본문 바로가기

Spring

[번외] [JSP] Include & Forward 방식의 차이

Jsp 의 Include & Forward 방식

** jsp 뿐 아니라, include, forward 가 사용되는 방식은 동일하다?

🤗 Include 방식

Include 방식이란?

💡 제어의 흐름에 해당 부분을 포함시키는 것.
Include 는 일종의 흐름의 포함이다.

Include 방식의 종류RequestDispatcher 를 이용한 방식본격적으로 제어의 흐름을 넘기는 방식.
request 안에있는 Dispatcher를 이용하여 해당 파일로 제어를 넘긴다.


request 객체와 response 객체 사용이 가능하다.<jsp:include page="">,

<%@include file="[path]"%> 방식을 사용한다.

 

<%@include file="[path]"%>
위와 같은 경우에는 제어의 흐름을 넘기는 방식이 아니라, 소스 자체를 붙여넣어 처리한다.


변수를 사용도 가능하고, 조각난 소스를 모으는데 처리하는 방식이다.

 

<jsp:include page="[PATH]"> <jsp:param name="[변수 키]" value="[변수 값]"/>

jsp 내장 태그를 이용하는 방식 jstl 은 외부 라이브러리를 가져와서 사용해야하지만, jsp 는 기본 내장이 있다.
html 내부에 <%%> 등이 혼재되면, 소스를 알아보기 더욱 힘들어지기 때문에 만들어진 태그 jsp 액션 태그.
RequestDispatcher dispatcher 를 하는 방식과 동일하나, parameter 를 넘기는 방식이 더욱 수월하다.
또한 소스의 가독성을 높이고 html 결과물을 가져올 수 있다.

단점

request 안에 attribute 를 넣거나, 하는 방식을 사용하는 경우 include 는 태그로 사용하고 밑에 <% %> 태그를 다시 사용해야 할 수 있음.

해당 태그는 html 소스를 모듈화해서 사용하는 방식으로 쓰인다. page 에 java String 으로 들어가게 해서 동적으로 불러오는 것 또한 가능하다.

클라이언트가 요청을 전송했을 때, include 가 진행이 된다.

request 에 attribute 를 넣거나, 파라미터를 넣고 넘겨주는 방식이다.
결과물을 html 문서가 아닌 제어만 넘기는 방식이다. dispatcher 가 수행하고나면, 결과물을 request 에서 받아서 처리하는 방식으로 사용된다.

<% 
    RequestDispatcher dispatcher = request.getRequestDispatcher("\[Path\]");
    dispatcher.include(request,response);
    dispatcher.forward(request,response); 
%>

<%@include file=""%>

 

Include 의 장점

💡 Include를 하는 경우에는 소스를 분할하여 사용하고 가독성을 높일 수 있다는 장점이 있다. 또한, 불필요한 소스를 배제하거나 동적 불러오기가 가능하다.

🥰 Forward 방식

Forward 방식이란?

 

💡 로직 자체를 넘겨버리는 방식
로직 자체를 넘겨주는 방식이다.

Forward 방식의 종류

<jsp:forward page=""></jsp:forward>
<% 
    RequestDispatcher dispatcher = request.getRequestDispatcher("\[Path\]"); 
    dispatcher.include(request,response);
    dispatcher.forward(request,response); 
%>

include 와 동일하다.
결국 html 페이지로 받는 형태가 아니라서 해당 로직 종료시에 나오는 것이 된다.

<jsp:forward page=""> 페이지 처리 자체를 forward 를 통해 넘긴다.
해당 로직이 종료되면 html 로 소스코드가 나온다.
즉, 이용을 처리하기 위한 방식. forward에 파라미터로 넘겨서 흐름을 넘긴다.

RequestDispatcher 를 이용한 방식

Forward 사용 이유는?

💡 에러를 처리하거나, 혹은 처리를 할 수 있도록 하는 방식으로 사용된다.