자바 웹 표현언어, JSTL

Dear·2025년 6월 16일

TIL

목록 보기
42/74

💙 표현 언어

표현 언어 (EL : Expression Language)는 값(데이터)를 웹 페이지에 표시(표현)하는 데 사용되는 태그이다.

EL(Expression Language)

JSP 출력에 대한 부분을 쉽게 하기 위해 개발한 tag(태그)이다.

구분예시 표현
표현식<%= expr %>
표현 언어${expr}

💙 표현 언어 연산자 목록

종류연산자
산술+, -, *, / (or div), % (or mod)
관계형== (or eq), != (or ne), < (or lt), > (or gt), <= (or le), >= (or ge)
조건a ? b : c
논리&& (or and), || (or or), ! (or not)
null 검사empty

표현 언어는 JSTL에서 제공되는 조건식과 함께 사용된다.

// 가독성 떨어짐
<% if(input==null) { %>
    텅 빈 객체(null)입니다.
<% } %>

// JSTL 과 표현 언어
// 코드가 더 단순해진다.
<c:if test=${empty input}>
    텅 빈 객체(null)입니다.
</c:if>

💙 표현언어로 요청 파라미터 처리

사용자가 폼에 입력한 값을 얻어오기 위해서는 JSP 내장 객체의 requset의 getParameter() 메소드 사용한다.

표현언어에서는 param 객체를 사용한다.

내장 객체설명
paramJSP의 내장 객체인 requestgetParameter()와 동일한 역할인 파라미터 값을 알려준다.
paramValues동일한 이름으로 전달되는 파라미터 값들을 배열 형태로 얻어오는 데 사용하는 requestgetParameterValues()와 동일한 역할을 한다.
  • param 객체는 , 혹은 [] 둘 중 하나를 이용해서 입력한 값을 가져온다.
  • 자바에서 == 연산자는 수치형 데이터에 대해서만 값을 비교하고 객체에 대해서는 참조되는 객체의 레퍼런스 값을 비교한다.
  • EL 식에서는 == 연산자로 객체에 저장된 값(내용)을 비교한다. (자바에서 equlas)
  • 참조값 비교 X

💙 표현언어로 내장 객체 접근

자바 코드로 내장 객체에 저장된 속성 값에 접근하면 코드가 길어지고 지저분해진다.
이를 위해 표현 언어를 사용한다.

표현식(expression)에서 <%= 변수이름 %>으로 작성하면 자바 변수 이름으로 인식되고, 표현 언어(EL)에서는 ${변수이름}이 속성 이름으로 인식된다.

속성은 JSP 내장 객체에서 정보를 주고 받이 위해 메소드로 관리되는 정보이다.

스코프 영역자바 코드표현 언어 (EL)
pagepageContext.getAttribute("num1");${pageScope.num1}
requestrequest.getAttribute("num1");${requestScope.num1}
sessionsession.getAttribute("num1");${sessionScope.num1}
applicationapplication.getAttribute("num1");${applicationScope.num1}

💙 JSTL(JSP Standard Tag Library)

JSP에서 사용 가능한 표준 태그 라이브러리

스크립트릿보다 간단하고 가독이 좋다.

<c:if test="${param.color == 1}">
    <span style="color: red;">빨강</span>
</c:if>
<c:if test="${param.color == 2}">
    <span style="color: green;">초록</span>
</c:if>
<c:if test="${param.color == 3}">
    <span style="color: blue;">파랑</span>
</c:if>
  • 자신만의 태그를 추가할 수 있다.
    커스텀 태그 라고 한다.
  • 작성한 커스텀 태그를 모아서 압축한 후 배포해서 사용하는걸 커스텀 태그 라이브러리라고 한다.

JSTL 기능

• 간단한 프로그램 로직의 구현(자바의 변수 선언, if문, for문 등에 해당하는 로직)
• 다른 JSP 페이지 호출 (<c:redirect>, <c:import>)
• 날짜, 시간, 숫자의 포맷
• JSP 페이지 하나를 가지고 여러 가지 언어의 웹 페이지 생성
• 데이터베이스로의 입력, 수정, 삭제, 조회
• XML 문서의 처리
• 문자열을 처리하는 함수 호출

JSTL 라이브러리는 크게 core, format, xml, sql, functions 5가지 커스텀 태그로 나누어서 제공한다.

커스텀 태그설명
기본 기능(core)일반 프로그래밍 언어에서 제공하는 것과 유사한 변수 선언, 실행 흐름의 제어 기능을 제공하고, 다른 JSP 페이지로 제어를 이동하는 기능도 제공한다.
형식화(format)숫자, 날짜, 시간을 포매팅하는 기능과 국제화, 다국어 지원 기능을 제공한다.
데이터베이스(sql)데이터베이스의 데이터를 입력/수정/삭제/조회하는 기능을 제공한다.
XML 처리(xml)XML 문서를 처리할 때 필요한 기능을 제공한다.
함수 처리(functions)문자열을 처리하는 함수를 제공한다.

jar 파일 형태의 라이브러리를 추가해야 사용할 수 있다.
보통 WEB-INF/lib 폴더에 두고 사용한다.

JSTL URI 식별자와 접두사 prefix

기능prefix기본 URI
기본 기능chttp://java.sun.com/jsp/jstl/core
형식화fmthttp://java.sun.com/jstl/fmt
데이터베이스 작업sqlhttp://java.sun.com/jstl/sql
XML 처리xhttp://java.sun.com/jstl/xml
함수 처리fnhttp://java.sun.com/jsp/jstl/fn

🤍 회고

오늘은 웹 표현 언어(EL)과 JSTL(JSP 표준 태그 라이브러리)에 대해 배웠다.
스크립트릿보다 코드가 간단하고 가독성이 좋아 사용하기 훨씬 편리했다.
조건문, 반복문, 포맷팅 등 다양한 기능을 태그 형태로 표현할 수 있어 유지보수에도 유리하다.
EL을 사용하면 자바 코드 없이도 데이터를 쉽게 출력할 수 있다는 점이 인상 깊었다.
앞으로 JSP 작성 시 JSTL과 EL을 적극 활용하게 될 것 같다.

profile
친애하는 개발자

0개의 댓글