-
[ EL, JSTL ]PROGRAMMING/model2 2022. 7. 4. 23:34
하루입니다.
EL
- 값을 표현할 때 사용되는 스크립트 언어이다.
- 요청파라미터값, 초기화파라미터값, 요청객체 / 속성객체 등의 속성값, 요청헤더정보, 쿠키값 등 표현 가능
- 사칙연산, 비교연산, 논리연산자, 기타 연산자 제공
- 형식 : ${EL표현식 }
EL의 연산자
덧셈 + 뺼셈 - 곱셈 * 나눗셈 / 혹은 div 나머지 mod 크다 > 혹은 gt 크거나 같다 >= 혹은 ge 작다 < 혹은 lt 작거나 같다 <= 혹은 le 같다 == 혹은 eq 같지 않다 != 혹은 ne 삼항연산 이게 사실이라면 ? 값1 : 아니면 값2 비어있다 empty (혹은 not empty)
empty가 true인 경우
1. 값이 null일 때
2. "" 빈 문자열일 때
3. 배열이나 콜렉션의 길이가 0일 때
4. 비어있는 map일 때
실습
요청객체의 속성에 값을 담았다. 내부이동을 통해 값을 전해줬다 (요청객체를 통해).
// 문자열, 정수, 실수를 속성값으로 저장하기 request.setAttribute("name", "김가가"); request.setAttribute("price", 15000); request.setAttribute("amount", 4); request.setAttribute("discountRate", 0.15); // VO객체를 속성값으로 저장하기 user.setId("abc1234"); user.setName("김나나"); request.setAttribute("guest", user); // Map 객체를 속성값으로 저장하기 Map<String, Object> studentMap = new HashMap<String, Object>(); studentMap.put("name", "김다다"); studentMap.put("kor", 100); studentMap.put("eng", 80); studentMap.put("math", 90); request.setAttribute("student", studentMap); // 배열객체를 속성값으로 저장하기 String[] teams = {"ATeam", "BTeam", "CTeam", "DTeam", "ETeam", "FTeam"}; request.setAttribute("teams", teams);EL을 통해 값을 가져온다
<h3>속성값이 문자열, 정수, 실수인 것 표현하기</h3> <ul> <li>${name }</li> <li>가격 ${price }</li> <li>할인율 ${discountRate }</li> <li>할인금액 ${(price * amount)*discountRate }</li> </ul> <h3>속성값이 VO 객체인 것 표현하기</h3> <dl> <dt>아이디</dt><dd>${guest.id }</dd> <dt>이름</dt><dd>${guest.name }</dd> </dl> <h3>속성값이 Map객체인 것 표현하기</h3> <dl> <dt>학생이름</dt><dd>${student.name }</dd> <dt>국어점수</dt><dd>${student.kor }</dd> <dt>수학점수</dt><dd>${student.eng }</dd> <dt>영어점수</dt><dd>${student.math }</dd> <dt>총점</dt><dd>${student.kor + student.eng + student.math }</dd> <dt>평균</dt><dd>${(student.kor + student.eng + student.math)/3 }</dd> <dt>평균</dt><dd>${(student.kor + student.eng + student.math) div 3 }</dd> </dl> <h3>속성값이 배열 혹은 리스트인 것 표현하기</h3> <ul> <li>${teams[0] }</li> <li>${teams[1] }</li> <li>${teams[2] }</li> <li>${teams[3] }</li> <li>${teams[4] }</li> <li>${teams[5] }</li> </ul> <h3>세션에 저장된 로그인된 사용자 정보</h3> <p>${LOGIN_USER.name }님 환영합니다.</p>결과물
속성값이 문자열, 정수, 실수인 것 표현하기
- 김가가
- 가격 15000
- 할인율 0.15
- 할인금액 90000.0
속성값이 VO객체인 것 표현하기
- abc1234
- 김가가
속성값이 Map 객체인 것 표현하기
- 학생이름 김나나
- 국어점수 100
- 수학점수 80
- 영어점수 90
- 총점 270
- 평균 90.0 -> div든 /든 같은 결과 나온다.
속성값이 배열 혹은 리스트인 것 표현하기
- ATeam
- BTeam
- CTeam
- DTeam
- ETeam
- FTeam
세션에 저장된 로그인된 사용자 정보
- 김가가 님 환영합니다.


