본문 바로가기

Languages/JSP

JSP - JSP 태그 [기초문법], 액션

JSP 기본 태그 및 지시어


  • JSP태그 : 모든 태그는 대소문자를 구별하며, 주석, 지시어, 스크립트 요소, 액션을 알아봅니다.
  • 주석
    • 주석이란, 코드를 설명하는 글을 남겨 놓아 후에 디버깅 혹은 다른 개발자가 그 코드를 읽고자 할 때 가이드의 역할을 할 수 있도록 남겨 놓는 글을 말합니다.
    • HTML의 주석 <!-- -->
      • HTML을 안다면 알겠지만, 이것은 HTML 이나, XML에서 주석으로 사용하는 태그입니다.
      • 이러한 내용은 클라이언트에게도 전송되며, 추후 웹 브라우저에서 소스보기를 통하여 확인할 수 있습니다.
      • [방법] <!-- -->, <!-- 주석 <%= 표형식 %> -->

    • JSP의 주석 <%-- --%>
      • 이 방식은 숨겨진 주석(Hiddeng Comment)으로 클라이언트로 전송되지 않으며, 오로지 개발자 만이 읽을 수 있습니다. 또한, 컴파일 과정에서도 주석 부분은 컴파일을 하지 않습니다.

    • 자바 스타일의 주석 // , /* */
      • // 는 한줄 단위의 주석이고,
      • /* */ 는 여러줄에 가능한 주석입니다. 일반적으로는 이 형식을 추천합니다.

  • JSP 지시어
    • JSP 지시어(Directives)는 클라이언트로 전송되는 응답에 직접적인 영향을 미치진 않지만, JSP페이지 내에서 컨테이너에게 해당 페이지를 어떻게 처리할 것인지에 대한 것을 기술하는 것입니다.
    • page 지시어
      • <%@ page 속성1 = "값1" 속성2= "값2" ..... %>
        • 이것은 JSP 페이지에서 한 페이지에 하나만 나타나야하며, 두 개 이상 작성할 수 없습니다. (단, import 의 경우에는 여러줄에 걸쳐서 작성할 수 있습니다.)
      • [주요 속성]

  • include 지시어

    • 해당 JSP 파일에 지정된 파일을 삽입하도록 하는 지시어입니다. 이때 삽입되는 대상은 로컬상의 JSP파일 혹은 HTML파일 둘다 가능합니다.

    • <%-- includeTest.jsp --%>

      ...

    • <%@include file = "header.jsp" %>

      ...
    • <%@ include file = "footer.html" %>
      ...
    • includeTest.jsp 파일은 헤더와 푸터부분을 include 지시어를 사용하여 각각 JSP와 HTML 문서를 삽입시키고 있습니다.
  • taglib 지시어
    • 태그라이브러리라고 합니다. 이것은 기본적은 JSP의 내장 기능을 확장하기 위한 커스텀 태그들의 집합을 말하는데, taglib 지시어는 해당 페이지가 해당 에플리케이션에 필요한 기능을 구현한 커스텀 태그를 사용한다고 JSP 컨테이너에게 알려주는 역할을 합니다.
      • 이 지시어는 URI 속성에 태그 라이브러리에서 정의한 태그와 속성을 담고 있는 TLD(Tag Library Descriptor)파일이 존재하는 URI를 지정합니다. prefix 속성에는 사용할 커스텀 태그들의 네임 스페이스를 지정합니다.
    • TLD(Tag Library Descriptor). 이것은 JSP페이지 컴파일 서블릿이 JSP파일에 대한 서블릿 코드 생성시 해당 페이지에서 사용하고 있는 커스텀 태그가 유효한 것인지를 JSP 컨테이너가 일차적으로 검증하는 데 사용되는 XML문서라고 알아두면 됩니다. 그리고, 네임 스페이스란, 특정 변수나 속성이 알려지는 영역이나 범위를 지정하는 데 사용하는 용어입니다.
      [형식] : <%@ taglib uri = "/yangtags" prefix = "tagPrefix" %>
    • 위와 같은 taglib 지시어를 지정한 .jsp 파일에서는 /yangtags가 가르키는 URI의 TLD를 통해 지정된 커스텀 태그를 tagPrefix 라는 네임스페이스로 접근하여 사용가능합니다.

