관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

JSP 기본 다루기 4 - 지시자의 종류와 속성에 대하여 본문

웹 · 앱 개발/JSP & Servlet

JSP 기본 다루기 4 - 지시자의 종류와 속성에 대하여

huenuri 2024. 8. 27. 07:30

주석문부터 3단원의 나머지 학습을 진행해보겠다.


 

 

 

주석문

프로그램을 작성하다 보면 작성한 문장이 어떤 용도로 기술된 것인지 설명을 부가적으로 기술해야 할 경우가 있다. JSP에서 사용할 수 있는 언어는 HTML, 자바, 자바스크립트 등 다양하기 때문에 제공되는 주석문도 다양하다. HTML 주석문은 !를, JSP 주석문은 % 기호를 붙인다.

HTML 주석문은 웹 컨데이터가 그대로 클라이언트에게 보낸다. 브라우저는 이 부분을 주석으로 처리한다. 반면 JSP 주석문은 브라우저에 보내지 않아 공개되지 않는다.

 

디 둘은 적절하게 사용되어야 한다. JSP 문장에 대한 주석이라면 이를 JSP 주석무으로 처리하는 것이 바람직하다.JSP 문장에 대한 주석 처리를 HTML 주석으로 했다면 클라이언트가 소스 보기를 했을 경우 공개되기 때문에 혼란을 초래할 수 있다.


 

 

 

HTML 주석문과 JSP 주석문의 사용

 

 

 

소스 보기를 했을 때 HTML 주석문은 표시가 되는데 JSP는 나타나지 않는 것을 볼 수 있다. 그리고 스크립트릿 안에도 한줄 주석과 여러 줄 주석을 표시할 수 있다.


 

 

 

지시자

JSP 지시자는 태그 안에서 @로 시작하며 page, include, taglib 3가지 종류가 있다. 지시자는 클라이언트 요청에 의해 JSP 페이지가 실행되면서 지시자에 언급된 설정을 JSP 페이지 전체에서 사용 가능하도록 한다.

<%@ 지시자 속성="값" ... %>

 

 

1. page 지시자

page 지시자는 JSP 페이지에 여러 가지 정보를 나타내기 위해서 사용되는 JSP  문법이다. 이를 위해 다음에 언급되는 다양한 page 지시자에 관련된 속성을 사용해야 한다.

 

 

1) language 속성

<%@ page language="java" %>

 

language 속성으로는 자바만을 기술할 수 있다. 그렇다면 왜 language 속성을 넣었을까? 명확하게 JSP 페이지에서는 자바를 서버 스크립트 언어로 사용한다고 정의하기 위해서이다.


 

 

 

2) extends 속성

JSP 페이지가 특정 클래스로부터 상속을 받으려면 extends 속성에 상위 클래스로 누구를 설정할지 기술해야 한다.

<%@ page extends = "javas.servlet.jsp.HttpJspBase" %>

 

서블릿 클래스로 변환되는 과정에서 상속받을 부모 클래스를 지정하는 속성이다. 기본적으로 서블릿 컨테이너에서 알아서 처리하므로 개발자가 특별히 지정하는 경우는 없다.


 

 

 

3) import 속성

자바 프로그램에서 사용하던 import 구문과 동일한 목적으로 사용한다. 다음은 오늘 날짜를 출력하기 위해 날짜 관련 클래스를 사용하기 위한 예이다.

<%@ page import = "java.util.Calendar" %>

 

 

오늘 날짜 출력하기

 

 

import할 때 일일이 스펠링을 칠 필요가 없었다. 먼저 스크립트릿을 쓰면 자동으로 추가가 된다. 처음에는 이것부터 작성하다가 코드가 저절로 꼬여서 다음 코드부터 작성해보니 잘 되었다.


 

 

 

4) session 속성

이 속성은 true 똑는 false 값으로 세션을 사용할지 말지를 결정하는 속성이다. 기본값으로 true 값으로 설정되어 있어 JSP 페이지에서는 사용할 수 있다. 하지만 세션을 사용하지 않으면 다음과 같이 false 속성을 지정해야 한다.

<%@ page session = "false" %>

 


 

 

 

5) buffer 속성

웹 서버로부터 동영상 서비스를 받기 위해서는 서버로ㅗ부터 데이터를이 출력 스트림을 통해서 제공될 때까지 기다려야 한다. 동영상 파일이 지정된 사이즈만큼 출력 버터에 보내질 때까지 기다렸다가 꽉 차면 출력 스트림을 통해 클라이언트에 전송된다. 데이터의 사이즈가 크면 블록 단위로 나뉘어서 전송된다. 전송할 데이터의 블록 크기를 설정하는 것이 바로 버퍼 사이즈를 설정하는 것이다.

buffer 속성의 기본 값은 8KB로 설정되어 있다.

<%@ page buffer = "none" %>

 

버퍼를 사용하지 않을 경우에는 속성 값을 none으로 설정한다.


 

 

6) autoFlush

