📑
JSTL
JSP 표준라이브러리. (JavaServer Pages Standard Tag Library)
JSP에서 반복문과 조건문, 데이터 관리 포맷, XML 조작, 데이터베이스 액세스를 구현하는 커스텀 태그 라이브러리의 모음.
자신만의 태그를 추가할 수 있다.
Java 코드를 바로 사용하지 않고 HTML 태그(<>) 형태로 직관적인 코딩을 지원한다. => EL(Expression Language)
*EL은 하단에서 다시 설명.
라이브러리 | 기능 | 접두어 |
코어 | 일반 프로그램 언어에서 제공하는 변수선언, 조건/제어/반복문등의 기능을 제공한다. | c |
포맷팅 | 숫자,날짜,시간을 포맷팅 하는 기능과 국제화, 다국어 지원 기능을 제공한다. | fmt |
함수 | 문자열을 처리하는 함수를 제공한다. | fn |
데이터베이스 | 데이터베이스의 데이터를 입력/수정/삭제/조회하는 기능을 제공한다. | sql |
XML처리 | XML 문서를 처리할 때 필요한 기능을 제공한다. | x |
사용법
우선 *.jsp 파일 상단에 taglib지시자로 JSTL확장 태그를 선언해줘야한다.
코어 | . <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> |
포맷팅 | <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> |
함수 | <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> |
데이터베이스 | <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> |
XML처리 | <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> |
참고문서 → 🔗
EL (Expression Language)
JSP 2.0부터는 JSP 컨테이너가 EL 표현식을 해석할 수 있게 되어서
이전까지는 자바 코드를 사용해야했던 모든 곳에 EL을 사용할 수 있다.
- 값이 없는 변수(null)에 대해 좀 더 관대하며 데이터 형변환을 자동으로 해준다.
JSP Expression(표현식) 방식 : 파라미터 출력
<%=request.getParameter("name") %>
<%=request.getParameter("address") %>
EL 방식 파라미터 출력
${param.name}
${param.address}
EL 내장객체
내부적으로 변수 선언과 초기화 작업이 자동으로 되는 객체로, 개발자는 내장 객체를 사용할 때 참조변수의 이름을 통해 참조변수로 바로 접근하여 사용할 수 있다.(JSP도 지원)
내장 객체
|
설명
|
|
pageContext
|
JSP 내장 객체 pageContext와 같음.
· pageContext 객체에 접근하기 위한 객체
|
|
pageScope
|
pageContext에 등록된 데이터의 이름과 값을 저장하고 있는 map객체.
· page Scope에 접근하기 위한 객체
|
|
requestScope
|
HttpServletRequest에 등록된 데이터의 이름과 값을 저장하고 있는 map객체.
· request Scope에 접근하기 위한 객체.
|
|
sessionScope
|
HttpSession에 등록된 데이터의 이름과 값을 저장하고 있는 map객체.
· session Scope에 접근하기 위한 객체.
|
|
applicationScope
|
ServletContext에 등록된 데이터의 이름과 값을 저장하고 있는 map 객체.
· application Scope에 접근하기 위한 객체.
|
|
param
|
QueryString의 이름과 값을 저장하고 있는 map객체.
· 파라미터 값을 가져오기 위한 객체.
|
|
paramValues
|
같은 이름으로 전달된 질의 문자열의 이름과 값들을 저정하고 있는 map 객체.
|
|
header
|
요청정보 헤더의 정보를 이름과 값으로 저장하고 있는 map객체.
· 헤더 값을 가져오기 위한 객체.
|
|
headerValues
|
요청정보 헤더의 정보들을 이름과 값들을 저장하고 있는 map객체.
|
|
cookie
|
요청을 보낸 클라이언트의 쿠기 이름과 값을 저장하고 있는 map객체.
· 쿠키 값을 가져오기 위한 객체.
|
|
initParam
|
웹 애플리케이션에 저장한 초기 파라미터의 이름과 값을 저장하고 있는 map 객체.
· JSP 초기 파라미터를 가져오기 위한 객체.
|
EL 연산자 종류
산술 연산자 | +, -, *, /, %, mode, div |
논리 연산자 | &&, ||, !, and, or, not |
비교 연산자 | ==, !=, <, >, <=, >=, eq, ne, lt, get, le, ge |
null 검사 | empty (값이 null이거나 공백문자인지를 판단하는 연산자) |
삼항 연산자 | '조건식' ? '값1' : '값2' |
할당 연산자 | 변수명 = 값 |
EL 산술 연산자
${10 + 20} : 30
${10 - 20} : -10
${10 * 20} : 200
${10 / 20} : 0.5
${10 div 20} : 0.5
${10 % 20} : 10
${10 mod 20} : 10
EL 논리 연산자
${true && false} : false
${true and false] : false
${false || true} : true
${false or true] : true
${not true} : false
${!true} : false
empty 연산자
${empty 변수명} : 변수가 null일 경우 true
삼항 연산자
${10 > 20 ? "크다" : "작다"}
${useYn eq 'Y' ? "사용" : "미사용"}
EL 리터럴 표현식
문자열, 정수, 부동소수점, Boolean, Null을 사용.
${ 이 안에 사용해요 }
EL 표기법
# EL 표기법
${} : JSP가 실행될 때 즉시 반영. 객체 프로퍼티 값을 꺼낼 때 주로 사용.
#{} : 시스템에서 필요하다고 판단될 때 그 값을 사용. 사용자 입력값을 객체의 프로퍼티에 담는 용도로 주로 사용.
사용해보기
Core태그를 이용해서 조건에 따라 버튼이 다르게 표시되도록 해보자.
<div class="modal-footer">
<button type="button" class="btn btn-light" data-bs-dismiss="modal">닫기</button>
<c:choose>
<c:when test="${userYn eq 'Y'}">
<button type="button" class="btn btn-danger" onclick="fnDeleteUser_click('${param.UserRegNo}');">삭제</button>
<button type="button" class="btn btn-primary" id="btn_upd_User" onclick="fnUserRegModal_click('U', '${param.UserRegNo}');">수정</button>
</c:when>
<c:otherwise>
<button type="button" class="btn btn-primary" onclick="fnRestoreUser_click('${param.UserRegNo}');">복구</button>
</c:otherwise>
</c:choose>
</div>
해당 코드는 상세정보를 보여주는 모달창을 구현한 것의 일부이다.
닫기 버튼은 항상 표시되며
userYn 데이터의 값이 'Y'인 경우에는 삭제와 수정 버튼이 페이지에 뜨고
그 외의 경우에는 삭제, 수정버튼은 표시되지 않고 복구 버튼이 표시되도록 했다.
참고 블로그(로그의 개발일지)