그런데 EL만으로는 for문 if문 이런 걸 사용할 수가 없어요. 어떻게 하느냐? JSTL을 사용하면 됩니다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>1. <c:out> 태그
- ${표현식 } 과 동일한 작업을 수행한다. (값 출력)
- 취약점 공격에 대한 가장 기본적인 방어를 지원한다. 누군가 자바스크립트에 악의적 코드를 넣었을 때 작동하지 않게 한다. 사이트 이용자가 작성하는 콘텐츠는 반드시 <c:out> 태그를 사용하자.
- 블로그, 게시글 이런 건 el을 사용해도 된다.

위는 ${ }로, 밑은 <c:out>으로 표현했다. 2. <c:if>
// c:if와 empty, 배열을 사용한 코딩 <c:if test="${not empty names }"> <!-- names로 찾은 속성값이 비어있지 않으면 true이다. --> <p>참가자 명단</p> <ul> <li>${names[0] }</li> </ul> </c:if> <c:if test="${empty names }"> <!-- names로 찾은 속성값이 비어있으면 true이다. --> <p>참가자가 없습니다.</p> </c:if>3. <when, otherwise, choose>
<p>고객의 등급에 따라서 포인트 적립액을 다르게 출력하기</p> <dl> <dt>고객명</dt> <dd>${customerName }</dd> <dt>고객등급</dt> <dd>${customerGrade }</dd> <dt>주문금액</dt> <dd>${orderPrice }</dd> <dt>포인트 적립액</dt> <c:choose> <c:when test="${customerGrade == 'gold' }"> <dd>${orderPrice*0.03 }</dd> </c:when> <c:when test="${customerGrade eq 'silver' }"> <dd>${orderPrice*0.01 }</dd> </c:when> <c:when test="${customerGrade eq 'bronze' }"> <dd>${orderPrice*0.05 }</dd> </c:when> <c:otherwise> <dd>0</dd> </c:otherwise> </c:choose>4. <c:foreach>
// var="user" -> User객체 들어있다. // user 변수에는 반복을 수행할 때마다 ArrayList에 저장된 User 객체가 순서대로 하나씩 전달된다. // items="${users }" -> ArrayList [User 객체, User 객체, User 객체, User 객체, User 객체] 들어있다. // users에서 꺼낸 걸 user에 담겠다. <c:forEach var="user" items="${users }"> <tr> <td>${user.id }</td> <td>${user.email }</td> <td>${user.name }</td> <td>${user.tel }</td> </tr> </c:forEach>포맷팅 태그
가격 : <fmt:formatNumber>
날짜 : <fmt:formatDate>
숫자 / 날짜를 형식화된 문자열로 표현하고, 국제화처리를 지원한다.
<p>가격: ${price }원</p> <p>가격: <c:out value="${price }" />원</p> <p>가격: <fmt:formatNumber value="${price }" />원</p> <p>가격: <fmt:formatNumber value="${price }" pattern="#,###" />원</p> <p>날짜: ${today }</p> <p>날짜: <c:out value="${today }" /></p> <p>날짜: <fmt:formatDate value="${today }" /></p> <p>날짜: <fmt:formatDate value="${today }" pattern="yyyy-MM-dd" /></p> <p>날짜: <fmt:formatDate value="${today }" pattern="yyyy.MM.dd" /></p> <p>날짜: <fmt:formatDate value="${today }" pattern="yyyy/MM/dd" /></p> <p>날짜: <fmt:formatDate value="${today }" pattern="yyyy-MM-dd EEEE" /></p> <p>날짜: <fmt:formatDate value="${today }" pattern="HH:mm:ss" /></p> <p>날짜: <fmt:formatDate value="${today }" pattern="hh:mm:ss" /></p> <p>날짜: <fmt:formatDate value="${today }" pattern="a hh:mm:ss" /></p> <p>날짜: <fmt:formatDate value="${today }" pattern="a h시 m분 s초" /></p>
감사합니다좋은하루되세요
'PROGRAMMING > model2' 카테고리의 다른 글
[ model2 ] 모델2 개발방식, MVC 패턴 (0) 2022.06.30