[목차]
9. EL
[내용]
9. EL (Expression Language) : jsp는 문서내 <tag>와 java code를 혼용되게 사용하여 유지보수에 어려움이 있어
java code의 사용을 줄이기 위해 개발된 언어.(code를 더 단순화 시킴)
1) 연산자
- 산술
${3+4}
${5/4}, ${5 div 4}
${5%4}, ${5 mod 4}
- 관계
${3>4}, ${3 gt 4}
${3<=4}, ${3 le 4}
- 논리
${5>4 and 3<2}
- 3항
${5>4 ? 10:20}
2) life cycle이 다른 내장객체에 따른 데이터 공유
<%
request.setAttribute("a","air"); // 현재 페이지에서 유효
session.setAttribute("b","book"); // 설정시간 동안 유효
application.setAttribute("c","cat"); // 서비스가 유지되는 동안 사용. (지양)
%>
<%= request.getAttribute("a") %>
${requestScope.a}
${a} // requestScope는 생략가능
<%= session.getAttribute("b") %>
${sessionScope.b}
<%= application.getAttribute("c") %>
${applicationScope.c}
3) 지시자
<%@ page isELIgnored="true" %> // EL를 파싱하지않도록 설정. default는 false.
4) Parameter
- jsp
<%= request.getParameter("userName") %>
<%
String ir = request.getParameter("irum");
String[] su = request.getParameterValues("sung");
%>
<%= request.getHeader("host") %>
- EL
${param.userName}
${param.irum}
${param["irum"]}
${paramValues.sung[0] }
${paramValues.sung["1"] }
${header.host}
${header["host"]}
5) collection
<%
ArrayList list = new ArrayList();
list.add("kor");
list.add("eng");
request.setAttribute("list", list);
%>
- jsp
<%
ArrayList list2 = (ArrayList)request.getAttribute("list");
out.println(list.get(0));
out.println(list.get(1));
%>
- EL
${list[0]}
${list["1"]}
10. JSTL(Jsp Standard Tag Library) : jsp에 기능을 더 한 tag 라이브러리(메소드)
1) driver 추가
/context/WEB_INF/lib경로에 jstl-1.2.jar 추가
2) 지시자 추가
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
3) 변수
- 문자열
<c:set var="변수" value="값" scope="page"/> // scope에 request, session, application, page 사용 가능
<c:out value="${변수}"></c:out>
<c:set var="변수" scope="session">값</c:set>
<c:out value="${변수}"></c:out>
- 배열
<c:set var="aa" value="${header['User-Agent']}" scope="page"/>
<c:out value="${aa}"></c:out>
<c:remove var="aa" scope="page"/>
<c:out value="${aa}"></c:out>
- 숫자
<c:set var="num1" value="10"></c:set>
<c:set var="num2">20.5</c:set>
${num1+num2}
4) 조건문 if
<c:set var="bb" value="${'star' }"/>
<c:out value="${bb }"></c:out>
<c:if test="${bb == 'star' }">
// 실행문
</c:if>
<c:set var="cc" value=""/>
<c:out value="${cc }"></c:out>
<c:if test="${cc != '' && cc ne null}">
// 실행문
</c:if>
5) 조건문 choose
<c:choose>
<c:when test="${bb eq 'moon' }">
실행값1
</c:when>
<c:when test="${bb eq 'star' }">
실행값2
</c:when>
<c:otherwise>나머지경우</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${empty param.name }">
<form>
<input type="text" name="name">
<input type="submit" value="확인">
</form>
</c:when>
<c:when test="${param.name == 'admin' }">
관리자
</c:when>
<c:otherwise>
<c:out value="${param.name }"/>
</c:otherwise>
</c:choose>
6) 반복문 for each
<c:forEach var="cc" begin="1" end="10" step="1">
<c:out value="${cc }"/>
${cc }
</c:forEach>
<c:forEach var="i" begin="1" end="9">
3 * ${i } = ${3*i }<br>
</c:forEach>
7) 이중 for
<c:forEach var="h" items="${headerValues}">
<c:out value="${h.key}"></c:out>
<c:forEach var="i" items="${h.value}">
<c:out value="${i}"> </c:out>
</c:forEach>
</c:forEach>
8) collection
<%
HashMap map = new HashMap();
map.put("name","홍길동");
map.put("today",new Date());
%>
- map
<c:set var ="m" value="<%=map%>"/>
<c:forEach var = "mbc" items="${m}">
${mbc.key} : ${mbc.value}
</c:forEach>
- 배열
<c:set var ="arr" value="<%=new int[]{1,2,3,4,5}%>"/>
<c:forEach var = "i" items="${arr}" begin="2" end="4" step="1">
${i}
</c:forEach>
6) 문자열 분할
<c:forTokens var="animal" items="horse,tiger,lion,pig,cat" delims=",">
동물:${animal }
</c:forTokens>
<c:forTokens var="animal" items="horse,tiger*lion,pig*cat" delims=",*" varStatus="num">
${num.count}) ${animal}
</c:forTokens><br>
7) 숫자 및 날짜 출력 서식
- 지시자
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
숫자
<fmt:formatNumber value="12345.678" type="number"/>
통화
<fmt:formatNumber value="12345.678" type="currency" currencySymbol="W"/>
백분율
<fmt:formatNumber value="12345.678" type="percent"/><br>
소수 이하
<fmt:formatNumber value="12345.678" pattern="#,##0.00"/>
// 000.0은 무효라도 표시.(001.1)
// ###.#은 0 값이 자리숫 첫번째에 존재하면 표시하지않는다. (1.1)
<c:set var="now" value="<%= new Date() %>"></c:set>
<c:out value="${now}"></c:out>
날짜
<fmt:formatDate value="${now}" type="date"/>
<fmt:formatDate value="${now}" type="both" dateStyle="full" pattern="yyyy년MM월dd일"/>
<fmt:formatDate value="${now}" type="both" dateStyle="full" pattern="yyyy-MM-dd"/>
시간
<fmt:formatDate value="${now}" type="time"/>
'BACK END > Servlet' 카테고리의 다른 글
[Servlet] Servlet 정리8 - Mybatis (0) | 2021.01.06 |
---|---|
[Servlet] Servlet 정리7 - JDBC (0) | 2021.01.06 |
[Servlet] Servlet 정리5 - Ajax (0) | 2021.01.03 |
[Servlet] Servlet 정리4 - Cookie, Session (0) | 2021.01.02 |
[Servlet] Servlet 정리3 - jsp, mvc, forward, include, request (0) | 2020.12.30 |