[JSP] EL & JSTL

·2023년 11월 22일
0

jsp

목록 보기
17/18
post-thumbnail

지금까지 자바 웹 프로그램을 jsp 로 만들면서 가장 번거롭고 귀찮았던 작업이 프론트엔드 쪽에 자바 변수나 코드를 적용할 때마다 <% %> 를 사용하는 것이었다.

ex. 코드가 섞여 세상에서 제일 복잡해 보이는 내 미니 프로젝트 북 월드...

그런데 그것을 해결해 줄 수 있는 el & jstl!

잘 알지는 못하지만 새롭게 깨닫게 되거나 얻어가는 것이 있다면 이곳에 정리를 해서 단권... 단페화를 (단일페이지화) 만들어야겠다.


⭐ EL (Expression Language)

(1) ${}

EL 은 항상 ${}을 사용한다. 표현에 연산식도 가능하다. 위 사진에 보이는 emtpy 는 그 값이 비어있느냐 비어있지 않느냐를 따질 수 있는 연산이다.

(2) EL의 객체

  1. pageScope : 모든 page 영역 객체들에 대한 collection
  2. requestScope : 모든 request 영역 객체들에 대한 collection
  3. sessionScope : 모든 session 영역 객체들에 대한 collection
  4. applicationScope : 모든 application 영역 객체들에 대한 collection
  5. param : 모든 request 파라미터들을 문자열로 가진 collection
  6. paramValues : 모든 request 파라미터당 문자열 배열로 가진 collection
  7. header : HTTP 요청 Header를 문자열로 가진 collection
  8. headerValues : HTTP 요청 Header들을 Header당 문자열 배열로 가진 collection
  9. cookie : 모든 cookie 의 collection
  10. initparam : 모든 application의 초기화 파라미터 이름 collection
  11. pageContext : 현재 페이지를 위한 javax.servlet.jsp.PageContext

예를 들어 cookie 객체는 이렇게 사용된다.

이전에는 쿠키값을 이렇게 불러와서 쿠키 값에 무언가 있다는 걸 알고나면 그 쿠키들에 saveId 가 있는지 일일이 확인했다.

그리고 value 에 쿠키에서 불러온 값을 저장한 후 그걸 id 로 사용하는 방식이었다.

하지만 el 태그를 사용한다면?

별다른 자바 코드 없이 바로 cookie 객체에서 saveid 값을 불러다 사용할 수 있게 된다. 간단해지고 빨라졌다.

⭐ JSTL

(1) jstl.jar

jstl 은 표현식뿐만 아니라 조금 더 다양한 프로그래밍에 맞게 설계된 언어이다. 우선 jstl을 사용하려면 jar 파일을 lib 폴더 안에 넣어 줘야 한다.

(2) URL과 Prefix

jstl 을 사용하고 싶다면 우선 url을 삽입해 주고 태그에 접두사를 붙여 줘야 한다. 자주 사용하는 것들을 표로 그려보자면 (나중에 복사하기 쉬우라고 직접 쳐서)

Library url prefix
Core http://java.sun.com/jsp/jstl/core c
XML processing http://java.sun.com/jsp/jstl/xml x
Formatting http://java.sun.com/jsp/jstl/fmt fmt
Functions http://java.sun.com/jsp/jstl/functions fn
Data access(SQL) http://java.sun.com/jsp/jstl/sql sql

(3) <c:set>

<c:set var="변수명" value="지정한 변수의 값" target="자바빈 객체명이나 Map 객체명" property="자바빈 객체나 Map 객체의 값을 설정할 변수명" scope="속성의 공유 범위의 유효기간을 설정"/>

가독성이 별로인가?

(4) <fmt:formatNumger>

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

			<td align="right">
				<fmt:formatNumber value="${dto.price}" pattern="###,###"/></td>

패턴 설정해 주기

(5) <c:if test="${not empty hit}">

hit 가 비어 있니?

		// 예시
		<c:if test="${empty listProd}">
		<tr>
			<td colspan="7">등록된 상품이 없습니다.</td>
		</tr>		
		</c:if>

중요한 점은 else 기능이 없어서 둘 다 test, 즉 if 로 테스트를 해 보아야 한다는 것이다.

profile
자바 백엔드 개발자 개인 위키

0개의 댓글

관련 채용 정보