EL(Expression Language)/JSTL(JavaServer Pages Standard Tag Library)
JEL은 자바 웹 어플리케이션에서 사용되는 스크립팅 언어로 JSP에서 데이터를 검색, 조작 및 표현하기 위한 편리한 언어이다.
<c:set/> 예제
<c:set var="message" value="Hello, World!" />
<!-- "message"라는 변수를 설정하고 값을 할당합니다. -->
<p>${message}</p>
<!-- 변수 "message"의 값을 출력합니다. -->
'<c:set/>'을 사용하여 JSP 페이지에서 변수를 설정할 수 있다. 이 변수는 나중에도 사용이 가능하고 다른 JSTL 태그 및 EL에서 참조될 수 있다.
<c:if> 예제
<c:if test="${vo.boardAvailable == 0}">
<!-- 조건이 참일 때 이 내용을 표시합니다. -->
<p>이 내용은 조건이 참일 때만 보입니다.</p>
</c:if>
<c:forEach> 예제
<c:forEach items="${userList}" var="user" varStatus="i">
<!-- userList에 있는 각 사용자에 대한 내용을 표시합니다. -->
<p>사용자 이름: ${user.name}, 나이: ${user.age}</p>
</c:forEach>
'${userList}'는 순회할 목록이고, 'var="user"'는 각 요소를 참조할 변수 이름을 나타낸다.
'${user.name}' 및 '${user.age}'와 같이 사용자의 속성에 접근한다.
forEach문에서는 items, var, varStatus, 가 있다.
items : 순회할 목록이다.
var : 현재 반복중인 요소를 참조할 변수를 정의한다.
varStatus : 현재 반복 상태 정보를 저장하는 변수를 정의한다. 이를 사용하면 현재 반복이 몇 번째인지 알 수 있다.(x 번째 글)
EL은 java에 저장된 아무 변수의 값을 꺼내서 쓸 수 있는 것이 아니라 SCOPE에 저장된 값만 꺼내서 쓸 수 있다.(page, request, session, application)
<%
pageContext.setAttribute("num",10)
%>
${num} <!-- 10 -->
<%
MemberDTO dto = new MemberDTO("pcw","1234","장구오빠","수리산")
pageContext.setAttribute("dto",dto);
%>
<!-- page 스코프에 있는 dto의 id값을 웹페이지에 표현해보자! -->
${dto.id} <!-- pcw -->
EL을 사용하여 dto안에 있는 private 필드값을 가져오기 위해서는 반드시 getter메소드가 필요하다.
empty
EL에서는 없는 값을 입력해도 오류가 발생하지 않는다.
<!-- vo는 현재 비어있는 상태입니다 -->
${vo}
오류가 발생하지 않는다.
<!-- vo는 현재 비어있는 상태입니다 -->
${empty vo}
true로 반환한다.
스코프 영역별 호출
<%
pageContext.setAttribute("name","강호동")
request.setAttribute("name","김흥국")
session.setAttribute("name","김종국")
application.setAttribute("name","송민호")
%>
${sessionScope.name}
김종국을 출력하게 된다.
만약에 동일한 이름의 값이 여러 영역에 들어가있다면 EL은
page -> request -> session -> application 순서로 찾게된다.