Web Programming/JSP

10. JSP EL & JSTL

유가엘 2020. 3. 24. 00:29

lesson11_JSP_EL_JSTL.zip
0.37MB

EL(Expression language)란?

EL은 JSP 2.0 스펙에 추가된 개념입니다. View 를 담당하는 JSP 에서 자바코드를 더 이상 사용하지 않고 좀더 간편하게 출력하기 위해 만들어 졌습니다. Tomcat 이 실행되면 자동으로 형변환되어 자바코드로 인식합니다.

 

EL의 사용방법

  • Parameter 출력 : ${param.이름}

  • 기본형(int, double, String) 출력 : ${이름}

  • 객체 출력 : ${이름명.멤버변수명}

  • 배열 출력 : ${이름객체[인덱스] }

  • ArrayList<객체>출력 : ${이름[인덱스] }

연산자

의미

A == B 또는 A eq B

A 와 B 는 같습니다.

A != B 또는 A ne B

A 와 B 는 다릅니다.

A < B 또는 A lt B

A 는 B 보다 작습니다.

A > B 또는 A gt B

A 는 B 보다 큽니다.

A <= B 또는 A le B

A 는 B 보다 작거나 같습니다.

A >= B 또는 A ge B

A 는 B 보다 크거나 같습니다.

A / B 또는 A div B

A 를 B 로 나눕니다.

A % B 또는 A mod B

A 를 B 로 나눈 값의 나머지 입니다.


JSTL(JSP Standard Tag Library)란?

JSP 에서 자주 사용하는 기능 ( 연산이나 조건 반복문, 데이터 조작 ) 을 구현할 수 있는 커스텀 태그 라이브러리 입니다.

 

JSTL을 사용하기 위해선 .Jar 파일이 필요합니다.

1. MavenRepository에 접속하여 JSTL.jar를 다운로드 받습니다.

https://mvnrepository.com/

 

Maven Repository: Search/Browse/Explore

JGraphX is a Java Swing diagramming (graph visualisation) library Last Release on Mar 23, 2020

mvnrepository.com

2. 다운 받은 JSTL.jar파일을 WEB-INF/lib 안에 넣어 줍니다.

3. JSTL을 사용하기 위해선 JSP페이지 에서 선언하여 사용 할 수 있습니다.

Core  (prefix : c)

실행 흐름 제어 및 기능을 제공합니다.

URI → http://java.sun.com/jsp/jstl/core


Formatting (prefix : fmt)

자, 날짜, 시간을 형태를 변환 기능을 제공합니다.

URI → http://java.sun.com/jsp/jstl/fmt


Function (prefix : fn)

문자열을 제공하는 함수 제공합니다.

URI → http://java.sun.com/jsp/jstl/functions

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>

<!-- 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" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<!--  JSTL Core  -->
	
	<!--  변수 선언 	-->
	<c:set var="helloJSTL" value="JSTL입니다." />
	<h3>${helloJSTL}</h3>
	<c:remove var="helloJSTL" />
	${helloJSTL}
	<c:set var="helloJSTL" value="JSTL입니다." />
	<c:set var="now" value="<%=new java.util.Date()%>" />
	<h3>${now}</h3>
	<c:set var="login" value="true" />
	<h3>${login}</h3>
	
	<!-- if 구문 -->
	<c:if test="${login}">
		<p>
			<a href="/loginOK.jsp">로그인</a>
		</p>
	</c:if>

	<!-- if - else 구문 -->
	<c:choose>
		<c:when test="${login}">
			<p>
				<a href="/loginOUT.jsp">로그아웃</a>
			</p>
		</c:when>
		<c:otherwise>
			<p>
				<a href="/login.jsp">로그인</a>
			</p>
		</c:otherwise>
	</c:choose>

	<!--  for 구문 	-->
	<c:forEach var="i" begin="0" end="10" step="1" varStatus="lastValue">
		<p>
			i = ${i}
			<c:if test="${lastValue.last}">
				last = ${i}
			</c:if>
		</p>
	</c:forEach>
	
	<!-- forEach 구문 -->
	<c:forEach var="eachValue" items="${list}" varStatus="varValue">
		<p>(${varValue.index}) = ${eachValue.listAttribute}</p>
	</c:forEach>
	
	<!--  JSTL Formating  -->
	
	<!--  날짜 패턴 변화 	-->	
	<p>
		pattern 1 :
		<fmt:formatDate value="${now}" pattern="yyyy-MM-dd" />
	</p>
	<p>
		pattern 2 :
		<fmt:formatDate value="${now}" pattern="yyyy-MM-dd  hh:mm:ss" />
	</p>

	<!--  JSTL Function  -->
	
	<!--  문자열 Function을 불러서 사용할 수 있씁니다. 	-->	

	<p>${fn:substring(helloJSTL,3,6)}</p>
</body>
</html>