개발 무지렁이

[JSP] 쉽게 사용하기 위한 표현언어 EL과 JSTL 본문

Backend/Servlet & JSP

[JSP] 쉽게 사용하기 위한 표현언어 EL과 JSTL

Gaejirang-e 2023. 4. 24. 22:14

속성값을 쉽게 사용하기 위한 표현언어 EL(Expression Language)


${ 표현식 }
jsp 2.0

⚠️ ${null} =
⚠️ 표현식은 연산가능함, 기본적으로 변수 or 메서드 구조

🚀 표현언어 EL의 내장객체: 생략가능하지만 생략했을 시, 속성을 '좁은 범위'부터 찾기 시작한다
  1) pageScope
  2) requestScope
  3) sessionScope
  4) applicationScope: 

  + setAttribute() / getAttribute()

  ⚠️ response는 Scope가 없다.


📌. empty, not empty

  ${empty param.id ? "Guest님" : param.id.concat("님")}<br> // param은 생략불가능
  ${not empty param.id ? param.id.concat("님") : "Guest님"}<br>
  ${param.id == null ? "Guest님" : param.id.concat("님")}

JSTL(Jsp Standard Tag Library)


  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

  // 한글인코딩  
  <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  
JSP에서 자주 사용하는 부분을 미리 태그(Tag)로 만들어 놓은 것.

📌. <c:out value="값" escapeXml="false" />: true, 값에 태그가 있으면 문자 그대로 출력
📌. <c:set var="변수명" value="값" scope="page" />: request, session, application

    <%
      MemberDAO dao = new MemberDAOImpl();
      List<Member> list = dao.selectAll();
      request.setAttribute("list", list); // EL에서 사용가능
    %>
    <table>
      <tr>
          <th>번호</th>
          <th>아이디</th>
          <th>이름</th>
          <th>나이</th>
          <th>주소</th>
      </tr>
      <c:choose>
        <c:when test="${empty requestScope.list || list.size() == 0}">
          <tr>
            <th colspan="5">검색된 정보가 없습니다.</th>
          </tr>
        </c:when>
        <c:otherwise>
          <c:forEach items="${list}" var="mem" varStatus="state">
            <tr>
              <td>${state.count} / ${state.index}</td>
              <td>${mem.id}</td>
              <td>${mem.name}</td>
              <td>${mem.age}</td>
              <td>${mem.addr}</td>
            </tr>
          </c:forEach>
        </c:otherwise>  
      </c:choose>  
    </table>  

숫자 3자리마다 콤마를 찍어준다


  <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

  <fmt:formatNumber value="${price}" />원  
Comments