ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ 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
Designed by Tistory.