본문 바로가기
웹 프로그래밍(풀스택-->java)/웹프로그래밍(백엔드-->java)

2. JSP 페이지 디렉티브

by 백엔드개발자0107 2021. 10. 19.

[page 디렉티브(Directive)]

 

page디렉티브라는건 jsp페이지에 대한 정보를 정의할때 사용합니다. 생성되는 jsp문서의 타입이나 언어, import할 클래스, 세션의 사용여부등... JSP페이지를 구성하는 필요한 설정정보를 지정하는데 사용되는 디렉티브입니다.

 

 <%@ page session="true" %>

--> jsp페이지를 구성하는 요소를 같다가 페이지디렉티브 라고 한다.

      

 

 

 

1. info 속성

 

info속성은 해당 JSP페이지의 타이틀같은 개념입니다. 이페이지가 무슨 페이지인지 설명등을 넣을수 있죠.

 

 <%@ page info="이 페이지는 각종 데이터를 처리하는 페이지입니다" %>


 <%=getServletInfo() %>// 페이지 info정보를 출력

 

 

getServletInfo()함수를 호출하게 되면 리턴값으로 위에 굵은 글씨로 표시된(""는 뺴고)부분이 화면에 나타납니다. 막상 실제로는 쓸데가 거의 없기 때문에 이런게 있구나 하고 알아만 둡시다.

 

 

2. language 속성

 

language속성은 스크립트에서 사용할 프로그래밍 언어를 지정하는 속성입니다. 기본적으로 java가 설정되어 있기 때문에 따로 만질 필요는 없습니다.

 

 <%@ page language="java" %>

 

 

3. contentType 속성

 

contentType속성은 JSP내용이 어떠한 타입의 문서로 생성되는지를 지정하는 속성입니다. 사용자의 요청에 따른 응답결과가 어떠한 타입으로 출력되는지를 지정할수 있습니다.

 

 <%@ page contentType="text/html charset=euc-kr" %>
 <%@ page contentType="text/plain" %>

 

contentType에 들어갈 속성값은 text/plain, text/xml등이 들어가며, text/html이 기본값이라 따로 지정하지 않아도 별 상관은 없습니다. 뒤에 "charset=euc-kr"이부분은 페이지에 한글이 있을경우 반드시 써야 합니다. 아니면 한글이 이상한 문자로 출력되는걸 볼수 있습니다.

 

 

4. extends 속성

 

사실 extends는 사용될일이 없다고 봐도 무방합니다. JSP페이지가 상속받을 클래스를 설정해주는건데 JSP컨테이너라는 애가 알아서 다 해주기 때문에 사실상 없는 속성이라 봐도 됩니다.

 

 <%@ page extends="com.my.SampleClass" %>

 

 

5. import 속성

 

import는 JAVA처럼 다른 클래스를 가져와 사용하고 싶을때 쓰는 속성입니다. import속성은 다른 속성들과 다르게 여러번 쓸수 있습니다.

 

 <%@ page import="java.util.Date" %>
 <%@ page import="java.io.*" %>

 

이클립스같은 툴을 사용하는경우 자동완성기능을 통해 따로 import를 쓸 필요는 없습니다.

 

 

6. session 속성

 

 <%@ page session="true" %>
 <%@ page session="false" %>

 

HttpSession을 사용할지의 여부를 선택하는 속성입니다. true일경우 세션을 유지한다는것이고, false의 경우 세션을 유지하지 않고 끝냅니다.

--> jsp의 내장 객체(자동으로사용돠어지는 기능?정도)로써 화면, 페이지가 바뀌어도 정보를 유지시키고 싶을 떄 사용하는 것이 세션이다.

       모든 페이지에 세션을 적용시킬수 있다. 간혹 일정시간이 지나면 세션을 끊어 버리는 경우가 있다.

        대부분은 session을 True로 놓는다.

        

 

 

 

7. buffer 속성

 

buffer속성은 JSP페이지 출력버퍼의 크기를 지정하는 속성입니다. 기본값이 8kb로 지정되어 있고요. none을 사용해 출력버퍼를 사용하지 않는 방법도 있습니다.

 

 <%@ page buffer="none" %>

 

참고로 8kb면 약 8000개의 글자를 담을수 있는 버퍼가 만들어집니다.

--> 버퍼란, 버퍼라는 메모리 저장공간에 일정양의 동영상메모리를 저장시켜놓는다.

        네트워크와 관련한 문제를 대비해서 준비해 놓는다.

        8kb가 다 안차도 자동으로 메모리를 내보내라 라는 것이 autoFlush이다.

 

8. autoFlush 속성

 

autoFlush는 출력버퍼가 다 찰경우 어떻게 할것인지를 지정하는 속성입니다.

 

 <%@ page autoFlush="true" %> // 기본값


 <%@ page autoFlush="false" %>
 out.flush();

 

false로 지정하는경우 수동으로 비워줘야 하는데, out.flush()가 출력 버퍼를 비우는 함수입니다.

 

 

9. isThreadSafe 속성

 

다중 쓰레드를 사용할 수 있는지를 묻는 속성입니다.

 

 <%@ page isThreadSafe="false" %>

 

기본값으로는 true로 지정되어 있습니다.

 

 

10. errorPage 속성

 

Tomcat 6 이상부터는 지원조차 하지 않는 속성입니다. 해당 페이지에서 예외를 처리할 페이지를 지정할때 사용됩니다.

 

 <%@ page errorPage="exceptionPro.jsp"%>

 

6 이상부턴 web.xml파일에서 예외처리를 해야 합니다

 

--> errorPage는 만약에 이 jsp 페이지에서 에러가 발생한다면, 해당하는 이 errorPage를 실행하시오를 의미한다.

       

 

 

 

11. isErrorPage 속성

 

역시 현재에는 사용되지 않는 속성이죠. 이페이지가 예외처리 페이지인지를 정하는 속성입니다. 기본값으로는 false

 

 <%@ page isErrorPage="true" %>

--> isErrorPage 는 현재 페이지가 에러가 발생할때 <%@ page errorPage="exceptionPro.jsp"%> 에서 나타난 에러 페이지가 보여지게끔 하는게 isErrorPage이다. 그러니 isErrorPage를 true로 만들어야 한다.

<%@ page isErrorPage="true" %> 고로 위 errorPage와 isErrorPage를 같이 쓴다.

 

 

 

 

 

12. pageEncoding 속성

 

페이지의 인코딩을 설정해줍니다. 3번의 contentType="euc-kr"대신에 쓸수도 있습니다.

 

 <%@ page pageEncoding="euc-kr" %>