본문 바로가기

JSP

JSP의 Script Tag

지시자 태그

Web Container가 JSP를 Servlet으로 변환할 때 특정 지시를 내리기 위해 사용하는 태그이다


일반적인 프로그램 언어와는 달리 태그 형식을 이용하여 JSP 페이지에 대한 속성 또는 특별한 지시 사항을 지정하는 태그이다


<%@ 지시어 속성='값'[속성="값",..] %>



▶지시어
  • page : JSP 페이지에 대한 속성, 기능, 특징을 지시
  • include : JSP 페이지에 다른 페이지를 포함시킬 것을 지시. 태그 부분에 지정한 페이지를 정적으로 삽입
  • taglib : JSP 페이지에서 사용할 custom tab 라이브러리 등록을 지시. 새로운 태그를 정의하여 사용



▷page 지시자

페이징 관련된 기능 환경을 정의하는 지시어이다


page 전체에 영향을 미치는 중요한 특성을 지정하고 하나의 JSP 파일에서 여러 개의 page 지시자의 사용은 가능하나,
동일한 특성이 여러번 나와서는 안된다(import는 예외)

■형식

<%@ page 속성1="값" 속성2="값" 속성3="값" ... %>



<%@ page language="java"
  extends=""
  import=""
  session="true"
  buffer="8kb"
  autoFlush="true"
  toThreadSafe="true"
  info=""
  errorPage=""
  isErrorPage="false"
  contentType="text/html:charset=ISO-8859-1"
%>




■속성

  • language : JSP 에서 사용되는 스크립트 언어를 지정하는 속성으로 디폴트값은 "JAVA"이다

형식 : <%@ page language="java" %>




  • extends : JSP 페이지로부터 생성되는 Servlet 클래스의 슈퍼 클래스이다
    JSP 파일은 서블릿 파일로 변환되고 서블릿 파일이 컴파일되기 때문에 자바의 상속 개념을 그대로 사용할 수 있다
    하지만 서버에 부담을 주기 때문에 잘 사용되지 않는다

형식 : <%@ page extends="확장할 클래스명" %>




  • import : 스크립트 요소 안에서 사용할 자바 클래스와 인터페이스를 임포트 하기 위해 사용하는 속성이다
    일반적인 자바 클래스의 import의 개념이고, import대상 패키지 또는 클래스가 여러 개인 경우 콤마(,)로 구분하여 기술한다
    기본적으로 import 되는것은 java.lang., javax.servlet., javax.servlet.http., javax.servlet.jsp. 패키지 등이다

형식 : <%@ page import="java.util.*" %>




  • session : JSP 페이지의 세션 참여 여부를 정한다
    웹 서버에 여러 명의 클라이언트가 접속해서 사용하게 되는데 그때 클라이언트를 구분할 수 있는 단위가 세션이다
    디폴트 값은 "true"이다

형식 : <%@ page session="false" %>




  • buffer : 출력 버퍼의 크기를 정한다
    클라이언트 출력 스트림에 쓰일 버퍼링 방식을 지정하며,
    "none"을 쓰면 버퍼링을 사용하지 않고 PrintWriter에 의해서 SeveletResponse에 직접 전달된다
    디폴트값은 "8KB"이다

형식 : <%@ page buffer="8KB" %>




  • autoFlush : 출력 버퍼가 자기 사이즈만큼 꽉 차게되면 자동으로 지울지 여부를 지정하는 속성이다
    디폴트 값은 "true"로 설정되어 있으며, 출력 버퍼가 꽉 차게 되면 자동적으로 버퍼가 비워진다
    "false"인 경우 출력 버퍼가 꽉 차게되면 overflow를 발생(예외 발생)하게 된다

    또한 buffer속성을 "none"으로 한 경우 autoFlush="false"로 설정할 수 없다

형식 : <%@ page autoFlush="true" %>




  • isThreadSafe : JSP 페이지가 Single-Thread 모드로 작동하도록 만들기 위해 필요한 속성이다

형식 : <%@ page isThreadSafe="true" %>




  • info : 페이지에 대한 간략한 정보를 지정하는곳이며 JSP 엔진에 의해서 참조 되어진다
    내용이나 길이의 제한은 없으며 제작자 이름, 버전, 저작권 정보등이 포함된다

형식 : <%@ page info="페이지 정보" %>




  • errorPage : 에러를 처리할 JSP 페이지의 URL를 지정한다(JSP 페이지에서 에러가 발생했을 때 보여줄 페이지를 지정한다)
    점검되지 않은 RunTime에러가 발생 시 호출될 에러 page의 URL을 기술한다
    에러 페이지와 에러를 발생시킨 페이지는 같은 서버에 존재해야한다
    에러 페이지는 클라이언트로 아무것도 넘어가지 않은 상태에서 Exception이 발생했을 때 가능하다

형식 : <%@ page error="../에러처리페이지" %>




  • isErrorPage : 에러를 처리하는 JSP 페이지인지 여부를 지정한다
    값이 "true"로 설정되어 있다면 현재 JSP페이지는 에러 메세지를 보여주는 에러 페이지가 된다

