JSP 4강 - include, taglib, JSTL

voilà!·2022년 1월 16일
0

JSP 스프링

목록 보기
4/31

include 디렉티브란?

  • 현재 JSP 페이지의 특정 영역에 외부 파일의 내용을 포함하는 태그
  • 외부 파일? JSP, HTML, 텍스트 파일
  • 어디든 선언 가능
    위 : Top
    중간 : Aside
    아래 : Bottom

include02.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Directives Tag</title>
</head>
<body>
	<%@ include file="/ch03/include02_header.jsp" %>
	<p>다음달 태영이의 생일을 미리 축하합니다.</p>
	
<%
for(int i=0; i<=9; i++){
	if(i%2 == 0){
		out.print(2 * i + "<br>");
	}
}

%>	
	
	<%@ include file="/ch03/include02_footer.jsp" %>
</body>
</html>

welcome.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="/css/bootstrap.min.css">
<title>welcome</title>
</head>
<body>
<!-- top.jsp 시작 -->	
	<%@ include file="top.jsp" %>
<!-- top.jsp 끝 -->	
<%!
	String greeting = "Welcome to 불주먹's Shopping Mall";
	String tagline = "Welcome to 불주먹's Market!";
%>
<div class="jumbotron">
	<div class="container">
		<h3 class="display-3">
		<!-- ?name=개똥이 -->
		<!-- ${param.name} -> EL태그 -->
			Welcome to ${param.name}'s Shopping Mall
		</h3>
	</div>
</div>
<div class="container">
	<div class="text-center">
	<h3>Welcome to ${param.name}'s Market!</h3>
	</div>
</div>
<!-- botton.jsp 시작 -->
	<%@ include file="bottom.jsp" %>
<!-- botton.jsp 끝 -->
</body>
</html>

JSTL 라이브러리 다운 방법

https://mvnrepository.com/ 접속
jstl 검색
2번째 클릭
1.2 클릭
jar 클릭( jar는 라이브러리의 집합체)
WEB-INF폴더의 lib에 넣기

프로젝트 우클릭 - buidpath - 라이브러리 - Add external jars -
D:\B_Util\5.ApacheTomcat\apache-tomcat-8.5.37\lib에 jstl-1.2.jar 붙여넣기 - 열기 - apply

taglib 디렉티브란?

  • 현재 JSP 페이지에 표현 언어(EL),JSTL,사용자 정의 태그(custom tag)와 같은 태그 라이브러리를 설정하는 태그임
  • taglib url="경로" prefix="태그 식별자"

원리?
taglib 디렉티브 태그가 서블릿 프로그램으로 번역됨.
url 경로가 JSP 컨테이너에 사용자가 정의한 태그 라이브러리의 위치를 알려줌
prefix 속성의 값(c,fmf)은 사용자가 정의한 태그 라이브러리의 접두어 태그가 무엇인지 JSP 컨테이너에 알려주는 역할을 함
(c는 core, fmt는 format의 약자)

JSTL 태그 라이브러리가 있어야 taglib를 사용할 수 있다.
아래 중 해당하는 taglib 디렉티브를 JSP 상단에 추가한 후 사용한다.

JSTL 태그 라이브러리 설정 코드
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

var : 변수
begin : 시작
end : 종료
step : 증가값
items : 서블릿에서 담은 객체를 items에 넣어서 쓸 수 있다.

밑은 jstl 라이브러리에서 제공하는 기능이다.
c:forEach -> 반복
${i} -> EL (표현언어)

<c:forEach var="i" begin="1" end="10" step="1">
	<c:out value="${i}"></c:out>
</c:forEach>

문제1. page 디렉티브 태그를 이용하여 다음 조건에 맞게 JSP 애플리케이션을 만들고 실행 결과를 확인해보자

1) page.jsp 파일 생성

  • page 디렉티브 태그에 java.util.Date, java.lang.Math 클래스를 이용하여 현재 날짜와 5의 제곱을 출력해보자
    2) 웹 브라우저에 /ch03/page.jsp를 입력하여 실행결과를 확인해보자

page.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>    
<%@ page import="java.lang.Math" %>    
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
 <p>현재 날짜 : <%=new Date() %></p>
 <p>5의 제곱 : <%=Math.pow(5, 2) %></p>
</body>
</html>

문제2. Include 디렉티브 태그를 이용하여 다음 조건에 맞게 JSP 애플리케이션을 만들어보자

1) header.jsp 파일 생성

  • 태그를 이용하여 “Hello, Java Servlet Page”를 선언함 2) include03.jsp 파일 생성

  • include 디렉티브 태그를 이용하여 외부 파일 header.jsp의 내용을 포함함
  • java.util.Calendar 클래스를 이용하여 현재 시간 출력
    3) 웹 브라우저에 /ch03/include03.jsp를 입력하여 실행 결과 확인

include03.jsp

<%@page import="java.util.Date"%>
<%@page import="java.text.DateFormat"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<%@ page import="java.util.Calendar" %>    
<!DOCTYPE html>
<html>
<head>
</head>
<body>
	<%@ include file="header.jsp" %>
	<p>현재 시간 : <%=Calendar.getInstance().getTime() %></p>
	
<br>
<%
//날짜 형식을 String으로 혹은 String을 날짜 형식으로 변환하기 위한 포맷형식이다.
DateFormat format = new SimpleDateFormat("yyyy/MM/dd");
//Calender형식에서 날짜를 가져온다. 특이점은 Calender가 singleton 형식이다.
//Date 값을 가져와서 String으로 변환한다.
String datestr = format.format(Calendar.getInstance().getTime());
out.print(datestr + "<br>");
//Date 객체를 선언해서 String으로 변환한다.
datestr = format.format(new Date());
out.print(datestr + "<br>");
//String 형식을 Date 형식으로 변환한다.
Date date = format.parse("2022/01/04");
out.print(date + "<br>");

%>	
	
</body>
</html>

0개의 댓글