ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Camel][JSP] 요청 흐름 제어 ( <jsp:forward> )
    JSP 2020. 3. 11. 21:22

    요청 흐름 제어

     하나의 JSP 페이지에서 다른 JSP 페이지로 요청 처리를 전달할 때 <jsp:forward> 액션태그를 사용합니다. 웹 브라우저로부터 요청을 받은 JSP 파일은 <jsp:forward> 액션태그가 실행되면서 다른 JSP 파일로 요청 흐름이 이동되게 됩니다. 그리고 요청 흐름의 이동이 발생할 때 <jsp:forward> 액션태그를 사용한 JSP 파일에서 사용한 request, response 기본 객체가 다른 JSP파일로 전달되게 됩니다. 요청 흐름의 이동을 통해 요청을 전달받은 JSP파일은 응답 결과를 생성하고 이 결과를 웹 브라우저에 전달하게 됩니다. 

     

     주목해야할 점은 request, response 기본 객체가 그대로 전달된다는 점과 <jsp:forward> 액션태그를 사용한 JSP 파일이 아닌 다른 JSP파일에서 생성한 응답결과가 웹 브라우저에게 전달된다는 점입니다. 

     

    1. <jsp:forword> 액션태그

     <jsp:forward> 액션태그의 사용방법은 아래와 같습니다. 

    <jsp:forward page="examples.jsp"/>

    그렇다면 <jsp:forward> 액션태그를 사용한 기본적인 사용방법에 대한 예제 코드를 확인해 보겠습니다. 

     

    main.jsp

    <%@ page contentType="text/html; charset=utf-8" %>
    <html>
    <head><title> jsp:forward 액션태그 활용 </title></head>
    <body>
    1111111111111111111111111111111111
    
    <jsp:forward page = "/examples.jsp" />
    
    </body>
    </html>

     

    examples.jsp

    <%@ page contentType="text/html; charset=utf-8" %>
    <html>
    <head><title> examples.jsp 출력 결과 </title></head>
    <body>
    22222222222222222222222222
    </body>
    </html>

     

     위 예제의 실행 결과를 확인해보면 main.jsp의 출력 결과는 사라지고, <jsp:forward> 액션태그를 사용해 이동한 examples.jsp의 결과가 출력되는 것을 확인할 수 있습니다. 그런데 웹 브라우저의 주소는 최초로 요청을 받은 main.jsp의 의 주소가 표시되어 있습니다. 

     

    <jsp:forward>액션태그를 실행하면 출력버퍼에 기존까지 저장되었던 내용들을 비우게 되고, <jsp:forward>액션태그를통해 이동한 페이지의 출력결과가 출력버퍼에 저장되며 그 내용을 응답결과로 사용해 웹 브라우저로 전달하는 것입니다. 위의 코드에서는 확인할 수 없지만 한가지 더 알아야 할 점은 <jsp:forward> 액션태그 뒤에 위치한 코드는 실행조차 되지 않는다는 점입니다. 

     

     그렇기 때문에 <jsp:forward> 액션태그를 사용하기 위해서는 <jsp:forward> 액션태그가 실행되기 전에 웹 브라우저로 데이터를 전송하면 안된다는 것입니다. 

     

     그리고 웹 부라우저의 주소가 최초로 요청을 받은 JSP페이지의 주소로 표시되는 이유는 <jsp:forward> 액션태그를 사용하면 웹 컨테이너 내에서 요청의 흐름을 이동시키는 것이기 때문에 웹 브라우저는 요청 처리의 흐름의 변화를 알 수 없기 때문입니다. 

     

    1-1. <jsp:forword> 액션태그의 활용

    일반적으로 <jsp:forward> 액션태그는 조건에 따른 페이지의 분기 상황에서 자주 사용됩니다. 쉽게 말해서 조건에 따라서 서로 다른 결과 화면을 보여야 할 때 사용되는 것입니다. <jsp:forward> 액션태그를 사용하지 않아도 충분히 구현이 가능하지만 <jsp:forward> 액션태그를 사용하지 않으면 코드가 다소 복잡해질 수 있습니다.

    <%@ page contentType="text/html; charset=utf-8" %>
    <%
    	String nextPage = null;
        
        	if (option.equals("A")) {
        		nextPage = "/examples1.jsp"
        	} else if (option.equals("B")) {
        		nextPage = "/examples2.jsp"
        	} else if (option.equals("C")) {
        		nextPage = "/examples3.jsp"
        	}
    %>
    <jsp:forward page="<%=nextPage%>" />

    댓글

Camel`s Tistory.