●개요
- 표현언어(Expression Language)는 처음에는 JSTL의 부분으로 사용 되었으나 JSP2.0부터는 기본 스펙에 포함됨
-자바 빈즈 속상 값을 보다 쉽고 제약을 덜 받는 방법으로 사용하기위해 나옴
● 표현 언어 기본 개념
-액션 태그 및 JSP 표현식을 사용한 경우
<H2>
<jsp:useBean id="test" class"TestBean"/>
<%=test.getName()%>
</H2>
-표현언어를 사용한경우
<H2>
${test.name}
</H2>
● 기본문법 요약
- 표현언어는 "$"로 시작한다.
- 모든내용은 "{표현언어}" 과 같이 구성된다
- 표현식에는 기본적으로 변수명,혹은 속성명,메서드명 구조로 이루어 진다.
- 표현식에는 부가적으로 숫자, 문자열, boolean, null과 같은 상수값도 올 수 있다.
- 표현식에는 기본적인 연산이 가능하다
● JSTL 코어 라이브러리 개요
- 수식, 흐름제어, URL을 통한 자원 접근 등 가장 일반적으로 필요한 기능으로 구성
- CORE태그는 반드시 알아두어야 함
- CORE이외의 다른 라이브러리는 JSTL 이외에도 많이 개발 되어 있으며 경우에 따라서는 직접 커스텀 태그로 구현하는 것이 좋을수도 있음
코어 라이브러리
- <c:remove> 태그
해당 scope의 변수(객체) 삭제
<c:remove var="varName" [scope="{ page | request | session | application }"]>
| 속성 | 필수 | 기본값 | 설명 |
| var | Y | 없음 | 삭제할 변수명 |
| scope | N | 모든 범위 | 삭제할 범위 |
- <c:catch> 태그바디에서 실행되는 코드의 예외를 잡아냄
<c:catch [var="varName"]>
nested actions
</c:catch>
| 속성 | 필수 | 기본값 | 설명 |
| var | Y | 없음 | 에러 메세지를 저장할 변수명 |
- <c:if>태그
조건이 맞는 경우 태그 바디부분 처리. if와 유사하지만 else는 지원하지 않음
1.바디 내용이 없는 경우
<c:if test="testCondition" var="varName" scope="{ page | request | session | application }"]/>
2. 바디 내용이 있는 경우
<c:if test="testCondition" [var="varName"] [scope="{ page | request | session | application }"]>
body content
</c:if>
| 속성 | 필수 | 기본값 | 설명 |
| test | Y | 없음 | 검사할 조건 |
| var | N | 없음 | test조건의 결과를 저장할 변수 (true 혹은 false) |
| scope | N | page | 변수가 저장될 범위 |
- <c:choose>, <c:when>, <c:otherwise> 태그
switch 문과 유사한 기능, 하나의 choose 태그에는 여러 개의 when 태그가 존재
<c:choose>
body content (<when> and <otherwise> subtags)
<c:when test="testCondition">
body content
</c:when>
<c:otherwise>
conditional block
</c:otherwise>
</c:choose>
| 속성 | 필수 | 기본값 | 설명 |
| test | Y | 없음 | 검사할 조건 |
- <c:forEach> 태그
자바의 for 문과 유사하며 가장 유용한 JSTL 태그 중 하나임
1. 컬렉션 객체의 크기만큼 반복
<c:forEach[var="varName"] items="collection" [varStatus="varStatusName"][begin="begin]
[end="end"] [step="step"]>
body content
</c:forEach>
2. 지정된 횟수 반복
<c:forEach [var="varName"] [varStatus="varStatusName"]
begin="begin" end="end" [step="step"]>
body content
</c:forEach>
| 속성 | 필수 | 기본값 | 설명 |
| items | N | 없음 | 반복을 위한 데이터를 가진 아이템을 컬렉션 |
| begin | N | 0 | 반복 시작 번호 |
| end | N | 컬렉션의 마지막 값 | 반복 끝 번호 |
| step | N | 1 | 반복의 증가분 |
| var | N | 없음 | 현재 아이템을 가지고 있는 변수 |
| varStatus | N | 없음 | 반복 상태 값을 가지고 있는 변 |
- <c:forTokens> 태그
자바의 StringTokenizer 클래스 기능을 제공함
<c:forTokens items="stringOfTokens" delims="delimiters" [var="varName"]
[varStatus="varStatusName"]
[begin="begin"] [end="end"] [step="step"]>
body content
</c:forTokens>
| 속성 | 필수 | 기본값 | 설명 |
| items | N | 없음 | 반복을 위한 데이터를 가진 아이템의 컬렉션 |
| delims | Y | 없음 | 구분자(Delimeter)로 사용할 문자 |
| begin | N | 0 | 반복 시작 번호 |
| end | N | 컬렉션의 마지막 값 | 반복 끝 번호 |
| step | N | 1 | 반복의 증가분 |
| var | N | 없음 | 현재 아이템을 가지고 있는 변수 |
| varStatus | N | 없음 | 반복 상태 값을 가지고 있는 변 |
- <c:import> 태그
특정 URL 페이지를 현재 페이지에 포함, <jsp:include> 액션과 유사함
1.포함 하고자 하는 자원을 문자열 형태로 포함하는 경우
<c:import url="url" [context="context"] [var="varName"] [scope="{ page | requese | session | application}"]
[charEncoding="charEncoding"]>
optional body content for <c:param> subtags
</c:import>
2. 포함 하고자 하는 자원을 Reader 객체로 포함하는 경우
<c:import url="url" [context="context"] varReader="varReaderName" [charEncoding="charEncoding"]>
body content where varReader is consumed by another action
</c:import>
| 속성 | 필수 | 기본값 | 설명 |
| url | Y | 없음 | 현재 페이지 내에 포함시킬 URL |
| context | N | Current application | 현재 웹 애플리케이션 컨텍스트 이름 |
| charEncoding | N | ISO-8859-1 | 현재 페이지 내에 포함시킬 페이지 캐릭터셋 지정 |
| var | N | Print to page | 포함할 페이지의 내용을 가지는 변수명 |
| scope | N | page | var의 범위 |
| varReader | N | 없음 | 자원 내용을 읽기 위한 java.io.Reader 변수 |
- <c:url> 태그
URL Rewriting 방식으로 URL 정보를 다룬다
1. 바디가 없는 경우
<c:url value="value" [context="context"] [var="varName"] [scope="{ page | request | session |
application }"]/>
2.바디가 없는경우
<c:url value="value" [context="context"] [var="varName"] [scope="{ page | request | session |
application }"]/>
<c:param> subtags
</c:url>
| 속성 | 필수 | 기본값 | 설명 |
| value | Y | 없음 | 기본 URL |
| context | N | Current application | 현재 웹 애플리케이션의 컨텍스트 이름 |
| var | N | Print to page | 포함할 페이지의 내용을 가지는 변수명 |
| scope | N | page | var의 범 |
- <c:redirect> 태그
response.sendRedirect() 나 <jsp:forward> 액션 대신 사용할 수 있다.
1. 바디가 없는 경우
<c:redirect url="value" [context="context"]/>
2. 바디가 있는 경우
<c:redirect url="value" [context="context"]/>
<c:param> subtags
</c:redirect>
| 속성 | 필수 | 기본값 | 설명 |
| value | Y | 없음 | 기본 URL |
| context | N | Current application | 현재 웹 애플리케이션의 컨텍스트 이 |
- <c:param> 태그
import, url, redirect 태그에서 파라미터 값을 설정 할 때 사용
1. 바디가 없는 경우
<c:param name="name" value="value"/>
2. 바디 내용을 속성 값으로 사용하는 경우
<c:param name="name">
parameter value
</c:param>
| 속성 | 필수 | 기본값 | 설명 |
| url | Y | 없음 | 현재 페이지 내에 포함시킬 URL |
| context | N | Current application | 현재 웹 애플리케이션 컨텍스트 이름 |
'Java' 카테고리의 다른 글
| [Java] 배열 복사 (Shallow Copy, Deep Copy) (2) | 2024.05.31 |
|---|---|
| [Project] 영화 데이터베이스 웹 페이지 제작 ( 1 ) (0) | 2024.05.31 |
| [Spring / JAVA] 의존성 주입 DI (Dependency Injection) (1) | 2023.10.24 |
| MVC Pattern (0) | 2023.10.23 |