2022. 6. 29. 11:41ㆍ[오픈소스_라이브러리]/[JSTL]
JSTL 이란?
보통 JSTL + EL 을 포함해 부릅니다.
자바서버 페이지 표준 태그 라이브러리(JavaServer Pages Standart Tag Library)
java EE 기반의 웹 애플리케이션 개발 플랫폰을 위한 컴포넌트 모음입니다.
jsp 페이지 내에서 자바 코드를 사용하지 않고 로직을 내장하는 효율적인 방법을 제공합니다.
표준화된 태그 셋을 사용해서 자바 코드가 복잡하게 얽히는 것 보다 유지보수와 응용면에서 뛰어납니다.
jsp 코드 내 HTML 부분에 이전 방식인 스크립틀릿 과 같은 <% test %> , <%=if%>, <%=for%> 등을
${test},<c:if> <c:forEach> 와 같이 가독성이 좋게 만들어 줍니다.
사용방법
JSTL 은 라이브러이기 때문에 상단에 추가해 줘야 합니다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
tag 로 c를 사용하고 uri에는 해당 주소를 넣어줍니다.
JSTL 태그 종류
<c:set> | 변수명에 값을 할당 |
<c:out> | 값을 출력 |
<c:if> | 조건식에 해당하는 블럭과 사용될 scope설정 |
<c:choose> | 다른 언어의 switch와 비슷 |
<c:when> | switch문의 case에 해당 |
<c:otherwise> | switch문의 default에 해당 |
<c:forEach> | 다른언어의 loop문 items 속성에 배열을 할당할 수 있음 |
사용 예제
<c:choose>
<c:when test="${'Y'.equals(loginCheck)}">
<div>
<p>login 되어있습니다</p>
</div>
</c:when>
<c:otherwise>
<div>
<p>login 해야 합니다</p>
</div>
</c:otherwise>
</c:choose>
loginCheck 라는 세션 key와 값을 비교해서 Y 일 경우
when 부분의 html 코드만 서버에서 읽어서 해당 html만 클라이언트에 보내주게 되고,
만약 그 외의 값이라면 otherwise 부분의 html 코드만 클라이언트에게 보내지게 됩니다.
이렇게 처리해서 좋은점은 , 분기처리시 체크를 여러번 해야하는 불편함을 해소할 수 있습니다.
css 적으로 disabled 나, display:none으로 막은 부분은 개발자 도구로 풀수 있기 때문에
controller 부분에서 또 처리를 해줘야 합니다.
JSTL을 활용하면 개발자가 원하는 HTML 코드만을 클라이언트에게 보낼 수 있습니다.
EL
표현 언어 (Expression Language)
jsp 2.0 부터는 jsp 컨테이너가 EL 표현식을 해석할 수 있게 되어 형변환 등에 신경쓰지 않고 데이터를 다룰 수 있다.
${pageScope} | page Scope에 접근하기 위한 객체 |
${reqeustScope} | request Scope에 접근하기 위한 객체 |
${sessionScope} | session Scope에 접근하기 위한 객체 |
${applicationScope} | application Scope에 접근하기 위한 객체 |
${param} | 파라미터 값을 가져오기 위한 객체 |
${header} | 헤더 값을 가져오기 위한 객체 |
${cookie} | 쿠키 값을 가져오기 위한 객체 |
${initParam} | JSP 초기 파라미터를 가져오기 위한 객체 |
${pageContext} | pageContext 객체에 접근하기 위한 객체 |
아래와 같은 방법으로 Script 에서 바로 session의 값을 불러와 지정할 수 있습니다.
let loginCheck = ("${loginCheck}" === "Y");