표현 언어 (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 |
// 가독성 떨어짐
<% if(input==null) { %>
텅 빈 객체(null)입니다.
<% } %>
// JSTL 과 표현 언어
// 코드가 더 단순해진다.
<c:if test=${empty input}>
텅 빈 객체(null)입니다.
</c:if>
사용자가 폼에 입력한 값을 얻어오기 위해서는 JSP 내장 객체의 requset의 getParameter() 메소드 사용한다.
표현언어에서는 param 객체를 사용한다.
| 내장 객체 | 설명 |
|---|---|
param | JSP의 내장 객체인 request의 getParameter()와 동일한 역할인 파라미터 값을 알려준다. |
paramValues | 동일한 이름으로 전달되는 파라미터 값들을 배열 형태로 얻어오는 데 사용하는 request의 getParameterValues()와 동일한 역할을 한다. |
자바 코드로 내장 객체에 저장된 속성 값에 접근하면 코드가 길어지고 지저분해진다.
이를 위해 표현 언어를 사용한다.
표현식(expression)에서 <%= 변수이름 %>으로 작성하면 자바 변수 이름으로 인식되고, 표현 언어(EL)에서는 ${변수이름}이 속성 이름으로 인식된다.
속성은 JSP 내장 객체에서 정보를 주고 받이 위해 메소드로 관리되는 정보이다.
| 스코프 영역 | 자바 코드 | 표현 언어 (EL) |
|---|---|---|
| page | pageContext.getAttribute("num1"); | ${pageScope.num1} |
| request | request.getAttribute("num1"); | ${requestScope.num1} |
| session | session.getAttribute("num1"); | ${sessionScope.num1} |
| application | application.getAttribute("num1"); | ${applicationScope.num1} |
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>
• 간단한 프로그램 로직의 구현(자바의 변수 선언, 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 폴더에 두고 사용한다.
| 기능 | prefix | 기본 URI |
|---|---|---|
| 기본 기능 | c | http://java.sun.com/jsp/jstl/core |
| 형식화 | fmt | http://java.sun.com/jstl/fmt |
| 데이터베이스 작업 | sql | http://java.sun.com/jstl/sql |
| XML 처리 | x | http://java.sun.com/jstl/xml |
| 함수 처리 | fn | http://java.sun.com/jsp/jstl/fn |
오늘은 웹 표현 언어(EL)과 JSTL(JSP 표준 태그 라이브러리)에 대해 배웠다.
스크립트릿보다 코드가 간단하고 가독성이 좋아 사용하기 훨씬 편리했다.
조건문, 반복문, 포맷팅 등 다양한 기능을 태그 형태로 표현할 수 있어 유지보수에도 유리하다.
EL을 사용하면 자바 코드 없이도 데이터를 쉽게 출력할 수 있다는 점이 인상 깊었다.
앞으로 JSP 작성 시 JSTL과 EL을 적극 활용하게 될 것 같다.