웹/JSP

JSP EL과 JSTL 이란?

푸코잇 2023. 8. 6. 16:49
EL(Expression Language)과 JSTL(Jsp Standard Tag Library) 사용하는 이유

 

JSP 페이지 내에서 자바코드와 HTML 코드가 섞여 있으면 가독성이 떨어지고 복잡해진다.

자바 구문을 라이브러리 형태로 만들어 놓고 필요할 때마다 태그로 꺼내 쓰는 기술인 EL과 JSTL을 사용하면 HTML과 태그로만 구성된 소스코드가 되어 가독성이 상승하게 된다.

 

EL(Expression Language)란?

 

EL은 값을 간결하고 간편하게 출력할 수 있도록 해주는 기술이다.

 

  • Attribute 형식에서의 JAVA와 EL 비교
JAVA EL
<%=name%> ${name}
<%=member.getName()%> ${member.getName()}

 

  • Attribute 형식의 값 찾는 순서

Attribute 형식의 값을 찾을 때 작은 범위에서 큰 범위로 찾는다.

▶ page → requset → session → application

 

  • 원하는 범위의 변수 찾기
${param.name} GET 방식, 쿼리 스트링으로 전달된 파라미터를 받을 때 사용
${requestScope.name} request.setAttribute(key, value)을 통해 저장된 파라미터를 받을 때 사용
${sessionScope.name} session.setAttribute(key, value)을 통해 저장된 파라미터를 받을 때 사용
${applicationScope.name} application.setAttribute(key, value)을 통해 저장된 파라미터를 받을 때 사용

 

  • EL 연산자
  • +
  • -
  • *
  • /
  • empty
  • %, mod
  • &&, and
  • ||, or
  • >, lt
  • <, gt
  • >=, le
  • <=, ge
  • ==, eq
  • !=, ne
  • !, not
  • EL 연산자 사용 예시
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>EL 테스트</title>
</head>
<body>
	<h2>${10 % 3}</h2>
	<h2>${10 mod 3}</h2>
</body>
</html>

 

JSTL(Jsp Standard Tag Library)란?

 

연산이나 조건문, 반복문 등을 편하게 처리할 수 있다.

JSP 페이지 내에서 자바코드를 사용하지 않고 로직을 구현할 수 있다.

 

  • JSTL 태그 종류
태그 prefix 설명
Core c 변수 선언 및 실행 제어 기능
Formatting fmt 숫자, 날짜, 시간 포매팅 기능
DataBase sql DB 데이터 입력/수정/삭제/조회 기능
XML x XML 문서 처리 기능
Function fn 문자열 제공하는 기능

 

  • JSTL 예제

우선 JSTL을 다운로드 받아 다음과 같이 프로젝트에 .jar 파일을 추가해야 한다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL Test</title>
</head>
<body>
	<h1>JSTL 변수</h1>
	<c:set var="name" value="홍길동" scope="page"/>
	<c:out value="${name}"/>
	
	<h1>JSTL 반복문</h1>
	<c:forEach var="i" begin="0" end="10" step="1">
		<c:out value="${i}"/>
	</c:forEach>
</body>
</html>

JSTL을 Core 태그를 사용하기 위해 taglib로 추가해준다.