✅ 1. EL(Expression Language)이란?
- 자바언어를 사용하지 않고 JSP 페이지 작성
- JSP 기본문법을 보완하는 스크립트 언어
- 간결한 소스 작성
- 자바스크립트와 Xpath를 베이스로 설계
- Xpath : XML 문서의 정보에 접근하기위해 사용되는 언어
EL의 표현 방법 - 출력
${expr}
<% request.setCharacterEncoding("UTF-8"); %>
<jsp:useBean id="pb" class="myPkg.PersonBean"/>
<jsp:setProperty property="*" name="pb"/>
아이디1: <%=request.getParameter("id") %> <br>
아이디2: ${param.id} <br>
아이디3: <%=pb.getId()%> <br>
아이디4: <jsp:getProperty property="id" name="pb"/> <br>
아이디5: ${pb.id} <br>
아이디6: ${pb['id']} <br>
아이디7: ${param["id"]} <br>
이름: ${param.name} <br>
비밀번호: ${pb.password} <br>
나이: ${param["age"]} <br>
EL의 표현 방법 - 문자열 연결과 숫자연산
${param.kor} + ${param.eng} + ${param.math} → 문자열 연결
${param.kor + param.eng + param.math} → 숫자 덧셈
EL의 - 조건문 if
JSTL Core 라이브러리 선언
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- taglib 지시어 → JSP에서 외부 태그 라이브러리(JSTL Core)를 사용 가능하게 선언
- prefix="c" → c: 라는 별칭으로 JSTL Core 태그를 쓰겠다는 뜻
- uri="http://java.sun.com/jsp/jstl/core" → JSTL Core 라이브러리의 식별자
🌈정리
- c:는 반복, 조건, 변수 설정 등 로직 제어용 태그 모음.
- EL과 함께 쓰면 JSP 스크립트릿(<% %>)을 거의 안 써도 됨.
<c:if test="${avg>=90}">
A학점
</c:if>
<c:if test="${avg>=80 and avg<90}">
B학점
</c:if>
<c:if test="${avg>=70 and avg<80}">
C학점
</c:if>
<c:if test="${avg>=60 and avg<70}">
D학점
</c:if>
<c:if test="${avg<60}">
F학점
</c:if>
- c:if : 조건이 참일 때만 출력
- EL 연산자
- and, or, not → 논리연산
- eq, ne, lt, gt, le, ge → 비교연산
EL의 - 조건문 when
<form action="Ex04_result.jsp" method="post">
좋아하는 음식 선택 <br>
<select name="food">
<option value="피자">피자</option>
<option value="짜장면">짜장면</option>
<option value="떡볶이">떡볶이</option>
<option value="치킨">치킨</option>
</select><br><br>
<input type="submit" value="전송">
</form>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%request.setCharacterEncoding("UTF-8");%>
Ex04_result.jsp<br>
<%
request.setCharacterEncoding("UTF-8");
%>
food : ${param.food}<br>
<c:choose>
<c:when test="${param.food == '피자'}">
피자는 맛있다
</c:when>
<c:when test="${param.food == '떡볶이'}">
떡볶이는 맵다
</c:when>
<c:when test="${param.food == '짜장면'}">
짜장면은 달다
</c:when>
<c:otherwise>
치킨입니다.
</c:otherwise>
</c:choose>
EL의 - for문
JSTL 함수(function) 라이브러리 선언
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
- taglib 지시어
→ JSP에서 JSTL 라이브러리(JAR 파일 안 TLD) 연결할 때 사용 - prefix="fn"
→ fn: 이라는 별칭으로 JSTL 함수들을 사용하겠다는 뜻 - uri="http://java.sun.com/jsp/jstl/functions"
→ JSTL 함수 라이브러리의 고유 식별자
1) 인덱스 방식 (일반 for문과 유사)
<c:forEach var="i" begin="0" end="${fn:length(paramValues.fruit)-1}">
${paramValues.fruit[i]}
</c:forEach>
- begin ~ end로 범위를 지정 → 0부터 마지막 인덱스까지
- ${paramValues.fruit[i]} → 인덱스로 접근
2) items 방식 (향상된 for문과 유사)
<c:forEach var="m" items="${paramValues.fruit}">
${m}
</c:forEach>
- items에 배열/리스트를 통째로 넘김
- 한 요소씩 m에 바인딩
✅ JSTL Core 주요 태그
| 태그 | 설명 | 예시 |
| <c:out> | EL 결과 출력 (<%= %> 대신) | <c:out value="${param.id}"/> |
| <c:set> | 변수 저장 | <c:set var="sum" value="${10+20}"/> |
| <c:remove> | 변수 제거 | <c:remove var="sum"/> |
| <c:if> | 조건문 (if) | <c:if test="${avg >= 90}">A학점</c:if> |
| <c:choose> | 조건문 (switch) | <c:choose><c:when test="${avg>=90}">A</c:when><c:otherwise>F</c:otherwise></c:choose> |
| <c:forEach> | 반복문 | <c:forEach var="i" begin="1" end="5">${i}</c:forEach> |
| <c:forTokens> | 구분자로 문자열 분리 후 반복 | <c:forTokens var="word" items="a,b,c" delims=",">${word}</c:forTokens> |
✅ JSTL Functions (fn:) 함수
| 함수 | 설명 | 예시 | 결과 |
| fn:length() | 문자열/배열/리스트 길이 | ${fn:length("Hello")} | 5 |
| fn:toUpperCase() | 대문자로 변환 | ${fn:toUpperCase("abc")} | ABC |
| fn:toLowerCase() | 소문자로 변환 | ${fn:toLowerCase("ABC")} | abc |
| fn:substring() | 문자열 자르기 | ${fn:substring("Hello",0,3)} | Hel |
| fn:contains() | 포함 여부 | ${fn:contains("Hello","el")} | true |
| fn:replace() | 문자열 치환 | ${fn:replace("Hello","l","x")} | Hexxo |
| fn:trim() | 공백 제거 | ${fn:trim(" HI ")} | HI |
'기초 및 언어 > ▶ Java&JSP' 카테고리의 다른 글
| 28. EL JSTL (0) | 2025.09.17 |
|---|---|
| 27. Servlet (0) | 2025.09.16 |
| 25. JSP_게시판 (0) | 2025.09.16 |
| 24 JSP + JDBC 다중 삭제 (multiDelete) 구현 (0) | 2025.09.15 |
| 23. JSP + JDBC delete예제 정리3 _ Movie (0) | 2025.09.15 |