티스토리 뷰
1. 디렉티브 태그의 개요
디렉티브 태그는 JSP 페이지를 어떻게 처리할 것인지를 설정하는 태그이다.
디렉티브 태그 종류
디렉티브 태그 | 형식 | 설명 |
page | <%@ page ...%> | JSP 페이지에 대한 정보를 설정한다. |
include | <%@ include ...%> | JSP 페이지의 특정 영역에 다른 문서를 포함한다. |
taglib | <%@ taglib ...%> | JSP 페이지에서 사용할 태그 라이브러리를 설정한다. |
* %@는 하나의 단어처럼 보기때문에 띄워쓰면 안된다.
2. page 디렉티브 태그의 기능과 사용법
page 디렉티브 태그는 현재 JSP 페이지에 대한 정보를 설정하는 태그이다.
JSP 페이지가 생성할 콘텐츠 유형의 문서(=인코딩), 사용할 자바 클래스, 오류 페이지 설정, 세션 사용 여부 등 JSP 컨테이너가 JSP 페이지를 실행하는데 필요한정보를 설정할 수 있다.
JSP 페이지 어디에서든 선언할 수 있지만 일반적으로 최상단에 선언한다.
ex ) <%@ page 속성1="값1" %>
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 페이지의 스크립트 태그 사용 여부를 설정한다. |
* 하나의 디렉티브 태그에는 여러개의 속성도 설정할 수 있다.
import 속성 제외한 나머지 속성들은 JSP 페이지에 한번씩만 설정할 수 있다.
- language 속성
현재 JSP 페이지에 사용할 프로그래밍 언어를 설정하는데 사용한다.
기본 값은 java이지만 JSP 컨테이너가 자바 이외의 언어도 지원할 수 잇도록 하기 위한 속성이다.
ex) 자바 프로그래밍 언어 설정
<%@ page language="java" %>
- contentType 속성
현재 JSP 페이지의 콘텐츠 유형을 설정하는데 사용한다.
콘텐츠 유형은 주로 text/html, text/xml, text/plain 등이 있고 기본 값은 text/html 이다.
콘텐츠 유형은 이외로 특정 프로그램도 줄 수 있다. (ex) MS 프로그램 등)
ex) text/html 콘텐츠 유형 설정, utf-8 문제열 세트 설정
<%@ page contentType="text/html:charset=utf-8" %>
- pageEncoding 속성
현재 JSP 페이지 문자 인코딩 유형을 설정하는데 사용한다.
- import 속성
JSP 페이지에서 사용할 자바 클래스를 설정하는데 쓴다.
두개 이상이면 쉼표로 구분한다.
ex) 자바 패키지 java.io.* 설정
<%@ page import="java.io.*" %>
ex) page 디렉티브 태그에 Date 클래스를 이용하여 현재 날짜 출력하는 예시
3-3
<%@ 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>
<%@ page import="java.util.Date" %>
Today is <%=new Date() %>
</body>
</html>
java.util.Date 클래스를 import해서 가져와서 사용한다.
결과
- session 속성
현재 JSP 페이지의 HTTP 세션사용 여부를 설정하는데 사용한다.
session은 정보를 담아놓는 객체로 어디든지 꺼내 쓸 수 있는 사물함과 같은 기능을 한다고 생각하면 된다.
또한 만들어져 있는 객체이다.
ex) session 내장 객체 사용을 위한 true 설정
<%@ page session="true" %>
* 만약 사용하지 않으려면 false로 입력하면 된다.
- errorPage 속성
JSP 페이지가 실행되는 동안 오류가 발생하면 특정 오류 페이지로 이동시켜주는데 사용한다.
웹페이지의 예외처리라고 생각하면 된다.
이 방법을 쓰지 않아도 되지만 쓰지 않으면 코드, 서버 등 정보가 모두 표기되어 나타나기 때문에 정보가 유출된다.
ex) 이동할 오류 페이지 설정
<%@ page errorPage="MyErrorPage.jsp" %>
- isErrorPage 속성
현재 JSP 페이지가 오류 페이지인지 true or false 여부 설정하는데사용한다.
기본은 false이고 예외처리를 위한 내장 객체인 exception 변수를 사용할 수 없다.
속성값이 true이면 현재 페이지는 오류 페이지가 된다.
ex) 현재 JSP 페이지가 오류 페이지가 되도록 true 설정
<%@ page isErrorPage="true" %>
- isELIgnored 속성
현재 JSP 페이지의 표현 언어 사용 여부를 설정하는데 사용한다.
기본 값은 false이고 표현식은 '${}'를 사용한다.
{}안에는 변수가 들어가며 false여야 사용할 수 있다.
만약 true이면 처리할 수 없어 정적 텍스트로 처리된다.
ex) 표현 언어를 처리하지 않기 위한 true 설정
<%@ page isELIgnored="true" %>
3. include 디렉티브 태그의 기능과 사용법
include 디렉티브 태그는 JSP 페이지의 특정 영역에 외부 파일을 불러와 내용을 포함하는 태그이다.
이때 포함할 수 있는 외부 파일은 HTML, JSP, 텍스트파일 등이 있다.
위치는 어디든 상관이 없다.
ex)
<%@ include file = "파일명" %>
ex) include 디렉티브 태그로 외부 파일의 내용 포함하는 예제
3-9
header
<%@ 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>헤더 페이지 영역입니다.</h4>
</body>
</html>
HTML
<%@ 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>
<%@ include file="include01_header.jsp" %>
<h4>--------- 현재 페이지 영역 ---------</h4>
</body>
</html>
include file을 사용하여 이전에 작성했던 파일을 현재 JSP 페이지에 불러 온 것을 볼 수 있다.
결과를 보면 header파일에 포함되어 있던 텍스트가 현재 JSP 페이지에 출력된 것을 볼 수 있다.
ex) include 디렉티브 태그로 머리글과 바닥글에 외부 파일 내용 포함하는 예제
3-10
header
<%@ 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 pageCount=0;
void addCount(){
pageCount++;
}
%>
<%
addCount();
%>
<p>이 사이트 방문은 <%=pageCount %>번째 입니다.</p>
</body>
</html>
footer
<%@ 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>Copyright © JSPBook</p>
</body>
</html>
<%@ 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>
<%@ include file="include02_header.jsp" %>
<p>방문해 주셔서 감사합니다.</p>
<%@ include file = "include02_footer.jsp" %>
</body>
</html>
이전 작성했던 header파일과 footer 파일을 현재 JSP페이지로 불러 온것을 볼 수 있다.
확인 결과 JSP 페이지에 header 과 footer에 포함되어 있던 내용이 출력된 것을 볼 수 있다.
header에 페이지 실행할때마다 count하도록 했기 때문에 새로고침을 할 때마다 방문 횟수가 늘어나는 것을 볼 수 있다.
4. taglib 디렉티브 태그이 기능과 사용법
taglib 디렉티브 태그는 현재 JSP 페이지에 표현 언어, JSTL, 사용자 정의 태그 등 태그 라이브러리를 설정한다.
ex)
<%@ taglib uri="경로" prefix="태그 식별자" %>
uri 경로는 태그 설정 정보를 가진 경로 주소이다.
prefix 속성은 uri에 설정한 사용자가 정의한 태그를 식별하기 위한 고유 이름이다.
속성값에 별칭을 붙여 좀 더 편하게 보고 사용할 수 있다.
- JSTL 태그
JSP 태그이 모음으로 자주 사용되는 핵심 기능을 제공한다.
반복문, 조건문과 같은 논리적 구조 작업, XML 문서 조작 등 수행을 위한 태그를 지원한다.
하지만 ,JSTL 태그를 사용하려면 WEB-INF/lib 디렉터리에 jstl.jar 라이브러리 파일이 있어야한다.
ex) include 디렉티브 태그에 JSTL의 Core 태그를 설정하여 1부터 10까지 출력하는 예시
3-11
먼저 웹페이지를 작성하고 WEB-INF/lib/ 폴더에 JSTL 태그 라이브러리인 JSTL-1.2.jar 파일을 추가한다.
그리고 실행하면 실행이 된다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:forEach var="k" begin="1" end="10" step="1">
<c:out value="${k}" />
</c:forEach>
</body>
</html>
웹 쇼핑몰
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ page import="java.util.Date" %>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<nav class="navbar navbar-expand navbar-dark bg-dark">
<div class = "container">
<div class="navbar-header">
<a class="navbar-band" href="./welcome.jsp">Home</a>
</div>
</div>
</nav>
<%! String greeting = "웹 쇼핑몰에 오신 것을 환영합니다";
String tagline = "Welcome to Web Market!";%>
<div class="jumbotron">
<div class="container">
<h1 class="display-3">
<%=greeting %>
</h1>
</div>
</div>
<div class="container">
<div class="text-center">
<h3>
<%= tagline %>
</h3>
<%
Date day = new java.util.Date();
String am_pm;
int hour = day.getHours();
int minute = day.getSeconds();
int second = day.getSeconds();
if(hour/12==0){
am_pm="AM";
}
else{
am_pm="PM";
hour=hour-12;
}
String CT = hour + ":" + minute + ":" + second + " " + am_pm;
out.println("현재 접속 시각 : " + CT + "\n");
%>
</div>
<hr>
</div>
<footer class="container">
<p>© WebMarket</p>
</footer>
</body>
</html>
'코딩 > JSP' 카테고리의 다른 글
웹쇼핑몰 (0) | 2023.12.01 |
---|---|
[8주 5일차] 액션 태그 (1) | 2023.12.01 |
[8주 4일차] 액션 태그 (1) | 2023.11.30 |
[8주 3일차] 스크립트 태그 (0) | 2023.11.29 |
[8주 2일차] JSP (운영체제 /웹 / JSP 환경 설정) (0) | 2023.11.28 |
- Total
- Today
- Yesterday