1. 표준 액션 태그
2. 확장 액션 태그(EL, JSTL)
1. 표준 액션 태그
[ 정의 ]
- XML 기술을 이용해서 기존의 JSP 문법을 확장해준 매커니즘으로 JSP 규격서에 정의되어 있는 기술이다.
- XML 태그 형태를 띄기 때문에 액션태그(action tag)라고도 부르며, 간단히 액션(action)이라고 한다. 왜냐하면 이런 태그가 어떤 동작(action)을 수행하는 역할을 하기 때문이다.
- <jsp:include>, <jsp:forward>
[ 표준 액션 태그 예시 ]
<!-- <%@ include file="/*.jsp" %> 랑 동일하다. -->
<jsp:include page="/*.jsp"></jsp:include>
<!-- pageContext.forward("*.jsp);랑 동일하다. -->
<jsp:forward page="*.jsp"></jsp:forward>
2. 확장 액션 태그(EL, JSTL)
[ 정의 ]
- JSP 표준 액션 태그의 버전업
- 추가 설치가 필요하다. ( JSTL )
- JSP 페이지에서 자바 구문을 사용하지 않기 위해서 만들어 졌다.
- 달러 표시로 내장 객체를 나타낸다.
- $ { }
[ EL, Expression Language ]
- 표현식 언어
- 내장 객체(pageContext, request, session, application)에 들어있는 데이터를 HTML 소스에 출력하는 언어이다.
[ EL 예제 - 자바 표현식과 EL 표현식의 비교 ]
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
// 평범한 지역 변수
int a = 10;
// 내장 객체 변수
pageContext.setAttribute("b", 20);
request.setAttribute("c", 30);
session.setAttribute("d", 40);
application.setAttribute("e", 50);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h2>Java 표현식</h2>
<div>평범한 지역 변수 a: <%= a %></div>
<div>내장 객체 변수 b: <%= pageContext.getAttribute("b") %></div>
<div>내장 객체 변수 c: <%= request.getAttribute("c") %></div>
<div>내장 객체 변수 d: <%= session.getAttribute("d") %></div>
<div>내장 객체 변수 e: <%= application.getAttribute("e") %></div>
<hr />
<h2>EL 표현식</h2>
<div>a: ${a}</div>
<div>b: ${b}</div>
<div>c: ${c}</div>
<div>d: ${d}</div>
<div>e: ${e}</div>
</body>
</html>
- 결과
EL 표현식은 내장 객체 변수만 출력하므로 지역 변수인 a는 출력 X
[ EL 표현식으로 할 수 있는 것들 ]
- EL 표현식으로 각종 연산을 할 수 있다.
- Java Object 및 HashMap을 EL 표현식으로 활용해서 출력을 지원할 수 있다.
- empty 연산자를 이용해서 데이터 유무를 확인 할 수 있다. ( 데이터가 있다면 false, 없다면 true )
[ JSTL ]
- 추가 설치가 필요하다.
- <c:XXX> 형식
- 프로그래밍 기능을 하는 태그이다.
- JSTL 변수는 내장 객체의 pageContext에만 추가되는 변수(속성)이다. (나머지는 X)
- JSTL에서 내장 객체 변수를 접근하려면 반드시 EL ( ${} )표현식을 사용한다.
[ JSTL 문법 ]
- JSTL은 XML 문법을 준수한다.(문법이 엄격하다.)
- ' / ' 코드 끝에 슬래쉬를 꼭 붙여줘야 한다.
[ 올바른 문법 ]
<c:set var="test" value="300"></c:set>
<c:set var="test" value="300" />
[ 에러 문법 ]
<c:set var="test" value="300">
[ JSTL 기본 예제 - 내장 객체의 변수인지 확인하기 ]
- <c:set>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!-- JSTL 설치 (Ctrl+Space 3번째 항목 core) -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h2>JSTL 변수 내장객체 확인 예제</h2>
<c:set var="a" value="30" /> // JSTL 변수 'a' 생성
<div>a: ${ a }</div>
<div>pageContext: <%= pageContext.getAttribute("a") %></div>
<div>request: <%= request.getAttribute("a") %></div>
<div>session: <%= session.getAttribute("a") %></div>
<div>application: <%= application.getAttribute("a") %></div>
</body>
</html>
- 결과
JSTL 변수는 pageContext에 추가되는 변수(속성)인 것을 확인할 수 있다.
[ JSTL 변수 삭제 예제 ]
- <c:remove>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!-- JSTL 설치 (Ctrl+Space 3번째 항목 core) -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h2>변수 삭제(웹 요소 삭제)</h2>
<c:set var="c" value="30" /> // JSTL 변수 'c' 생성
<c:remove var="c" /> // JSTL 변수 'c' 삭제
<div>c: ${ c }</div> <!-- 아무것도 안보임 (삭제됨) -->
<div>c: ${ empty c }</div> <!-- 좀더 정확히 확인을 위해 empty함수 사용 (true = 없음) -->
</body>
</html>
- 결과
삭제 됬는지 정확한 확인을 위해 empty를 사용했다.
[ JSTL 조건문 예제 ]
- <c:if>
- <c:choose>, <c:when>, <c:otherwise>
<c:set var="num" value="10" />
<h3>if문</h3>
<c:if test="${ num > 0 }">
<div>숫자 ${ num }는 양수 입니다.</div>
</c:if>
<c:if test="${ num <= 0 }">
<div>숫자 ${ num }는 양수가 아닙니다.</div>
</c:if>
<h3>switch case문 + 다중 if문</h3>
<c:choose>
<c:when test="${ num > 0 }">양수입니다.</c:when>
<c:when test="${ num < 0 }">음수입니다.</c:when>
<c:otherwise>0입니다.</c:otherwise>
</c:choose>
- 결과
[ JSTL 반복문 예제 ]
- <c:forEach var="" begin="" end="" step="">
- var 에는 c:set과 동일한 pageContext 내장 객체 변수이다.
- step 에는 양수가 들어가지 못한다.
<c:forEach var="i" begin="0" end="10" step="1">
<div>item ${ 10 - i }</div>
</c:forEach>
- 결과
[ JSTL 향상된 for문 예제 ]
- <c:forEach var="" items="$ { }">
<%
String[] color = { "빨강", "주황", "노랑", "초록", "파랑", "남색", "보라색" };
pageContext.setAttribute("color", color);
%>
<ol>
<c:forEach var="c" items="${ color }">
<li>${ c }</li>
</c:forEach>
</ol>
- 결과
'인천일보아카데미 > - 학습일지' 카테고리의 다른 글
[학습일지]JAVA교육일지 69일차 (SERVER)⭐ (0) | 2022.07.08 |
---|---|
[학습일지]JAVA교육일지 68일차 (SERVER)⭐ (0) | 2022.07.08 |
[학습일지]JAVA교육일지 65일차 (SERVER)⭐ (0) | 2022.07.07 |
[학습일지]JAVA교육일지 64일차 (SERVER)⭐ (0) | 2022.07.05 |
[학습일지]JAVA교육일지 63일차 (SERVER)⭐ (0) | 2022.07.05 |