본문 바로가기
기초 및 언어/▶ Java&JSP

26.JSP Programming - 표현 언어 EL (Expression Language)

by 류딩이 2025. 9. 16.

✅ 1. EL(Expression Language)이란?

  1. 자바언어를 사용하지 않고 JSP 페이지 작성
  2. JSP 기본문법을 보완하는 스크립트 언어
  3. 간결한 소스 작성
  4. 자바스크립트와 Xpath를 베이스로 설계
  5. 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