형식 : <%@ page isErrorPage="true" %>




  • contentType : JSP 페이지가 생성하는 문서의 종류와 그 문서를 웹 브라우저로 전송할 때 사용되는 인코딩 타입을 지정한다
    JSP에서 대부분 "text/html"로 설정되어 있다. contentType을 지정할 때 charset속성을 지정할수 있는데
    charset속성은 문자코드방식을 결정하는 것으로 한글 출력문제를 해결하기 위해 설정한다

형식 : <%@ page contentType ="text/html; charset=euc-kr" %>

 

▷include 지시자

JSP의 현재 페이지에 다른 파일(html, JSP)을 포함시키고자할 때 사용한다



■형식

<%@ include file="filename(절대경로/상대경로)" %>

 

포함된 파일은 JSP 자체와 동일한 방식으로 JSP 엔진에 의해 해석되는데, JSP 엔진은 서블릿 코드를 생성할 때
include되는 페이지의 텍스트나 코드를 현재 페이지 안으로 포함시켜서 하나의 JSP를 생성해 낸다


이는 변환 시점에 한번만 일어난다(실행 시점에 파일을 포함시킬려면 include 액션을 이용)
JSP 컨테이너는 이들 파일의 변화를 감시하고 파일이 변경되면 JSP를 다시 컴파일 한다





▷taglib 지시자

JSP 기능을 확장할 때 사용하는 사용자 정의 태그의 집합이다


JSP 태그(Action Tag)가 지원하지 못하는 부분을 사용자가 직접 작성하여 그 태그를 불러다 사용하겠다는 것이다

■형식

<%@ taglib uri="태그 라이브러리가 있는 주소" prefix="태그 라이브러리를 나타내는 이름" %>

prefix가 "mytag"라고 지정되었다면 JSP 안에서 <mytag:tagname .../> 를 만나면
URI에 지정된 태그 라이브러리 서술자를 참조하여 해당 태그를 처리한다
위의 두가지 요소를 지정하지 않으면 오류가 발생한다







선언자 태그

JSP가 서블릿으로 변환될 때 서블릿의 멤버 변수(Field)나 멤버 메소드를 선언할 때 사용




<%! 선언문 %>



=> jspInit(), jspDestory() 오버라이딩 시 사용
=> _jspService()는 오버라이딩해서는 안된다(WC가 자동 오버라이딩)






표현식 태그

응답 Stream을 통해 출력하기 위한 태그이다




<%= 출력 내용 %>




ex)

<%= "안녕하세요" %> => out.println("안녕하세요");

<%= "안녕하세요"; %>는 쓸 수 없다 => out.println("안녕하세요";);

<% int i = 0; %> <%= i %>

 

서블릿으로 변환 시 out.print(출력 내용);으로 변환된다

out.println()을 해도 개행이 이루어지지 않고, out.print()를 한 것과 마찬가지인 결과가 나온다
그래서 개행을 하고 싶다면 둘 중 무엇을 사용하든 "<br>" 태그를 입력해야 한다

 

jsp를 실행하고 웹 페이지 검사를 해보면 개행은 됐지만 html 코드 안에서 개행을 해봤자
화면 출력에서는 한 줄로 출력이되기 때문에 <br> 태그를 입력해야하는 것이다






스크립트릿 태그

클라이언트의 요청에 대해 서비스하는 동적 코드(java 실행 구문)을 작성하기 위한 태그이다


태그 내의 코드는 서블릿으로 변환 시 _jspService()의 로컬 코드로 삽입된다
이 곳에서는 자바에서 main 메서드에 기술하는 것들을 작성한다(if문이나 try~catch문 등)


<% java 코드 %>




ex)

<% if(i>10) { %>  => java 코드

 10보다 큽니다   => html

<% } %>      => java 코드

    ||
   ▼



_jspService() {
  if(i>10) {
    out.println(""0보다 큽니다");
  }
}



<% int i = 0; %> //모든 변수는 선언한 다음에 사용할 수 있다. 이 변수 선언문을 밑으로 내리면 에러가 발생한다
[지역 변수] i = <%= ++i %> //<% %>안에 선언하면 메소드 안에 만들어지는 지역 변수이다



<%! int memi = 0; %> //<%! %>로 선언된 변수는 클래스 안에 만들어지는 멤버 변수이다
[멤버 변수] memi = <%= ++memi %> //선언문보다 먼저 작성하여도 오류가 나지 않는다







주석

-JSP에서의 주석

  • html 주석 : <!-- 주석 내용 -->
  • jsp 주석 : <%-- 주석 내용 --%>
  • java 주석 : //, /* 주석 내용 */   =>   스크립트릿, 선언자 태그에서 사용 가능

html 주석 은 웹 브라우저의 [소스 보기]에서 보이지만,
JSP 주석 <%-- --%>은 웹 브라우저의 [소스 보기]에서 보이지 않는다



표현식 태그, 주석 태그, 지시자 태그는 끝에 세미콜론(;)을 붙이지 않고,
선언자 태그와 스크립트릿 태그는 세미콜론을 붙인다

'JSP' 카테고리의 다른 글

forward 액션 태그와 include 액션 태그  (0) 2020.06.30
JSP의 Action Tag  (0) 2020.06.29
JSP의 request와 response  (0) 2020.06.28
JSP의 내장 객체  (0) 2020.06.28
JSP와 Servlet이란?  (0) 2020.06.23