
🔷 표현 언어라고 하며 값(data)를 웹 페이지에 표시 하는데 사용되는 태그
🔷 JSP 스크립트의 표현식(<%= %>)을 대신하여 속성값을 쉽게 출력할 수 있도록 고안된 언어
${expr }
EL 표현식에서 Map 객체 또는 Java Bean 객체의 경우 도트(.)연산자를 사용하여 속성을 출력할 수 있다. 이 때 오른쪽의 값은 Map 객체의 경우, key, Java Bean의 경우 Bean property이다.
JSP 영역 기본 객체(page, request, session, application) 속성 사용가능
수치, 관계, 논리연산 제공
자바 클래스 메서드 호출 기능 제공
표현언어 기본 객체 제공(param, paramValues)
🔷 스크립트릿을
<%= ((com.Bzeromo.model.MemberDto)
request.getAttribute("userinfo")).getZipDto().getAddress() %>
EL로
${userinfo.zipDto.address}
💡
DTO
Data Transfer Object, 계층 간 데이터 전송을 위해 도메인 모델 대신 사용되는 객체
// Map or Java Bean
${obj["key(property)"]}
// list or array
${obj[index]}
${obj["index"]}
💡 여기서 null 값은 공백으로 표현된다.
🔷 내장 객체
| 분류 | 객체 | 타입 | 설명 |
|---|---|---|---|
| JSP | pageContext | Java Bean | 현재 페이지의 page context instance |
| scope | pageScope | Map | page 기본객체에 저장된 속성을 저장하는 객체 |
| '' | requestScope | Map | request 기본객체에 저장된 속성을 저장하는 객체 |
| '' | sessionScope | Map | session 기본객체에 저장된 속성을 저장하는 객체 |
| '' | applicationScope | Map | application 기본객체에 저장된 속성을 저장하는 객체 |
| 요청파라미터 | param | Map | JSP 내장 객체 request의 getParameter(name) 메서드와 동일한 역할을 한다. ${param.name} 또는 ${param["name"]의 형태로 사용 |
| '' | paramValues | Map | JSP 내장 객체 request의 getParameterValues(name) 메서드와 동일한 역할을 한다. |
| 쿠키 | cookie | Map | 현재 페이지의 page context instance |
| 요청헤더 | header | Map | request의 getHeader(name) 메서드와 동일한 역할을 한다. |
| '' | headerValues | Map | request의 .getHeaders(name) 메서드와 동일한 역할을 한다. |
💡 Scope의 속성에 객체 이름 없이 접근할 때 가장 가까운 scope부터 탐색하며 맨처음 등장하는 값을 출력하고 없으면 공백으로 출력한다. (page -> request -> session -> application)
🔷 EL 연산자(Operator)
| 종류 | 사용 가능 연산자 |
|---|---|
| 산술 | +, -, *, /(div), %(mod) |
| 관계 | ==(eq), !=(nq), <(lt), >(gt), <=(le), >=(ge) |
| 조건 | expr ? val1 : val2 |
| 논리 | &&(and), ||(or), !(not) |
| null | empty |
💡 괄호 안은 동일한 의미의 연산자로, 마찬가지 방법으로 사용 가능하다.
${empty name}
🔷 EL로 기본 객체 속성 설정하기/ 요청 파라미터 처리하기
<!-- 기존의 방식 -->
<%= request.getParameter("id") %> <br>
<!-- EL -->
${param.id} <br>
<!-- equals()와 같다 -->
== : ${param.id eq "Bzeromo" }
🔷 JavaEE 기반의 웹 어플리케이션 개발을 위한 컴포넌트 모음

🔷 JSTL 기능
1. 간단한 프로그램 로직 구현 기능(core)
format)sql)functions)xml)🔷 JSTP 사용하기
| 기능 | prefix | URI |
|---|---|---|
| 기본기능, 변수선언, 로직 구현 | c | http://java.sun.com/jsp/jstl/core |
| 데이터 출력 포멧 | fmt | http://java.sun.com/jsp/jstl/fmt |
| 데이터베이스 작업 | sql | http://java.sun.com/jsp/jstl/sql |
| XML 관련 기능 | x | http://java.sun.com/jsp/jstl/sml |
| 문자열 처리 함수 | fn | http://java.sun.com/jsp/jstl/fn |
오늘은 core만 알아본다.
| 태그 | 설명 |
|---|---|
| c:set | 변수에 값 설정 |
| c:remove | 변수 제거 |
| c:if | 조건에 따른 코드 실행 |
| c:choose | when, otherwise tag와 함께 쓰이며 if-else if- else와 동일하게 사용한다. |
| c:forEach | 배열, Collection의 각 요소에 접근하기 위해 사용 |
| c:import | 외부 자원을 사용하기 위해서 사용 |
| c:forTokens | 구분자를 이용하여 구분된 토큰을 처리 |
| c:redirect | redirect시 사용 |
| c:url | URL 작성 |
| c:out | 출력 |
| c:catch | 예외 처리 |
🖥 오늘도 실습 드가자
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%-- 라이브러리에서 불러오기(모르겠으면 ctrl + space) --%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL</title>
</head>
<body>
<!-- c:out -->
<c:out value="Hello Bzeromo!" /> <br>
<!--
c:set var="변수이름" value="변수 값"
scope="변수의 유효영역, default는 p age" target="java bean"
-->
<c:set var="msg" value="Hello"/>
${msg } <br>
<c:set var="msg2" >Hello2</c:set>
${msg2 } <br>
<c:set var="movie" value="<%= new com.bzeromo.dto.Movie() %>"/>
${movie } <br>
<c:set target="${movie }" property="title" value="어벤져스"/>
${movie } <br>
<hr>
<%
String[] songList = {"IAM", "Kistch", "After Like", "LOVE DIVE"};
pageContext.setAttribute("songList", songList);
%>
<!-- c:forEach -->
<c:forEach var = "song" items="${songList }">
${song } <br>
</c:forEach>
<c:forEach var = "song" items="${songList }" varStatus="status"
begin="0" end="2" step="2">
${status.index }:${song } index ---
${status.count }:${song } count<br>
</c:forEach>
<hr>
<!-- c:forTokens -->
<c:forTokens var="Idol" items="IVE,LeserraFim,New Jeans.StayC.(g)Idle" delims=",">
${Idol }<br>
</c:forTokens>
<hr>
<c:forTokens var="Idol" items="IVE,LeserraFim,New Jeans.StayC.(g)Idle" delims=",.">
${Idol }<br>
</c:forTokens>
<!-- c:if(출력 생략) -->
<c:if test="${param.fruit == 1}">
<div style="color: yellow">파인애플</div>
</c:if>
<c:if test="${param.fruit == 2}">
<div style="color: pink">망고스틴</div>
</c:if>
<c:if test="${param.fruit == 3}">
<div style="color: green">멜론</div>
</c:if>
<c:if test="${param.fruit == 4}">
<div style="color: red">사과</div>
</c:if>
<!-- c:choose, c:when, c:otherwise(출력 생략) -->
<c:choose>
<c:when test="${param.fruit == 3}">
<div style="color: green">멜론</div>
</c:when>
<c:otherwise>
<div>그외의 과일들이다.</div>
</c:otherwise>
</c:choose>
<!-- c:catch -->
<c:catch var="errmsg">
예외 발생전 <br>
<%= 2/0 %>
예외 발생후 <br>
</c:catch>
${errmsg }
</body>
</html>
🖥 출력

다음은 스프링이다...
겁먹지 말자...