flush는 버퍼를 비운다는 의미이다. 버퍼를 비우면 저장되어 있던 데이터가 송신된다. 버퍼는 일반적으로 꽉 차야 비워진다. 하지만 강제로 버퍼를 비우려면 flush를 사용한다.

autoFlush 속성은 기본값이 true로 되어 있으며 이는 버퍼가 꽉 차게 되면 자동으로 버퍼를 비우도록 한다. 만일 autoFlush 속성을 false로 지정하면 버퍼가 꽉 차게 되었을 때 에러가 발생한다.

autoFlush 속성을 false로 지정하려면 buffer 속성을 none으로 지정하지 말아야 한다.

<%@ page autoFlush = "false" %>

 


 

 

7) isThreadSafe 속성

멀티스레드란 하나의 프로그램을 여러 개의 스레드로 처리하는 것을 말한다. 프로세스를 스레드로 처리했을 때 자원을 공유할 수 있으므로 오버헤드를 줄일 수 있는 장점이 있다. JSP는 자바 프로그램의 일종이므로 멀티스레드가 가능하다.

하지만 멀티스레트도 처리할 경우 주의할 점이 있다. 여러 사용자가 동시에 접속하여 동시에 요청했을 때 동시에 스레드가 생성되어 동시에 처리가 일어날 경우 문제가 발생한다.

이러한 경우에는 동기화를 시켜야 한다. 동기화는 하나의 스레드 작업이 완려되어야 다음 스레드가 작업을 시작할 수 있게 해주는 것이다.

isThreadSafe 속성을 true로 설정하면 각각 페이지의 스레드들이 안전하게 동작하 ㄹ수 있다.

<%@ page isThreadSafe = "true" %>

 

 

 

8) info 속성

JSP 페이지에 대한 간략한 설명을 기록하는 용도로 사용된다. 현재 페이지에 대한 정보를 알려주는 역할을 한다. 주로 JSP 문서를 작성한 프로그래머가 페이지 관리를 손쉽게 하기 위해 설정하는 속성이다. 이 속성은 설정하지 않더라도 ㅔ이지 처리에는 아무런 영향을 주지 않는다.

<%@ page info = "JSP 페이지에 대한 정보" %>

 

 

 

9) errorPage 속성

JSP 페이지에서 애러가 발생했을 때 보여줄 에러 페이지를 설정한다.

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

 

 

 

10) isErrorPage 속성

현재 페이지가 에러 페이지인지 아닌지를 설정하기 위한 속성이다. true로 되어 있으면 현재 페이지가 에러 페이지가 되며 exception 객체를 사용하여 예외의 원인을 알 수 있게 된다. 이 속성의 기본값은 false이다.

<%@ page isErrorPage = "true" %>

 

 

 

에러 발생 페이지와 에러 페이지 만들기

고의로 예외를 발생하도록 하는 내용이 있는 코드를 작성한다.

 

 

 

에러 페이지를 작성한다.

 

 

이렇게 에러 페이지가 뜨고 있다.


 

 

 

 

11) contentType 속성

JSP 페이지의 MIME 타입을 결정한다. MIME(Multipurpose Internet Mail Extensions)은 서버가 브라우저에게 "이런 데이터를 보낼 것이다!"라고 헤더에 포함하여 미리 알려주는 역할을 결정한다. MIME 타입을 ㅈㄱ절하게 지정하지 않으면 클라이언트의 브라우저에 데이터가 제대로 보이지 않는다.

웹 서버가 브라우저에 전송할 페이지가 html일 경우에 "text/html"를 MIME 타입으로 지정한다.

<%@ page contentType = "text/html" %>

 

이 속성을 지정하지 않으면 기본적으로 "text/html"로 설정된다. contentType 속성을 지정할 때 charset 속성을 지정할 수 있다. 

<%@ page contentType = "text/html; charset=UTF-8" %>

 

 

 

 

include 지시자

현재 페이지에 다른 HTML 문서나 JSP 페이지의 내용을 삽입할 때 사용한다. include 지시자의 유일한 속성인 file에는 삽입할 파일의 URL을 기술한다.

<%@ include file = "URL" %>

 

JSP 페이지에 include 지시자를 사용하면 서블릿 컨테이너는 file 속성 다음에 기 술한 파일을 JSP 파일 안으로 포함시킨다. 웹 사이트를 구축하다보면 모든 페이지에서 공통적으로 보여주어야 할 부분이 있다. 예를 들어 로고나 페이지 하단에 보이는 저작권 표시 등이다.

<%@ include file = "footer.jsp" %>

 

 

 

include 지시자 사용법 알아보기

저작권 관련 내용이 있는 코드를 작성한다.

 

 

 

메인 페이지를 작성한다.

 

 

서브 페이지를 작성한다.

 

 

 

 

프론트에서 서브로 잘 이동되고 있다.

 


 

 

 

 

학습을 마치고

굉장히 길었지만 중간에 자르기 그래서 모든 내용을 담아보았다. 여기까지 3장을 모두 마쳤다. 이제 퀴즈 문제를 풀면서 단원을 정리해보려고 한다.