[JSTL]_JSTL 사용하여 Session 에 저장된 값 불러오기

2022. 6. 29. 11:41[오픈소스_라이브러리]/[JSTL]

728x90
반응형

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");

 

728x90
반응형