contents
PART 02 JSP 기본문법
chapter 02 스크립트 태그: 시작 페이지 만들기
03.스크립틀릿 태그
04.표현문 태그
05.북마켓 시작 페이지 만들기
chapter 03 디렉티브 태그: 한글 출력 및 페이지 모듈화하기
01.디렉티브 태그의 개요
02.page 디렉티브 태그
03.include 디렉티브 태그
-----------------------------------------------------------
PART 02 JSP 기본문법
chapter 02 스크립트 태그: 시작 페이지 만들기
03.스크립틀릿 태그
-스크립틀릿 태그(scriptlet tag)는 자바 코드로 이루어진 로직 부분을 표현하며, 다음과 같은 형식으로 out 객체를 사용하지 않고도 쉽게 HTML 응답을 만들어낼 수 있음. 스크립틀릿 태그는 가장 일반적으로 사용되며 변수 또는 메소드 호출, 유효식 등 다수를 포함할 수 있음. 모든 텍스트, HTML 태그, 또는 JSP 요소는 스크립틀릿 태그 외부에 있어야 함
<% 자바 코드; %>--------------------------------------------------------------------- 각 행이 세미콜론으로 끝나야 함 |
main( ) { int count = 0; System.out.println( ); } |
*<% --- %> = main( ) 함수
-스크립틀릿 태그에 작성된 자바 코드는 서블릿 프로그램으로 변환 될 때 _jspService() 메소드 내부에 복사됨. 각 클라이언트의 요청에 대해 _jspService() 메소드가 호출되므로 이 메소드의 내부 코드가 클라이언트의 요청마다 실행되어야 하기 때문임. 그리고 _jspService() 메소드 내부에 복사되므로 지역변수가 되어 이 태그에 선언된 변수는 스크립틀릿 태그 내에서만 사용할 수 있음
-스크립틀릿 태그 내의 마지막 행은 반드시 세미콜론으로 종료해야 함
선언문 태그 | 스크립틀릿 태그 |
-변수뿐만 아니라 메소드를 선언할 수 있음 -클래스의 자식: 전역변수, 함수 |
-스크립틀릿 태그는 메소드 없이 변수만을 선언할 수 있음 -메인 함수안의 코드(함수 안에 함수 못 만듬) |
서블릿 프로그램으로 변환될 때 _jspService() 메소드 외부에 배치됨 | 서블릿 프로그램으로 변환될 때 _jspService() 메소드 내부에 배치됨 |
예제2-4.스크립틀릿 태그에 지역변수 사용하기
JSPBook/src/main/webapp/ch02/scriptlet01.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Scripting Tag</title> </head> <body> <% int a = 2; int b = 3; int sum = a + b; out.println("2 + 3 = " + sum); %> </body> </html> |
실행 결과
![]() |
예제2-5.스클립틀릿 태그에 0부터 10까지 짝수 출력하기
JSPBook/src/main/webapp/ch02/scriptlet02.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Scripting Tag</title> </head> <body> <% for(int i = 0; i <= 10; i++){ if(i % 2 == 0) out.println(i + "<br>"); } %> </body> </html> |
실행 결과
![]() |
04.표현문 태그
-표현문 태그(expression tag)는 다음과 같이 <%=와 %>를 사용하여 웹 브라우저에 출력할 부분을 표현함. 표현문 태그를 이용하여 선언문 태그 또는 스클립틀릿 태그에서 선언된 변수나 메소드의 반환 값을 외부로 출력 할 수 있음. 표현문 태그는 스클립틀릿 태그에서 사용할 수 없으므로 이 경우에는 out.println() 메소드를 사용해야 함
*변수, 함수 호출
표현문 안: <%= 데이터 %>,
cf)out.ptintln(데이터) 밖에 못들어감
<%= 자바 코드 %> ------------------------------------------------------ 각 행을 세미콜론으로 종료할 수 없음 |
-표현문 태그에 숫자, 문자, 불린(boolean) 등의 기본 데이터 타입과 자바 객체 타입도 사용 가능함. 그리고 표현문 태그에 작성된 모든 자바 코드의 값은 문자열로 변환되어 웹 브라우저에 출력됨. 기본 데이터 타입은 toString()을 통해 출력되고, 자바 객체 타입은 java.lang.Object 클래스의 toString() 메소드를 사용하거나 자체에서 선언한 toString()을 사용하여 출력됨
예제2-6.표현문 태그로 현재 날짜 출력하기
JSPBook/src/main/webapp/ch02/expression01.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <P> Today's date: <%= new java.util.Date() %></P> </body> </html> |
실행 결과
![]() |
*new: 객체를 출력하면 @1234와 같은 주소가 출력되어야 하지만 클래스 안에 아래와 같은 함수가 주소 대신 문자열을 반환
String toString(){ return "특정문자열"; } |
예제2-7.표현문 태그로 연산 결과 출력하기
JSPBook/src/main/webapp/ch02/expression02.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% int a = 10; int b = 20; int c = 30; %> <%= a + b + c %> </body> </html> |
실행 결과
![]() |
05.북마켓 시작 페이지 만들기
-JSP 스크립트 태그를 적용하여 북마켓의 시작 페이지를 만듬. 그리고 JSP 페이지를 웹 브라우저에 표현하기 위해 부트스트랩 프레임워크에서 제공하는 스타일시트를 적용하여 출력함
-부트스트랩은 웹 디자인을 쉽게하기 위해 몇 가지 CSS의 클래스 선택자와 정의된 스타일시트, 자바스크립트 플러그인을 모아놓은 강력한 프론트엔드 프레임워크임. 즉 부트스트랩은 반응형이며 모바일 우선인 웹 프로젝트를 개발할 때 가장 인기 있는 HTML, CSS, JS프레임워크임. 트위터 내부에서 개발하던 라이브러리로 각종 UI 컴포넌트를 모아놓은 종합 선물 세트라 할 수 있는 부트스트랩을 이용하면 간단한 스크립트와 CSS/HTML만으로 깔끔한 형태의 UI/UX를 구성할 수 있음. 디자인에 익숙하지 않은 개발자가 데모 또는 프로토타입을 만드는 데 매우 유용하며, 구현하기 까다로운 여러 Javascript action도 간단하게 라이브러리로 제공하므로 쉽게 사용할 수 있음
*JSP 파일에 부트스트랩을 적용하여 프로젝트의 실행 결과를 확인하려면 실행 브라우저를 크롬으로 꼭 변경해야함
*사용법
1.다운로드
2.CDN 링크: <head>안 에는 css link, <body>안에는 js script link 넣어줌
bootstrap 5.3(https://getbootstrap.com/docs/5.3/getting-started/introduction/)
Get started with Bootstrap
Bootstrap is a powerful, feature-packed frontend toolkit. Build anything—from prototype to production—in minutes.
getbootstrap.com
예제2-8.북마켓 시작 페이지 만들기
1)시작 페이지 작성하기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Welcome</title> </head> <body> <%! String greeting = "Welcome to Book Shopping Mall"; String tagline = "Welcome to Web Market!"; %> <h1><%= greeting %></h1> <h3><%= tagline %></h3> </body> </html> |
2)부트스트랩 CSS 적용하기: 태그 안에 class 작성하기
BookMarket/src/main/webapp/welcom.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Welcome</title> <script src="https://kit.fontawesome.com/fa848000d2.js" crossorigin="anonymous"></script> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <%! String greeting = "Welcome to Book Shopping Mall"; String tagline = "Welcome to Web Market!"; %> <div class="container py-4"> <header class="pb-3 mb-4 border-bottom"> <a> <svg><i class="fa-solid fa-house"></i></svg> <span class = "fs-4">Home</span> </a> </header> <div class="p-5 mb-4 bg-body-tertiary rounded-3"> <div class="container-fluid py-5"> <h1 class="display-5 fw-bold"><%= greeting %></h1> <p class="col-md-8 fs-4">BookMarket</p> </div> </div> <div class="row align-items-md-stretch text-center"> <div class="col-md-12"> <div class="h-100 p-5"> <h3><%= tagline %></h3> </div> </div> </div> <footer class="pt-3 mt-4 text-body-secondary border-top"> © BookMarket </footer> </div> </body> </html> |
*<head>안에 폰트어썸<script>/부트스트랩<link>
실행 결과
![]() |
chapter 03 디렉티브 태그: 한글 출력 및 페이지 모듈화하기
01.디렉티브 태그의 개요
-디렉티브 태그(directive tag)는 JSP 페이지를 어떻게 처리할 것인지를 설정하는 태그임. 디렉티브 태그는 JSP 페이지가 서블릿 프로그램에서 서블릿 클래스로 변환할 때 JSP 페이지와 관련된 정보를 JSP 컨테이너에 지시하는지시하는 메시지임. 따라서 디렉티브 태그는 JSP 페이지를 수정하여 다시 컴파일하는 경우에만 역할을 수행하기 때문에 개별 HTML 응답에 특별한 영향을 미치지 않음
◎디렉티브 태그의 종류
디렉티브 태그 | 형식 | 설명 |
page | <%@ page ··· %> | JSP 페이지에 대한 정보를 설정함 |
include | <%@ include ··· %> | JSP 페이지의 특정 영역에 다른 문서를 포함함 |
taglib | <%@ taglib ··· %> | JSP 페이지에서 사용할 태그 라이브러리를 설정함 |
02.page 디렉티브 태그
-page 디렉티브 태그는 현재 JSP 페이지에 대한 정보를 설정하는 태그로 형식은 다음과 같음. page 디렉티브 태그는 JSP 페이지가 생성할 콘텐츠 유형의 문서, 사용할 자바 클래스, 오류 페이지 설정, 세션 사용 여부, 출력 버퍼의 존재 유무 등과 같이 JSP 컨테이너가 JSP 페이지를 실행하는 데 필요한 정보를 설정할 수 있음. page 디렉티브 태그는 JSP 페이지의 어디에서든 선언할 수 있지만 일반적으로 JSP 페이지의 최상단에 선언하는 것은 권장함
<%@ page 속성1="값1" [속성2="값" ··· ] %> <%와 @ 사이에 공백이 없어야 함 |
◎page 디렉티브 태그의 속성
속성 | 설명 | 기본값 |
language | 현재 JSP 페이지가 사용할 프로그래밍 언어를 설정함 | java |
contentType | 현재 JSP 페이지가 생성할 문서의 콘텐츠 유형을 설정함 | text/html |
pageEncoding | 현재 JSP 페이지의 문자 인코딩을 설정함 | ISO-8859-1 |
import | 현재 JSP 페이지가 사용할 자바 클래스를 설정함 | |
session | 현재 JSP 페이지의 세션 사용 여부를 설정함 | true |
buffer | 현재 JSP 페이지의 출력 버퍼 크기를 설정함 | 8KB |
autoFlush | 출력 버퍼의 동작 제어를 설정함 | true |
isThreadSafe | 현재 JSP 페이지의 멀티스레드 허용 여부를 설정함 | true |
info | 현재 JSP 페이지에 대한 설명을 설정함 | |
errorPage | 현재 JSP 페이지에 오류가 발생했을 떄 보여줄 오류 페이지를 설정함 | |
isErrorPage | 현재 JSP 페이지가 오류 페이지인지 여부를 설정함 | false |
isELIgnored | 현재 JSP 페이지의 표현 언어(EL) 지원 여부를 설정함 | false |
isScriptingEnabled | 현재 JSP 페이지의 스크립트 태그 사용 여부를 설정함 |
-하나의 page 디렉티브 태그에 하나 또는 여러 개의 속성을 설정할 수 있음. 또는 여러 개의 속성마다 개별적으로 page 디렉티브 태그를 선언할 수 있음. 그리고 import 속성을 제외한 속성은 JSP 페이지에 한 번씩만 설정할 수 있음
1)language 속성
-language 속성은 현재 JSP 페이지에서 사용할 프로그래밍 언어를 설정하는데 사용함. 기본값은 java이지만 향후 JSP 컨테이너가 자바 이외의 언어를 지원할 수 있도록 하기 위한 속성임. 다음은 JSP 페이지가 사용할 프로그래밍 언어로 자바를 설정한 예임. JSP 페이지는 자체적으로 자바 언어를 지원하므로 이를 생략할 수 있음
[language 사용 속성 예: 자바 프로그래밍 언어 설정]
<%@ page language = "java" %> |
2)contentType 속성
-contentType 속성은 현재 JSP 페이지의 콘텐츠 유형(MIME-type)을 설정하는 데 사용함. 콘텐츠 유형은 주로 text/html, text/xml, text/plain 등이며, 기본값은 text/html 로 HTML을 출력하는 JSP 페이지는 contentType을 사용할 필요가 없음. 다음은 JSP 페이지가 생성할 문서의 콘텐츠 유형으로 text/html을 설정하는 예임
<%@ page contentType="text/html" %> |
-또한 contentType 속성은 문자열 세트(charset)를 설정하여 JSP 페이지의 전체 문자열을 변경할 수 있음. 다음은 응답 JSP 페이지의 문자열 세트로 utf-8을 사용하도록 설정하는 예임
[page contentType 속성 사용 예: utf-8 문자열 세트]
<%@ page contentType="text/html; charset=utf-8" %> |
3)pageEncoding 속성
-pageEcoding 속성은 현재 JSP 페이지의 문자 인코딩 유형을 설정하는 데 사용함. 문자 인코딩 유형의 기본값은 ISO-8859-1임. 다음은 JSP 페이지의 문자 인코딩 유형으로 ISO-8859-1을 설정하는 예임
[pageEncoding 속성 사용 예: ISO-8859-1 문자 인코딩 유형 설정]
<%@ page pageEncoding="ISO-8859-1" %> |
-이 예는 다음에서 보듯이 contentType 속성의 문자열 세트를 설정한 것과 같은 기능을 함
<%@ page contentType="text/html; charset=iso-8859-1" %> |
4)import 속성
-import 속성은 현재 JSP 페이지에서 사용할 자바 클래스를 설정하는데 쓰임. 둘 이상의 자바 클래스를 포함하는 경우 쉼표(,)로 구분하여 연속해서 여러 개의 자바 클래스를 설정할 수 있음. 또는 여러 개의 자바 클래스를 각각 별도로 설정할 수도 있음. 다음은 JSP 페이지가 사용할 자바 패키지 java.io*를 설정하는 예임
*코드 직접 입력해야함: 복사x
[import 속성 사용 예:자바 패키지 java.io* 설정]
<%@ page import ="java.io*" %> |
*class 안에 import 못만들기 때문에 따로 써줘야함
import class{ } |
-다음은 JSP 페이지가 java.io.*와 java.lang.* 패키지를 참조하여 사용하는 예임
<%@ page import="java.io.*, java.lang.*" %> |
-위의 예에서는 기본적으로 기본적으로 JSP 컨테이너가 자동으로 java.io.*와 java.lang.* 패키지를 가져와 사용함. 이를 다음과 같이 개별적으로 설정할 수도 있음
<%@ page import="java.io.*" %> <%@ page import="java.lang.*" %> |
예제3-3.page 디렉티브 태그에 Date 클래스를 이용하여 현재 날짜 출력하기
JSPBook/src/main/webapp/ch03/page_import.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <%@ page import="java.util.Date" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Directives Tag</title> </head> <body> Today is <%= new Date() %> </body> </html> |
*import: 최상단으로
실행 결과
![]() |
5)session 속성
-session 속성은 현재 JSP 페이지 HTTP 세션 사용 여부를 설정하는 데 사용함. 기본 값은 세션을 자동으로 사용하는 true이며, 세션을 사용하지 않으려면 false로 설정함. 다음은 JSP 페이지가 세션을 사용하도록 true로 설정하는 예임. 이처럼 session 속성 값이 true이면 현재 JSP 페이지에서 JSP 내장 객체인 sesstion 변수를 사용할 수 있음. 만약 session 속성 값을 false로 설정하면 해당 JSP 페이지에서 내장 객체인 session 변수를 사용할 수 없다는 의미이므로 해당 페이지에서 세션을 유지 관리할 수 없음
[session 속성 사용 예: session 내장 객체 사용을 위한 true 설정]
<%@ page session="true" %> |
◎session 속성 사용을 사용하는 이유
-세션은 일반적으로 웹 어플리케이션이 실행되는 동안 사용자가 웹 어플리케이션의 데이터를 가져와 확인할 수 있는 권한을 부여받기 위해 사용함. 예를 들면 사용자가 은행 계좌에 로그인하여 로그아웃(또는 세션 만료)할 때까지 모든 데이터에 접근 할 수 있음. 따라서 JSP 페이지에 대한 세션을 유지하려면 세션 속성이 true여야 함
6)buffer 속성
buffer 속성은 현재 JSP 페이지의 출력 버퍼 크기를 설정하는 데 사용함. 이 속성 값은 none과 '버퍼 크기'로 설정할 수 있음. 속성 값을 none으로 설정하면 출력 버퍼를 채우지 않고 웹 브라우저로 직접 보내게 됨
[buffer 속성 사용 예: 출력 버퍼 크기를 none으로 설정]
<%@ page buffer="none" %> |
-'버퍼 크기'로 속성 값을 설정하면 출력 버퍼에 먼저 기록한 후 웹 브라우저로 보냄. 이때 기본 버퍼 크기는 서버의 고유한 값이지만 일반적으로 8KB임. 다음은 버퍼 크기를 32KB로 설정하는 예임. 이렇게 설정하면 페이지가 완료되는 경우나 출력이 명확하게 되는 경우를 제외하고는 출력 버퍼에 출력 내용이 최소한 32KB 누적될 때까지 웹 브라우저에 전송되지 않음
[buffer 속성 사용 예: 출력 버퍼 크기를 32KB로 설정]
<%@ page buffer="32KB" %> |
*임시공간에 담아둠: 쓰지는 않음
7)autoFlush 속성
-autoFlush 속성은 자동으로 출력 버퍼를 비우는 것을 제어하는 데 사용함. 즉 출력 버퍼가 채워진 경우 자동으로 버퍼에 있는 데이터를 웹 브라우저로 보내고 버퍼를 비울지 또는 버퍼 오버플로의 예외를 나타낼지 등의 처리를 설정하는 것임. 기본값은 true이며, 다음과 같이 속성 값을 true로 설정하면 출력 버퍼가 채워질 때마다 자동으로 웹 브라우저에 보내고 버퍼를 비움. 반면에 false로 설정하면 출력 버퍼가 가득 채워질 때 버퍼 오버플로의 예외를 발생시킴
[autoFlush 속성 사용 예: 출력 버퍼 자동 비우기를 위한 true 설정]
<%@ page autoFlush="true" %> |
8)isTreadSafe 속성
-isTreadSafe 속성은 현재 JSP 페이지에서 멀티스레드의 동작을 제어하는 데 사용함. 즉 여러 요청이 동시에 수신되는 경우 JSP 페이지가 어떻게 동작해야 하는지를 JSP 컨테이너에 지시하여 응답할 수 있게 함. 기본값은 true로 설정하면 JSP 페이지에 대해 수신된 여러 요청이 동시에 처리됨. 반면에 false로 설정하면 JSP 페이지에 대한 요청이 순차적으로 처리됨
[isTreadSafe 속성 사용 예: 멀티스레드 처리를 위한 true 설정]
<%@ page isTreadSafe="true" %> |
9)info 속성
-info 속성은 현재 JSP 페이지에 대한 설명을 설정하는 데 사용함. 따라서 JSP 개발자가 페이지의 기능을 이해하는 데 도움을 줌. 이 속성은 JSP 페이지의 설명 부분으로서 주석문의 기능과 같기 때문에 JSP 컨테이너는 info 속성을 무시함
[info 속성 사용 예: JSP 페이지 설명을 위한 설정]
<%@ page info="Home Page JSP" %> |
◎info 속성이 서블릿에서 사용되는 방법
-JSP 페이지에 <%@ page info="Home Page JSP" %>와 같이 선언하녕 JSP 컨테이너는 info 속성에 대응하여 서블릿 인터페이스 getServletInfo() 메소드를 사용함. 즉 JSP 컨테이너는 info 속성 값인 설명 메시지를 검색하여 다음과 같이 getServletInfo() 메소드를 생성함
public String getServletInfo(){ return "Home Page JSP"; } |
10)errorPage 속성 => forward
-errorPage 속성은 현재 JSP 페이지가 실행되는 동안 오류가 발생하면 특정 오류 페이지로 이동하는 데 사용함. 웹 서버가 제공하는 기본 오류 페이지를 사용하지 않고 이동할 오류 페이지의 URL을 설정함. 다음은 JSP 페이지에 오류가 발생했을 때 오류 페이지로 설정한 MYErrorPage.jsp로 자동 이동하는 예임
[errorPage 속성 사용 예: 이동할 오류 페이지 MYErrorPage.jsp 설정]
<%@ page errorPage="MYErrorPage.jsp" %> |
*Exception
예제3-6.page 디렉티브 태그에 이동할 특정 오류 페이지 작성하기
JSPBook/src/main/webapp/ch03/page_errorPage.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <%@ page errorPage="page_errorPage_error.jsp" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% String str = null; out.println(str.toString()); %> </body> </html> |
*toString(): Object 상속
null: 주소(x) -> class(x) -> 객체(x) -> 변수, 함수(x)
JSPBook/src/main/webapp/ch03/page_errorPage_error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h4>errorPage 디렉티브 태그</h4> 에러가 발생했습니다 </body> </html> |
실행 결과
![]() |
11)isErrorPage 속성
-isErrorPage 속성은 현재 JSP 페이지가 오류 페이지인지 여부를 설정하는 데 사용함. 기본값은 false이며 예외 처리를 위한 내장 객체인 exception 변수를 사용할 수 없음. 속성 값을 true로 설정하면 현재 JSP 페이지는 오류 페이지가 됨. 만약 다른 JSP 페이지에서 오류가 발생하면, 호출되는 오류 페이지는 true가 설정된 JSP 페이지가 됨
[isErrorPage 속성 사용 예: 현재 JSP 페이지가 오류 페이지가 되도록 true 설정]
<%@ page isErrorPage="true" %> |
예제3-7.page 디렉티브 태그에 JSP 페이지를 오류 페이지로 설정하기
JSPBook/src/main/webapp/ch03/page_isErrorPage.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <%@ page errorPage = "page_isErrorPage_error.jsp" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Directives Tag</title> </head> <body> <% String str = null; out.println(str.toString()); %> </body> </html> |
JSPBook/src/main/webapp/ch03/page_isErrorPage_page.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <%@ page isErrorPage="true" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Directives Tag</title> </head> <body> <h4>에러가 발생했습니다.</h4> <h5>exception 내장 객체 변수</h5> <% exception.printStackTrace(new java.io.PrintWriter(out)); %> </body> </html> |
*exception 참조변수
Exception exception = new Exception(); 자동으로 포함
실행 결과
![]() |
12)isELIgnored 속성
-isELIgnored 속성은 현재 JSP 페이지 표현 언어(expression language) 사용 여부를 설정하는 데 사용함. 기본값은 false이며 JSP 페이지에 표현 언어의 표현식 '${}'를 사용할 수 있음. 속성 값을 true로 설정하면 JSP 페이지에 사용된 표현 언어의 표현식을 처리할 수 없기 때문에 정적 테스트로 처리됨
[isELIgnored 속성 사용 예: 표현 언어를 처리하지 않기 위한 true 설정]
<%@ page isELIgnored="true"; %> |
13)isScriptingEnabled 속성
-isScriptingEnabled 속성은 스크립트 태그(선언문, 스크립틀릿, 표현문) 사용 여부를 설정하는 데 사용함. 속성 값은 true나 false이며 true로 설정하면 기본 스크립트 태그를 사용 할 수 있음. false로 설정하면 스크립트 태그를 제한하기 때문에 스크립트 태그를 사용하는 경우 번역 시 오류가 발생함
[isScriptingEnabled 속성 사용 예: 스크립트 태그를 사용하지 않기 위한 false 설정]
<%@ page isScriptingEnabled="false" %> |
03.include 디렉티브 태그: 합치기
-include 디렉티브 태그는 이름에서 알 수 있듯이 현재 JSP 페이지의 특정 영역에 외부 파일의 내용을 포함하는 태그이며 형식은 다음과 같음. 현재 JSP 페이지에 포함할 수 있는 외부 파일은 HTML, JSP, 텍스트 파일 등임. include 디렉티브 태그는 JSP 페이지 어디에서든 선언할 수 있음
cf)공통 기능을 모듈화: 부품바꿔 끼울 수 있음
ex)자동차바퀴, 모니터/ 일체형x: 휴대폰 배터리
<%@ include file="파일명" %> |
-여기서 file 속성 값은 현재 JSP 페이지에 포함할 내용을 가진 외부 파일명임. 이때 외부 파일이 현재 JSP 페이지와 같은 디렉터리에 있으면 파일명만 설정하고, 그렇지 않으면 전체 URL(또는 상대 경로)을 설정해야 함
-include 디렉티브 태그는 서블릿 프로그램으로 번연될 때 현재 JSP 페이지와 설정된 다른 외부 파일의 내용이 병합되어 번역됨. 즉 현재 JSP 페이지에서 include 디렉티브 태그가 사용된 위치에 설정된 파일의 원본 내용을 '있는 그대로' 붙여넣은 다음 전체 페이지를 자바 코드(서블릿)로 변환함
◎include 디렉티브 태그를 사용하는 이유
-외부 파일의 내용을 복사하여 현재 JSP 페이지에 붙여넣을 수 있지만 이는 좋은 방법이 아님. 예를 들어 머리글과 바닥글에 해당하는 외부 파일 2개와 100개의 JSP 페이지가 있는 경우를 생각해봄. 만약 JSP 페이지 100개에 외부 파일 2개의 내용을 복사하여 붙여넣었을 때 이 외부 파일의 내용을 변경해야 한다면 JSP 페이지 100개를 모두 수정 편집해야 함. 하지만 include 디렉티브 태그를 사용하면 모든 외부 파일을 포함하므로 외부 파일의 내용을 변경할 때마다 특정 외부 파일만 수정 편집하면 됨 -이처럼 include 디렉티브 태그를 사용하면 코드 재사용의 가능성을 향상(모듈화) 시킬 수 있음. 즉 웹 애플리케이션의 모든 JSP 페이지에 공통된 특정 코그나 데이터를 하나의 별도 외부 파일로 만들면 이 외부 파일을 모든 JSP 페이지에 포함할 수 있기 때문임 |
-include 디렉티브 태그는 머리글과 바닥글 같은 공통된 부분을 별도의 JSP 파일로 만들어 웹 페이지를 모듈화할 수 있음. 그래서 코드를 재사용하고 중복된 코드를 줄임으로써 유지 보수 측면에서 매우 유용함
-다음은 include 디렉티브 태그를 사용하여 현재 JSP 페이지의 머리글과 바닥글에 해당하는 header.jsp와 footer.jsp 파일을 포함하는 예임. 이 두 외부 파일은 현재 JSP 페이지와 같은 디렉터리에 있음. 만약 두 외부 파일과 현재 JSP 페이지가 다른 디렉터리에 있다면 전체 경로를 지정해야 함
[include 디렉디브 태그 사용 예]
<html>
<body> <%@ include file="header.jsp" %> Today is: <%= java.util.Calendar.getInstance().getTime() %> <%@ include file="footer.jsp" %> </body> </html> |
-위의 예는 include 디렉티브 태그를 사용하는 표준적인 방법임. 웹 애플리케이션에서 웹 페이지를 만들 때마다 최상단의 머리글과 바닥글이 모두 동일한 경우에 적용할 수 있음. 머리글과 바닥글을 별도의 외부 파일로 만들어 모든 JSP 페이지에 include 디렉티브 태그를 사용하여 외부 파일을 포함함. 이처럼 공통된 부분을 외부 파일로 만들면 머리글이나 바닥글의 내용을 변경해야 할 때마다 한 곳에서 할 수 있음
-include 디렉티브 태그의 또 다른 사용은 웹 애플리케이션에서 일반적으로 사용되는 몇 가지 기능을 포함하는 별도의 외부 파일을 만들고, 그 기능을 사용하고자 하는 웹 페이지에 포함하는 경우임
-이처럼 include디렉티브 태그는 웹 애플리케이션의 중복된 코드나 공통된 코드를 모듈화할 수 있으므로 매우 유용함
예제3-9.include 디렉티브 태그로 외부 파일의 내용 포함하기
JSPBook/src/main/webapp/ch03/include01.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Directives Tag</title> </head> <body> <%@ include file="include01_header.jsp" %> <h4>-------- 현재 페이지 영역 --------</h4> </body> </html> |
JSPBook/src/main/webapp/ch03/include01_header.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Directives Tag</title> </head> <body> <h4>헤더 페이지 영역입니다</h4> </body> </html> |
실행 결과
![]() |
예제3-10.include 디렉티브 태그로 머리글과 바닥글에 외부 파일 내용 포함하기
JSPBook/src/main/webapp/ch03/include02.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Directives Tag</title> </head> <body> <%@ include file="include02_header.jsp" %> <p>방문해 주셔서 감사합니다.</p> <%@ include file="include02_footer.jsp" %> </body> </html> |
1)인코딩 포함
JSPBook/src/main/webapp/ch03/include02_header.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <%! int pageCount=0; void addCount(){ pageCount++; } %> <% addCount(); %> <p>이 사이트 방문은 <%=pageCount %>번째 입니다.</p> |
실행 결과
![]() |
2)인코딩 삭제
<%! int pageCount=0; void addCount(){ pageCount++; } %> <% addCount(); %> <p>이 사이트 방문은 <%=pageCount %>번째 입니다.</p> |
실행 결과
![]() |
*모든 파일 인코딩 같아야함: 문자깨짐 방지 -> 자동으로 읽음
태그 안넣으면 깨짐
JSPBook/src/main/webapp/ch03/include02_footer.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> |
*include file
↓
★코드 삽입 ★
: 중복코드 삭제(삽입되는 파일)
'프로그래밍 > JSP' 카테고리의 다른 글
JSP 웹프로그래밍 59일차 (25/2/10) (1) | 2025.02.10 |
---|---|
JSP 웹프로그래밍 57일차 (25/2/6) (0) | 2025.02.06 |
JSP 웹프로그래밍 56일차 (25/2/5) (0) | 2025.02.05 |