디렉티브 태그
JSP페이지를 어떻게 처리할 것인지를 설정하는 태그
page | include | taglib |
<%@ page ... %> | <%@ include %> | <%@ taglib %> |
페이지에 대한 정보 설정 | 특정 영역에 다른 문서 포함 | 사용할 다른 태그 라이브러리 설정 |
page 디렉티브 태그
속성
- language
사용할 프로그래밍 언어 설정 - contentType
text/html(기본값), text/xml, text/plain ... 등등
charset : 문자 세트 설정 - pageEncoding
문자 인코딩 유형 설정 contentType에서 charset으로 가능,기본값 ISO-8859-1 - import
현재 JSP 페이지에서 사용할 자바 클래스를 설정 (여러 개 일 때 , 로 구분이 가능하다)
예시
<%@ page import="java.util.Date"%>
<%@ page import="java.text.SimpleDateFormat"%>
↓
<%@ page import="java.util.Date,java.text.SimpleDateFormat"%>
- session
- buffer
- autoFlush
- isThreadSafe
- info
- errorPage
- isErrorPage
오류 발생 시 특정 오류 처리 페이지로 이동
기본 웹 서버 오류페이지는 TOMCAT의 내용을 포함해 불필요한 정보가 보여지므로 별개의 페이지로 처리한다 - isELIgnored
- isScriptingEnabled
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page import="java.util.Date, java.text.SimpleDateFormat"%>
<!DOCTYPE html>
<html>
<head>
<title>Directives Tag</title>
</head>
<body>
<%
// 날짜 객체 생성
Date today = new Date();
// 간단 날짜 형식
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String str = sdf.format(today);
%>
오늘 날짜 : <%=str %>
</body>
</html>
errorPage
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page errorPage="page_errorPage_error.jsp" %>
<!--
errorPage 속성 : 오류 발생 시 특정 오류 처리 페이지로 이동
-->
<!DOCTYPE html>
<html>
<head>
<title>Directives Tag</title>
</head>
<body>
<% // 스크립틀릿
// 지역변수 : 밑에서 부터만 변수 활용 가능
String str = null;
// 오류 (null은 toString() 할 수 없음)
// HTTP 상태 500 : HTTP Status. 개발자 오류
out.print(str.toString());
%>
<%=str %>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page errorPage="page_errorPage_error.jsp" %>
<%@ page isErrorPage="true" %>
<!--
isErrorPage 속성 : 오류 페이지인지 여부를 설정, 기본값은 false
-->
<!DOCTYPE html>
<html>
<head>
<title>Directives Tag</title>
</head>
<body>
<img alt="오류메세지" src="https://uic.yonsei.ac.kr/main/images/errorpage.jpg"><br>
<!-- isErrorPage가 true이면 exception을 사용할 수 있다 -->
<%=exception.getMessage() %>
</body>
</html>
include 디렉티브 태그
html, jsp, 텍스트 파일 포함 가능
<%@ include file="파일명" %>
include01.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Directives Tag</title>
</head>
<body>
<%@ include file="include01_header.jsp" %>
<h4>---------------- 현재 페이지 영역 -------------------</h4>
<%@ include file="include01_footer.jsp" %>
</body>
</html>
include01_header.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<h4>header 페이지 영역입니다.</h4>
include01_footer.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<h4>footer 페이지 영역입니다.</h4>
include02.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Directives Tag</title>
</head>
<body>
<%
// 지역변수
String name = "오리";
%>
<%@ include file="include02_header.jsp" %>
<p><%=name%>님 방문해 주셔서 감사합니다.
</p>
<%@ include file="include02_footer.jsp" %>
</body>
</html>
include02_header.jsp
1초마다 시간이 변경되는 헤더 (setInterval()이용)
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<div id="time"></div>
<!-- 2024-06-26 14:09:39 -->
<script>
function fnCt(){
let today = new Date();
// console.log(today);
// 연도
let year = today.getFullYear();
// 월
let month = ('0' + (today.getMonth() + 1)).slice(-2);
// 일
let day = ('0' + today.getDate()).slice(-2);
// console.log(today.getTime());
let ampm = "오전"
let hour = today.getHours();
if(hour>=12){
ampm = "오후";
hour=hour-12;
}
hour = ('0' + hour).slice(-2);
let min = ('0' + today.getMinutes()).slice(-2);
let sec = ('0' + today.getSeconds()).slice(-2);
let str = "<p>"+year + "-" + month + "-" + day + " " + hour + ":" + min
+ ":" + sec + " " + ampm+"</p>";
document.querySelector('#time').innerHTML = str;
}
setInterval(fnCt, 1000); // 1초마다 fnCt 함수를 호출
</script>
include02_footer.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%
addCount();
%>
<p><%=name %>님은 이 사이트에 <%=pageCount %>번째 방문하였습니다.</p>
<%! // 선언문
// 전역 변수(재기동 해야 0으로 다시 초기화가 됨)
String name = ""; // 지역변수에서 사용하므로 해당 이름입력X
// 방문 카운터
int pageCount = 0;
// 전역 메서드
void addCount(){
pageCount++;
}
%>
<div>Copyright © <%=name %></div>
<!-- 지역변수 name 들어감 -->
taglib 디렉티브 태그
EL(Expression Language-표현 언어), JSTL(JSP Standard Tag Library) 설정 태그
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- uri : 태그 설정 정보를 가진 경로 주소
- prefix : 식별 명
prefix="c"
- set
JSTL
java변수를 jsp 변수로 변환
<c:set var="jsp변수이름" value="<%=java변수%>" /> - 사용(출력)
${jsp변수이름} - forEach
varStatus는 생략 가능하며 순번을 매길 때 주로 사용
varStatus명.index 0번부터
varStatus명.count 1번부터
<c:forEach var="이름" items="${jsp변수이름}" varStatus="상태용변수">
${이름}
</c:forEach>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!--
taglib 디렉티브 : EL(Expression Language-표현 언어),
JSTL(JSP Standard Tag Library) 설정 태그
uri : 태그 설정 정보를 가진 경로 주소
prefix : 식별 명
-->
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<%
// java 세계의 변수
String title = "JSTL Core 태그 라이브러리";
String[] fruitArr = {"apple", "watermelon", "melon", "strawberry", "grape"};
List<String> likeList = new ArrayList<>();
likeList.add("초콜릿");
likeList.add("사탕");
likeList.add("젤리");
likeList.add("과자");
likeList.add("껌");
List<Map<String, Object>> mapList = new ArrayList<>();
Map<String, Object> map = new HashMap<>();
map.put("name", "아잠만");
map.put("age",5);
map.put("animal","오리");
mapList.add(map);
Map<String, Object> map2 = new HashMap<>();
map2.put("name", "뽀야미");
map2.put("age",15);
map2.put("animal","햄스터");
mapList.add(map2);
Map<String, Object> map3 = new HashMap<>();
map3.put("name", "쭈니");
map3.put("age",20);
map3.put("animal","다람쥐");
mapList.add(map3);
%>
<!-- JSTL -->
<!-- title이 subject라는 이름의 jsp의 변수가 된다 -->
<c:set var="subject" value="<%=title %>" />
<c:set var="arr" value="<%=fruitArr %>" />
<c:set var="list" value="<%=likeList %>" />
<c:set var="mapList" value="<%=mapList %>" />
<!-- java -->
<h3><%=title %></h3>
<!-- EL -->
<h3>${subject}</h3>
<hr />
<!-- fruitArr 출력 -->
<c:forEach var="str" items="${arr}" varStatus="stat">
<h5>${str}</h5>
</c:forEach>
<hr />
<!-- likeList 출력 -->
<c:forEach var="like" items="${list}" varStatus="stat2">
<h5>${like}</h5>
</c:forEach>
<hr />
<!-- mapList 출력 -->
<table border="1">
<tr>
<th>번호</th>
<th>이름</th>
<th>나이</th>
<th>종류</th>
</tr>
<c:forEach var="map" items="${mapList}" varStatus="stat3">
<tr>
<td>${stat3.count}</td>
<td>${map.name}</td>
<td>${map.age}</td>
<td>${map.animal}</td>
<!--
mapList : List<Map>
하나 꺼내면 : map
stat3.index : 0부터 시작
stat3.count : 1부터 시작
-->
</tr>
</c:forEach>
</table>
<hr />
<!-- 구구단 -->
<%for(int k=1; k<=9; k++){} %>
<c:forEach var="k" begin="1" end="9" step="1">
<c:set var="o" value="${10-k}"/> <!-- 자바변수 뿐만이 아니라 JSP변수 재정의도 가능하다 -->
<h2>${o}단</h2>
<c:forEach var="n" begin="1" end="9" step="1">
<h4>${o} X ${n} = ${o*n}</h4>
</c:forEach>
</c:forEach>
</body>
</html>
prefix="fmt"
- 숫자 포맷팅:
<fmt:formatNumber value="${number}" type="currency" currencySymbol="₩" /> <fmt:formatNumber value="${number}" type="number" pattern="#,###" />
- 날짜 포맷팅:
<fmt:formatDate value="${date}" pattern="yyyy-MM-dd HH:mm:ss" />
- 메시지 리소스 사용:
<fmt:setBundle basename="messages" /> <fmt:message key="welcome.message" />
- 타임존 설정:
<fmt:setTimeZone value="GMT+9" />
- 지역 설정:
<fmt:setLocale value="ko_KR"/>
'JAVA > JSP' 카테고리의 다른 글
[JSP] form 태그 (0) | 2024.07.02 |
---|---|
[JSP] 구현 2 - 상세보기 (1) | 2024.07.02 |
[JSP] 내장 객체 (0) | 2024.06.28 |
[JSP] 구현 (0) | 2024.06.28 |
[JSP] OT (설정) / 스크립트 태그 (0) | 2024.06.24 |