JSP 4강 - include, taglib, EL

Whatever·2022년 1월 4일
0

JSP

목록 보기
4/30

include

위쪽 : Top
중간 : Aside
아래 : Bottom

include 디렉티브란?

  • 현재 JSP 페이지의 특정 영역에 외부 파일(top.jsp, bottom.jsp)의 내용을 포함하는 태그
  • 외부 파일? JSP, HTML, 텍스트 파일
  • 어디든 선언 가능함

메인 안에 서버를 넣을 때 include를 사용

EL, JSTL

모델에 데이터를 담아서 담겨진 데이터를 그대로 사용 가능
https://mvnrepository.com/ - mavenrepository에서 JSTL(어흥) 검색
2번째거

JRE - runtime
JDK - development

꿀팁!!

프로젝트 우클릭> Build Path> Add External JARs 클릭> tomcat폴더에 lib에 jar파일 저장 후 해당 폴더 클릭하기

taglib

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

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

uri는 core를 사용할지, format을 사용할지 결정
라이브러리에 JSTL이 있어야 taglib 사용 가능

먼저, 아래와 같이 taglib 디렉티브를 만들어준다.(아래는 core 사용시)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<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 유진이의 Shopping Mall";
	String tagline = "Welcome to 유진이의 Marget!";
%>
<div class="jumbotron">
	<div class="container">
		<h3 class="display-3">
		<!-- ?name=개똥이 -->
			Welcome to ${param.name}의 Shopping Mall
		</h3>
	</div>
</div>
<div class="container">
	<div class="text-center">
		<h3>Welcome to ${param.name}의 Marget!</h3>
	</div>
</div>
<!-- bottom.jsp 시작 -->
<%@ include file="bottom.jsp" %>
<!-- bottom.jsp 끝 -->
</body>
</html>

아래 그림은 core를 사용해서 forEach문을 작성한 것, 중요함!!!


여기서 ${i}가 바로 EL이다.

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

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

[답]

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

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

1) header.jsp 파일 생성
- <h4>태그를 이용하여 "Hello, Java Servlet Page"를 선언함
2) include03.jsp 파일 생성
- include 디렉티브 태그를 이용하여 외부 파일 header.jsp의 내용을 포함함.
- java.util.Calendar 클래스를 이용하여 현재 시간 출력
3) 웹 브라우저에 /ch03/include.jsp를 입력하여 실행 결과 확인

[답]

<%@page import="java.util.Calendar"%>
<%@ 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="header.jsp" %>
현재 시간 : <%=Calendar.getInstance().getTime()%>
</body>
</html>

Date 클래스 사용 시 - Date와 Calendar의 차이

<%@page import="java.util.Date"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.text.DateFormat"%>
<%@page import="java.util.Calendar"%>
<%@ 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="header.jsp" %>
현재 시간 : <%=Calendar.getInstance().getTime()%>

<%
//날짜 형식을 String으로 혹은 String을 날짜 형식으로 변환하기 위한 포맷형식이다.
DateFormat format = new SimpleDateFormat("yyyy/MM/dd");
//Calendar형식에서 날짜를 가져온다. 특이점은 Calendar가 singleton형식이다.
//Date 값을 가져와서 String으로 변환한다.
String datestr = format.format(Calendar.getInstance().getTime());
out.print(datestr +"<br />");
//String 형식을 Date형식으로 변환한다.
Date date = format.parse("2021/04/30");
out.print(date+"<br />");
%>
</body>
</html>

문제3. taglib 디렉티브 태그를 이용하여 다음처럼 출력해보자

1) taglib02.jsp 파일 생성

[숙제]
1. 디렉티브 태그의 세 가지 유형은?
2. JSP 페이지가 사용할 자바 클래스를 설정하기 위한 page 디렉티브 태그의 속성은?
3. JSP 페이지의 특정 영역에 외부 파일의 내용을 포함하는 디렉티브 태그는 무엇이었나?

나의 답 :
1. page, taglib, include
2.

CH04. 액션태그

Action Tag란?

  • 서버(tomcat)나 클라이언트(크롬)에게 어떤 행동을 하도록 명령
  • 페이지와 페이지 사이를 제어
  • 다른 페이지의 실행 결과 내용을 현재 페이지에 포함
  • 자바빈즈 처리
  • 반드시 끝나는 태그 />로 마무리해야 함
  • Action Tag에서 자주 사용되는 태그
    1) forward : forward
    2) include : include
    3) param : param
    4) 자바빈즈 : useBean, setProperty, getProperty
    액션태그에서 사용되는 include는 조금 더 동적이다.
    디렉티브의 include는 정적

0개의 댓글