[JSP] include로 구조 잡기

    JSP에서 Include란?

    Include는 JSP, HTML과 같은 리소스의 내용을 현재 페이지에 포함을 시키는 것으로, 구조가 복잡하고 여러명의 개발자가 동시에 개발하기에 용이한 기능입니다. 

     

    우리가 프로그래밍을 하는데 한 메소드에 다양한 기능을 몽땅 넣어버리면 어떻게 될까요? 특정 메소드에 있는 기능이 다른 곳에서도 필요하게 될 경우 N번 이상의 중복 작업을 해야 되는 문제가 있게 되고, 다른 페이지만 수정해서 놓치는 문제 등이 있을 수 있으며, 동료 개발자가 있다면 역시 분리해서 작업하기 상당히 힘들어 질 것입니다.

     

    [JSP] include로 구조 잡기


    Include의 장점

    장점을 정리하자면 다음과 같습니다.

    • 동시에 작업을 할 때 용이함
    • 프로젝트 구조가 분리되면서 페이지가 심플해짐
    • 동일한 작업을 여러번 할 필요가 없음
    • 동일한 기능이 여러 페이지에 있을 경우, 한곳에만 기능 개발 시 오동작할 수도 있음
    • 전반적으로 개발의 MM(Man-Month)가 올라감
    • 모듈화를 구현할 수 있음

     

    그럼 Bootstrap 예제로 실습해 보면서 Include에 대해서 배워보도록 하겠습니다.

     

    Bootstrap으로 실습

    quantum-lite bootstrap

     

    위 부트스트랩은 Quantum-lite라고 하는 무료 bootrap admin이며 현재 spring-boot로 띄운 1개로 된 JSP 페이지입니다. 여기서 왼쪽 붉은색 박스안에 있는 Navigation (Left Menu box)을 코드에서 분리해보겠습니다.

     

    Navigation이 index.jsp에 포함된 모습

     

    위 index.jsp를 보면 모든 코드가 한 페이지(index.jsp)안에 있는 것을 알 수 있습니다. 그 중에 이번에 include를 해야 할 Navigation 코드도 보입니다. 저 부분을 별도의 페이지로 분리해서 소스의 복잡성을 완화시켜보도록 하겠습니다.

     

    left_menu.jsp

     

    해당 Navigation 코드를 Copy 한 후, common 폴더에 left_menu.jsp를 만들어 복사를 하였습니다. 이때 left_menu안에는 <html><body>같은 태그가 없이 순수하게 index.jsp에서 navigation만 뽑아서 페이지를 만듭니다.

     

    index.jsp

     

    index.jsp에는 기존에 있는 Navigation 코드를 모조리 삭제합니다. 다만 주석 정도는 남겨둬야 어느 부분에 include를 해야 할지 알아야 됩니다. 주석이 없다면 주석을 생성하시는게 좋습니다.

     

     

    Include 예시

    <jsp:include page="페이지경로" flush="true|false"/>

     

    include는 page의 값과 flush 값을 받습니다. 다만 flush의 default값이 false로 false일 경우 flush는 적지 않아도 무방합니다. 즉 아래와 같이 쓸 경우 flush는 false로 인식합니다.

     

    <jsp:include page="페이지경로"/>

     

    flush의 경우 true를 지정하면, 포함될 페이지 값을 include 하기 전에 buffer에 저장된 내용을 화면에 출력하게 되며, false로 지정, 즉 사용하지 않는 것이 일반적입니다. 방식을 이해했다면, left_menu를 페이지에 추가해보도록 하겠습니다.

     

    include 모습

     

    위와 같이 추가를 했다면, 정상적으로 페이지가 작동 되는지 left_menu.jsp 태그를 살짝 수정해봅니다.

     

     

    위 그림처럼 left_menu에 --- 추가한 메뉴라는 구분선을 추가하였습니다. 

     

    include가 된 모습

     

    위의 그림을 보면, Left Menu에 --- 추가한 메뉴라는 구분선이 추가된 것을 볼 수 있습니다. 

     

    Include 파라미터 전송

    그러나 Include가 위와 같이 단순하게 구조를 변경하는 것만 있는 것이 아닙니다. 하나의 완성된 페이지를 Include 하고 싶을 때도 있을 겁니다. 그럴때 본문에서 include를 해야 할 페이지에 Parameter를 전송해야 될 수도 있는데 아래와 같이 파라미터를 추가하여 붙일 수 있습니다.

     

    <jsp:include page="페이지주소"> 
    <jsp:param name="변수명" value="변수값" /> 
    ...
    <jsp:param name="변수명" value="변수값" /> 
    </jsp:include>

     

    파라미터를 전송하기 싫은 경우, 해당 페이지에서 직접 파라미터를 받아서 처리를 하는 방법도 있을 겁니다. 이는 누구 방식이 옳다기 보다 개발자의 취향 및 부서/프로젝트 코딩 스타일을 따르면 될 것입니다.

    반응형

    댓글

    Designed by JB FACTORY