본문 바로가기
JSP

4. JSTL

by 김마리님 2020. 6. 3.

앞서 EL을 위해 설치한 라이브러리가 있는데, 이 라이브러리가 JSTL을 제공한다.

https://itstudy-mary.tistory.com/127 

 

3. EL

EL(Expression Language)는 JSP 스크립트 태그를 좀 더 편하게 해주는 언어이다. 이 언어는 jsp자체로 제공하진 않고 라이브러리를 이용해야한다. 먼저 Maven responsitory를 들어가보자. https://mvnrepository.c..

itstudy-mary.tistory.com

JSTL을 선언하는 방법은 다음과 같다

<c: 명령어></c: 명령어>

이렇게 앞에 c를 붙여서 JSTL을 나타내는 것을 코어언어라고 하는데, 제일 보편적으로 쓰이는 JSTL이다.

c는 왜 붙이는가? 이 형태의 경우 HTML과 유사해 구분하기 힘들고, 내부에 있는 언어를 톰캣이 컴파일 하기 위해서 사용하는 일종의 지시어이다.

그런데 문제가 있다. 이 형태는 HTML내부에 c:를 붙이는 형태라 원래 태그를 정의하는 HTML은 이 태그를 오류로 받아들인다. 이 문제를 해결하기 위해서 다음 사이트의 코어 태그를 가져와야 한다.

https://www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm

 

JSP - Standard Tag Library (JSTL) Tutorial - Tutorialspoint

JSP - Standard Tag Library (JSTL) Tutorial In this chapter, we will understand the different tags in JSP. The JavaServer Pages Standard Tag Library (JSTL) is a collection of useful JSP tags which encapsulates the core functionality common to many JSP appli

www.tutorialspoint.com

그냥 이 코드 데이터 지시어 바로 밑에 편안하게 붙이시면 됩니다..!

 

자주 쓰는 코어 태그는 다음과 같다

  • c:set : 변수 선언
  • c:if : if문
  • c:choose, c:when, c:otherwise : 코어태그의 if문은 else가 없기 때문에 다음과 같은 태그를 이용.
  • c:forEach : 반복문

코어태그의 예시문을 보면,

 

 

- 코어 태그 적용 전

 <div class="collapse navbar-collapse" id="collapsibleNavbar">
    <ul class="navbar-nav">
    
    <% if(principal==null){%>
      <li class="nav-item"><a class="nav-link" href="/blog/user?cmd=login">로그인</a>
      </li>
      <li class="nav-item"><a class="nav-link" href="/blog/user?cmd=join">회원가입</a>
 
    <%}else{ %>
      <li class="nav-item"><a class="nav-link" href="/blog/board?cmd=write">글쓰기</a>
      </li>
      <li class="nav-item"><a class="nav-link" href="/blog/user?cmd=update">회원정보</a>
      </li>   
      <li class="nav-item"><a class="nav-link" href="/blog/user?cmd=logout">로그아웃</a>       
     <%} %>       
     
      </li>  
    </ul>
  </div>  

 

- 코어 태그 적용 후

		<div class="collapse navbar-collapse" id="collapsibleNavbar">
			<ul class="navbar-nav">

				<c:choose>
					<c:when test="${empty sessionScope.principal }">
						<li class="nav-item"><a class="nav-link" href="/blog/user?cmd=login">로그인</a></li>
						<li class="nav-item"><a class="nav-link" href="/blog/user?cmd=join">회원가입</a>
					</c:when>
					
					<c:otherwise>
						<li class="nav-item"><a class="nav-link" href="/blog/board?cmd=write">글쓰기</a></li>
						<li class="nav-item"><a class="nav-link" href="/blog/user?cmd=update">회원정보</a></li>
						<li class="nav-item"><a class="nav-link" href="/blog/user?cmd=logout">로그아웃</a></li>
					</c:otherwise>
				</c:choose>
				
			</ul>
		</div>

 

코드가 훨씬 보기 좋고 깔끔하고, html 과 유사해졌다. 또한 코어태그를 쓰면서 jsp의 고질적인 문제인 괄호의 배분 문제가 사라지게 되었다.

반응형