[JSP] 5. EL(Expression Language) 과 JSTL(JSP Standard Tag Library)
이전 글([JSP] 4. jsp의 scope 정리)
다음 글([JSP] 6. Maven 이란?)
1. EL(Expression Language)
- JSP에서 값을 표현하는데 사용되는 스크립트 언어이다.
- JSP에서의 기본 문법을 보완하는 역활을 한다.
2. EL 문법
- ${expr}
- expr은 jsp에서 사용된는 변수가 될 수 있고 수식이 들어갈 수 있다.
3. 사용 가능 위치
- jstl같은 코드내부에서 사용가능
<jsp:include page="/module/${skin.id}/header.jsp" flush="true" />
- 태그 사이에서 사용 가능
<b>${sessionScope.member.id}</b> 환영.
4. expr에서 사용가능 한 것들
1) 사용가능 한 리스트
A JSP의 스코프(scope)의 속성을 쉽게 출력 할수 있는 방법 제공
B 집합 객체(Collection 등...)에 속해있는 객체 대해 쉽거 출력 할 수 있는 방법 제공
C 수치 연산, 비교 연산자, 논리 연산자 제공
D 자바 클래스 메소스 호출 기능 제공
E 표현언어만의 기본 객체 제공
1-A) JSP의 스코프(scope)의 속성을 쉽게 출력 할수 있는 방법 제공
- requset Scope에서 attribute값을 사용하려면
>java코드의 경우
request.getAttribute("name")
>EL의 경우
${requestScope.name}
1-B) 집합 객체(Collection 등...)에 속해있는 객체 대해 쉽거 출력 할 수 있는 방법 제공
- 문법 : ${<표현1>.<표현2>} 여기서 표현1은 리스트일경우 표현2는 리스트 번호가 된다.
1-C) 수치 연산, 관계연산, 논리 연산자 제공
(1) 수치 연산
+ : 덧셈 |
- : 뺄셈 |
* : 곱셈 |
/ 또는 div : 나눗셈 |
% 또는 mod : 나머지 |
숫자가 아닌 객체와 수치 연산자를 사용할 경우 객체를 숫자 값으로 변환 후 연산자를 수행 : ${"10"+1} → ${10+1} |
숫자로 변환할 수 없는 객체와 수치 연산자를 함께 사용하면 에러를 발생 : ${"열"+1} → 에러 |
수치 연산자에서 사용되는 객체가 null이면 0으로 처리 : ${null + 1} → ${0+1} |
(2) 비교 연산
== 또는 eq |
!= 또는 ne |
< 또는 lt |
> 또는 gt |
<= 또는 le |
>= 또는 ge |
문자열 비교: ${str == '값'} str.compareTo("값") == 0 과 동일 |
(3) 논리 연산자
&& 또는 and |
|| 또는 or |
! 또는 not |
1-D) 자바 클래스 메소스 호출 기능 제공
- 클래스에서 getName함수로 호출 하는 값을 EL으로 간현하게 사용할수 잆다.
- ${student.name}
1-E) 표현언어만의 기본 객체 제공
- 다음 기본 객체는 EL에서 바로사용 가능한 객체들이다.
5. EL 예제 코드(출처 : edwith.org)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
pageContext.setAttribute("p1", "page scope value");
request.setAttribute("r1", "request scope value");
session.setAttribute("s1", "session scope value");
application.setAttribute("a1", "application scope value");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
pageContext.getAttribute("p1") : ${pageScope.p1 }<br>
request.getAttribute("r1") : ${requestScope.r1 }<br>
session.getAttribute("s1") : ${sessionScope.s1 }<br>
application.getAttribute("a1") : ${applicationScope.a1 }<br>
<br><br>
pageContext.getAttribute("p1") : ${p1 }<br>
request.getAttribute("r1") : ${r1 }<br>
session.getAttribute("s1") : ${s1 }<br>
application.getAttribute("a1") : ${a1 }<br>
</body>
</html>
JSTL(JSP Standard Tag Library)
1. JSTL(JSP Standard Tag Libray)
- jsp 페이지에서 조거문 처리, 반복문 처리등을 html tag 형태로 작성할수 있게 도와준다.
- EL과의 차이점은 EL은 단순히 변수를 표현해 주는것이므로 다향한 형태로 jsp를 사용할수 없다.
- JSTL의 상용 목적은 스크릿을 대체 하기 위함이다.
- JSTL은 커스텀 Tag이다.
2. JSTL 사용법
- JSTL은 추가 적인 jar 파일이 필요하다
- http://tomcat.apache.org/download-taglibs.cgi 여기에서 다음의 파일 3개의 받은 후 WEB-INF/lib/ 에 복사하면된다
3. JSTL 라이브러리 종류 및 기능
(출처: http://youssol.tistory.com/8 [초인, 초월이네 이야기])
라이브러리 | 하위 기능 | 접두어 | 관련 URI |
코어 | 변수 지원, 흐름 제어, URL 처리 | c | http://java.sun.com/jsp/jstl/core |
XML | XML 코어, 흐름제어, XML 변환 | x | http://java.sun.com/jsp/jstl/xml |
국제화 | 지역, 메세지 형식, 숫자 및 날짜 형식 | fmt | http://java.sun.com/jsp/jstl/fmt |
데이터베이스 | SQL | sql | http://java.sun.com/jsp/jstl/sql |
함수 | 콜렉션 처리, String 처리 |
| http://java.sun.com/jsp/jstl/functions |
4. Core(코어) 라이브러리에서 사용 할 수 있는 기능
5. JSTL 상용 하기 위한 설정
- JSTL을 사용하기 위해서는 새로운 지시자를 만들어아햔다
- Core라이브러리의 접수어는 c이므로 prefix를 c로 해준다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
6. JSTL 태그 사용법
==================================== 변수 지원 ====================================
1) set
<c:set var="varnname" scope="request" value="someValue"/>
또는
<c:set var="varnname" scope="request">
some value
</c:set>
- scope : 변수를 저장할 영역
<c:otherwise>
...
</c:otherwise>
</c:choose>
5) forEach
<c:forEach var="변수" items="아이템(배열또는 맵이 들어간다)" [begin="시작번호"] [end="끝번호"]>
${변수}
</c:forEach>
6) forToken
<c:forTokens items="123-456-789" delims="-" var="sel">
${sel}
</c:forTokens>
- items : 자를 문자열
- delims : 구분 문자열
- val : 자른 문자열이 저장될 변수
==================================== url 처리 ====================================
7) import
<c:import url="URL" charEncoding="캐릭터인코딩" var="변수명" scope="범위">
<c:param name="파라메터이름" value="파라메터값"/>
</c:import>
- URL : 결과를 읽어올 URL
- charEncoding : 읽어온 결과를 저장할때 사용하는 캐릭터 인코딩
- var : 읽어온 결과를 저장할 변수명
- scope : 변수를 저장할 영역
- <c:param> 태그는 url 속성에 지정한 사이트에 연결 할때 전송할 파라메터 정보
8) redirect
<c:redirect url="redirect할 URL">
<c:param name="파라메터이름" value="파라메터값"/>
</c:redirect>
- url : redirection 할 주소
- <c:param> 태그는 url 속성에 지정한 사이트에 연결 할때 전송할 파라메터 정보
9) url
<c:url var="URL 저장 변수" value="URL" scope="변수 공유 범위" />
- var : 생성한 URL을저 장할 변수명
- value : 생성할 URL
- scope : 변수를 저장할 영역
- <c:param> 태그는 url 속성에 지정한 사이트에 연결 할때 전송할 파라메터 정보
==================================== 기타 태그 ====================================
10) catch
<c:catch var ="catchException">
<% int x = 5/0;%>
</c:catch>
<c:if test = "${catchException != null}">
<p>The exception is : ${catchException} <br />
There is an exception: ${catchException.message}</p>
</c:if>
- var : 예외처리 결과가 저장될 변수명
11) out
<c:out value="value" escapeXml="{true|fale|" default="default value"/>
- value : JspWrite에 출력할 값을 나타낸다. 일반적으로 value속성의 값을 String과 같은 문자열이다. 만약 value의 값이 java.io.Reader의 한 종류라면 out 태그는 Reader로 부터 데이터를 읽어와서 JspWrite에 값을 출력한다.
- escapeXml : true일 경우 아래 와같이 문자를 변경한다.
문자 | 변경될 형태 |
< |
< |
> |
> |
& |
& |
' |
' |
" |
" |
- default : value 속성에 지정한 값이 존재하지 않을때 상용될 값을 지정한다.
이전 글([JSP] 4. jsp의 scope 정리)
다음 글([JSP] 6. Maven 이란?)
'ProgrammingLang > JSP' 카테고리의 다른 글
[JSP] 7. Maven에서 JDBC를 이용한 DB연결 방법 (0) | 2018.08.12 |
---|---|
[JSP] 6. Maven 이란? (0) | 2018.08.09 |
[JSP] 4. jsp의 scope 정리 (0) | 2018.06.24 |
[JSP] 3. redirect 와 forward (0) | 2018.06.24 |
[JSP] 2. jsp 기본 문법 (0) | 2018.06.23 |