백엔드/JSP

JSP : JSTL

두개의 문 2023. 6. 19. 22:53
JSTL (JavaServer Pages Standard Tag Library)

 

- 제어문이나 반복문과 같이 식(expression)이 아닌 문(statement)를 처리하기 위해서는 JSTL 라이브러리가 필요

- JSTL 

   : Java 코드를 바로 사용하지 않고 HTML 태그(<>) 형태로 직관적인 코딩을 지원하는 라이브러리

 

 

- JSTL 설치

구글에서 'maven repository' 검색 - JSTL 검색 - 2.JSTL 클릭

JSTL 1.2버전 클릭 

 

jar파일 다운로드

 

다운로드한 파일을 WEB-INF 폴더 내 lib폴더로 drag해서 옮기기 - OK 클릭

 

다음과 같이 확인 가능

 

 

그럼 webapp 폴더에 jstl_exam.jsp 파일을 생성해 테스트해보자.

 

- taglib 지시어를 이용해 JSTL Core 태그 선언문 작성 

  · taglib 지시어 : JSP 페이지에서 표현 언어(EL : Expression Language), JSTL(JSP Standard Tag Library), 커스텀 태그(Custom Tag)와 같은 태그 라이브러리를 사용할때 설정하는 태그 

 

   ❶ uri 속성 : JSP 컨테이너에게 사용자가 정의한 태그 라이브러리의 위치를 알려주는 역할

       * Shift + spacebar : 등록된 JSPL이 나와서 선택하면 됨 

   

 

❷ prefix 속성 : 사용자가 정의한 태그 라이브러리의 접두어 태그가 무엇인지 JSP 컨테이너에게 알려주는 역할로, 태그 식별자

   ⇒ 이 선언이 있어야 JSP에서 JSTL을 이용할 수 있으므로 주의!

 

 

 

테스트 하기 전, JSP의 유효 범위와 속성에 대해 알아보자.

영역 속성의 유효 범위
page   해당 페이지가 클라이언트에 서비스를 제공하는 동안에만 유효
request   클라이언트의 요청이 처리되는 동안 유효
  → RequestDispatcher, response 객체의 forward 범위 내에서 유효함 
       Page와 Page 사이의 변수 공유 가능 
session   세션이 유지되는 동안 유효 즉, 세션이 무효화될 때까지 소멸되지 않음 
application   서블릿 컨테이너가 실행중인 동안( = tomcat이 작동 중인 동안) 유효
scope의 비교 : page < request < session < application

 

 

JSTL 태그 종류 및 사용 예  

① 화면에 출력 

<c:out value="출력 값" default="value가 null일 경우, 설정한 default값 출력" /> 

 

 

② 변수 설정

<c:set var="변수명" value="설정 값" scope="변수의 유효범위" />

 - 변수의 유효범위를 설정하지 않을 경우, 'page' 범위로 기본 설정됨 

cf ) JSP EL 표현식인 ${ price } 를 입력해도 위와 동일한 값 출력

 

 

③ 위에서 설정한 변수 삭제 

<c:remove var="변수명" /> 

→ 삭제가 되었으므로 출력되지 않음

 

 

④ 예외 처리 : 자바의 try-catch 구문과 동일함 

<c:catch var="e">     : 예외 발생 시, catch해서 변수 e에 저장
                                       ➊ e == null : 예외 발생 안함 ❷ e != null : 예외 발생함 
         예외가 발생할 수 있는 부분 
</c:catch>
<c:if test="${ e != null }">
         에러메시지 : ${ e.message }   
</c:if>

 

 

⑤ 조건문 

<c:if test="조건식" >
         조건식이 true일 경우, 출력할 내용 
</c:if>

  → test 속성 내의 EL의 결과가 참인 경우, true가 출력됨 

      따로 else 구문은 없음 

  ❶ test : 필수 속성, 속성값으로 EL 비교식을 가짐

  ❷ var : 조건 결과를 저장할 변수 지정

  ❸ scope : 조건 결과를 저장할 변수의 저장 scope 지정 

  → 조건식 결과 <c:out>태그를 이용해 조건 결과를 저장한 변수를 출력함 그 결과, true 또는 false 출력 

 

 

⑥ <c:choose> : 자바의 switch 구문과 비슷한 역할 

 - 조건에 따라 여러 곳으로 분기 가능, 조건이 맞은 경우가 없을 때는 <c:otherwise> 분기됨 

  → 'if ~ else if ~ else' 의 처리가 가능 

<c:choose>
        <c:when test="조건식">
             조건식이 참인 경우, 출력할 내용
        </c:when>
        <c:otherwise>
             조건이 맞는 경우가 없는 경우, 출력할 내용 
        </c:otherwise>
</c:choose>

 

'백엔드 > JSP' 카테고리의 다른 글

JSP : EL  (0) 2023.06.20
웹 프로그래밍의 시작 (3)  (0) 2023.06.18
웹 프로그래밍의 시작 (2)  (0) 2023.06.16
웹 프로그래밍의 시작 (1)  (0) 2023.06.14
JSP Servlet 기초 (8) : Session  (0) 2023.06.13