앞서 EL을 위해 설치한 라이브러리가 있는데, 이 라이브러리가 JSTL을 제공한다.
https://itstudy-mary.tistory.com/127
JSTL을 선언하는 방법은 다음과 같다
<c: 명령어></c: 명령어>
이렇게 앞에 c를 붙여서 JSTL을 나타내는 것을 코어언어라고 하는데, 제일 보편적으로 쓰이는 JSTL이다.
c는 왜 붙이는가? 이 형태의 경우 HTML과 유사해 구분하기 힘들고, 내부에 있는 언어를 톰캣이 컴파일 하기 위해서 사용하는 일종의 지시어이다.
그런데 문제가 있다. 이 형태는 HTML내부에 c:를 붙이는 형태라 원래 태그를 정의하는 HTML은 이 태그를 오류로 받아들인다. 이 문제를 해결하기 위해서 다음 사이트의 코어 태그를 가져와야 한다.
https://www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm
자주 쓰는 코어 태그는 다음과 같다
- 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의 고질적인 문제인 괄호의 배분 문제가 사라지게 되었다.
반응형
'JSP' 카테고리의 다른 글
Servlet 과 JSP를 이용한(모델2 형식) 블로그 만들기(8) - 부트스트랩과 섬머노트를 이용한 글쓰기 페이지 만들기 (0) | 2020.06.04 |
---|---|
Servlet 과 JSP를 이용한(모델2 형식) 블로그 만들기(7) - ajax를 이용한 아이디 중복검사 하기 (0) | 2020.06.03 |
3. EL (0) | 2020.06.03 |
3. 내장객체 (0) | 2020.06.01 |
JWT (0) | 2020.06.01 |