[목차]

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}">&nbsp;</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"/>

+ Recent posts

1