EL(Expression Language)
*용도:
자바 빈의 프로퍼티나 맵, 리스트, 배열의 값을 보다 쉽게 꺼내게 해주는 기술. JSP에서는 주로 보관소에 들어 있는 값을 꺼낼 때 사용. EL을 사용하면 액션 태그를 사용하는 것보다 훨씬 더 간단히 보관소에 들어 있는 객체에 접근하여 값을 꺼내거나 메서드를 호출할 수 있다.
*검색범위 지정:
pageScope → JspContext
requestScope → ServletRequest
sessionScope → HttpSession
applicationScope → ServletContext
**EL이 공유공간에 접근할 때 영역(Scope)을 지정하지 않으면
pageScope-> requestScope -> sessionScope -> applicationScope 범위가 작은 공간순으로 접근한다.
* 배열에서 값 꺼내기
<%
request.setAttribute("scores", new int[]{90,80,70,100});
%>
${requestScope.scores[2]}<br>
${scores[2]}<br>
*List 객체에서 값 꺼내기
<%
List<String> nameList = new LinkedList<String>();
nameList.add("홍길동");
nameList.add("일지매");
nameList.add("장길산");
request.setAttribute("nameList", nameList);
%>
${nameList[1] }<br>
${nameList[2] }<br>
* Map 객체에서 값 꺼내기
<%
Map<String, String> map = new HashMap<String, String>();
map.put("s01", "홍길동");
map.put("s02", "일지매");
map.put("s03", "장길산");
request.setAttribute("map", map);
%>
${map.s02}<br>
${map.s01}<br>
JSTL(JSP Standard Tag Library)
* 준비: JSTL 태그 라이브러리 선언이 필요하다
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
* 용도:
EL과 함께 사용되어 JSP에서의 자바코딩을 줄임으로 디자이너 및 퍼블리셔와의 작업을 원활하게 할 수 있다. EL이 가지지 못한 조건문/반복문의 사용이 특히 중요하다. Map, List, 배열을 forEach으로 접근할 수 있으며, if문도 사용 가능, switch~case문 사용도 가능하다.
* 문법: c:out은 value값이 출력되고 null이면 문자열이 출력된다
<c:out value="안녕하세요"/><br>
<c:out value="${null}">반갑습니다</c:out><br>
<c:out value="안녕하세요">반갑습니다</c:out><br>
<c:out value="${null}"/><br>
* set tag : 공유저장공간을 지정해주지 않으면 jspContext(현재 페이지)에 저장
<h3>값 설정 방식</h3>
<c:set var="username1" value="홍길동"/>
<c:set var="username2">임꺽정</c:set>
${username1}<br>
${username2}<br>
<h3>기본 보관소 - page</h3>
${pageScope.username1}<br>
${requestScope.username1}<br>
<h3>보관소 지정 - scope 속성</h3>
<c:set var="username3" scope="request">일지매</c:set>
${pageScope.username3}<br>
${requestScope.username3}<br>
<h3>기존의 값 덮어씀</h3>
<%
pageContext.setAttribute("username4", "아이유");
%>
기존 값=${username4}<br>
<c:set var="username4" value="하이유"/>
새 값=${username4}<br>
* if tag
<c:if test="${10 > 20}" var="result1">
10은 20보다 크다<br>
</c:if>
${result1}<br>
<c:if test="${10 < 20}" var="result2">
10은 20보다 작다<br>
</c:if>
${result2}<br>
* choose tag(자바에서의 switch~case문)
<c:set var="userid" value="admin"/>
<c:choose>
<c:when test="${userid=='hong'}">홍길동님 반갑습니다.</c:when>
<c:when test="${userid=='leem'}">임꺽정님 반갑습니다.</c:when>
<c:when test="${userid=='admin'}">관리자 전용 페이지입니다.</c:when>
<c:otherwise>등록되지 않은 사용자입니다.</c:otherwise>
</c:choose>
* forEach tag :
java.util.collection 구현체(ArrayList, LinkedList, Vector, EnumSet 등), java.util.Iterator 구현체, java.util.Enumeration 구현체, java.util.Map 구현체에서 반복문 사용 가능
<%
request.setAttribute("nameList", new String[]{"혜영", "양희", "강일", "수지", "은진"});
%>
<ul>
<c:forEach var="name" items="${nameList}" begin="1" end="3">
<li>${name}</li>
</c:forEach>
</ul>
<%
ArrayList<String> nameList3 = new ArrayList<String>();
nameList3.add("류혜영");
nameList3.add("하양희");
nameList3.add("서강일");
nameList3.add("이은진");
nameList3.add("한소미");
request.setAttribute("nameList3", nameList3);
%>
<ul>
<c:forEach var="name" items="${nameList3 }">
<li>${name}</li>
</c:forEach>
</ul>
'Programming > Java * Spring' 카테고리의 다른 글
[JSP] 리플렉션 API를 사용한 프론트 컨트롤러 자동화 (0) | 2019.06.12 |
---|---|
[JSP] DataSource의 장점과 셋팅 방법 (0) | 2019.06.11 |
[JSP] JSP의 주요 구성 요소(템플릿 데이터, JSP 지시자, 스크립트릿, JSP 선언문, JSP 표현식) (0) | 2019.06.03 |
[JSP] JSP의 구동 원리 (0) | 2019.06.03 |
[Java] 16. Annotation의 개념과 활용 (0) | 2019.06.03 |