JSP 액션 : 동적인 페이지가 됩니다. include 할 때마다 달라집니다.


▶웹 페이지간의 흐름을 제어합니다.

  • forward 액션
    • 현재 페이지의 요청 처리 제어권을 완전히 넘겨주는 것이기 때문에, 이전까지의 모든 출력 버퍼 내용이 무시되고, 지정된 uriPath가 요청을 처리하여 응답하고 나면, 원래 페이지로 제어권이 넘어가지 않습니는다.
    • 즉, forward 액션을 통해 요청 처리 제어권이 넘겨진다는 것은 원래 페이지의 request가 그대로 넘겨진다는 뜻입니다.
    • 다시 말하면, 원래 페이지의 내장 객체 request에 지정된 속성은 forward된 JSP나 서블릿에서도 그대로 유효합니다.
    • include 액션과 유사하지만 현재 페이지의 제어권을 완전히다른 페이지로 전달합니다.
    • 브라우저 URL에는 최종 전달된 파일명이 보이는 것이 아니라최초 호출한 파일명이 보이게 됩니다.
    • 기본 형식
      • <jsp:forward page=”포워딩할 파일명” />
    • 사용 예
      •  include_action.jsp
        09 <jsp:forward page="footer2.jsp">
        10 <jsp:param name="email" value="test@test.net" />
        11 <jsp:param name="tel" value="000-000-0000" />
        12 </jsp:include>
      •  footer2.jsp
        08 <%= request.getParameter("email") %>
  • include 액션
    • include 지시어와 유사하게 다른 페이지를 import 합니다.
    • include 지시어와의 차이점
      • 실행 시점에 해당 파일을 호출하고 결과를 포함시킴.
      • 파라미터를 전달할 수 있음.
      • 즉. 포함되는 페이지가 변경되면, import 한 페이지에서도 변경되어 보여집니다.
    • 기본 형식
      • <jsp:include page=”포함할 파일명” />
    • 사용 예
      • include_action.jsp
        10 <jsp:include page="footer2.jsp">
        11 <jsp:param name="email" value="test@test.net" />
        12 <jsp:param name="tel" value="000-000-0000" />
        </jsp:include>
      • footer2.jsp
        08 <%= request.getParameter("email") %>
  • <jsp:param/>태그
    • <jsp:forward/> 혹은 <jsp:include/>를 사용하여 요청을 처리할 제어권을 영구적 혹은 임시로 지정된 uriPath 로 넘겨줄 수 있다고 했는데요, 이렇게 되면, forward된 파일이나 include 된 파일에서는 원래 페이지의 request 객체를 그대로 전달받게 됩니다. 만약 원래 페이지에 클라이언트 요청시에 전달받은 파라미터가 있었다고 한다면, forward 된 파일이나 include 된 JSP파일에서도 이를 request.getParameter("paramName")을 통해 얻을 수 있습니다.
  • useBean 액션
    • 컴포넌트를 기반으로 한 프리젠테이션 로직과 애플리케이션 로직의 분리는 JSP가 갖는 장점 중에서도 중요한 부분을 차지합니다.
    • useBean 액션은 서버에 존재하는 자바 빈즈 컴포넌트(EJB와는 다릅니다)와 통신을 하기 위한 기능을 구현한 내장 액션이라고 할 수 있습니다.
    • [기본 형식]
      • <jsp:useBean id = "..." class="..." scope="..."/>
      • <jsp:useBean ...> ... ...
        </jsp:useBean>
      • <jsp:useBean id=”변수명” class=”빈즈클래스명” />
        <jsp:getProperty name=”변수명” property=”속성명” />
        <jsp:setProperty name=”변수명” property=”속성명” />
    • 사용 예
      • <jsp:useBean id="StdBean" class="net.member.db" scope="session"/>
    • useBean 액션은 서버측에 존재하는 자바 빈즈 컴포넌트 객체를 생성하거나 이미 생성된 객체에 대한 인스턴스를 얻기 위해 사용됩니다.