JSTL 라이브러리
🍀현재까지의 흐름
JAVA
- 라이브러리.jar >> jsoup 사용하여 웹 크롤링 / ojdbc6 (JDBC)
- SQL >> Oracle
- HTML CSS <script> 사용
- Servlet (.java, not POJO)
: 서블릿 사용이 매우 어렵기 때문에 JSP를 사용한다.
(jsp는 결국 java파일이 되기 때문에 내장객체, <jsp: > 액션 태그를 사용할 수 있다.
- EL (${ }, #{ })
: View에서 자바를 제거하고 선언을 줄여주기 위한 목적으로 EL 사용한다.
- EL과 같은 맥락으로 사용할 == JSTL
: View에서 자바를 제거하기 위한 목적으로 사용하고, 제어문 대신 사용한다.
JSTL의 경우 라이브러리이다.
따라서 jar가 필요함
Webapp > lib폴더 안쪽에
- jstl.jar
- standard.jar
파일을 넣어준다.
추가적으로 현재 사용하고 있는 톰캣 버전이 10이어서, 제대로 동작되지 않는 것들이 있으므로
- jakarta.servlet.jsp.jstl-2.0.0.jar
- jakarta.servlet.jsp.jstl-api-2.0.0 .jar
파일도 넣어주어야 한다.
JSTL을 사용할 땐 내가 JSTL을 쓴다는 선언을 최상단에 해줘야 한다.
이를 taglib 지시어라고 한다.
<%@ page %> : page 지시어
<%@ taglib %> : taglib 지시어
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
prefix="c" 의 "c"는 >> 태그의 앞머리를 c로 주었다는 뜻.
따라서 사용할 때 <c: > 로 사용한다.
🍀 uri와 url
- uri (==식별자)
: 정보확인, 인터넷상의 리소스 자원 자체를 식별한다.
- url (==식별자+위치)
: (리소스 안에 있는) 파일에 들어있는 것들, 네트워크 상 통합 자원(리소스)의 위치를 나타냄
if문
<c:if test="조건식> </c:if> 형식으로 사용.
<c:if를 쓰면 자동적으로 위의 형식으로 나오는데, 이는 필수 속성이라는 뜻이다.
자바저럼 else가 있지 않아서 [조건식 + 반대되는 조건식]으로 작성한다.
<c:if test="${not empty member}">
<a href="controller.jsp?action=LOGOUT">로그아웃</a>
<a href="controller.jsp?action=MYPAGE">마이페이지</a>
<a href="controller.jsp?action=CART">장바구니</a>
</c:if>
<c:if test="${empty member}">
<form action="controller.jsp" method="POST">
<input type="hidden" name="action" value="LOGIN">
아이디 <input type="text" name="mid" required> <br>
비밀번호 <input type="password" name="password" required> <br>
<input type="submit" value="로그인"> <br>
</form>
<a href="join.jsp">회원가입</a>
</c:if>
for문
- forTokens : 어떤 규칙을 자를 때 사용함. (웹개발에서는 잘 쓰지 않음)
- 우리가 일반적으로 알고 있는 for문은 초기식/조건식/증감식 구성
<c:forEach begin="0" end="5" step="2">
</c:forEach>
이게 일반적인 for문인데, foreach는 5, 2 같은 수를 주지 않는다.
따라서 이 형식보다는,
<c:forEach 타입 변수명:컬렉션명(c에서 넘겨준 데이터 수만큼)>
</c:forEach>
으로 사용한다.
### 상품 목록 ###
<ol>
<c:forEach var="data" items="${datas}">
<li><a href='controller.jsp?action=DELETEPRODUCT&num="+data.getNum()+"'>[${data.name}]</a></li>
</c:forEach>
</ol>
여기서 선언한 var="data"는 for문을 반복하며 요소들을 저장할 변수의 이름을 지정한 부분이고,
items="${datas}"는 반복할 대상이다. (datas의 요소들이 for문을 통해 반복되면서 var="data"에 저장된다)
따라서 <c:forEach var="data" items="${datas}"> 코드는
자바 코드의 for(ProductDTO data : (ArrayList<ProductDTO>)request.getAttribute("datas")) 의 코드와 동일한 내용이다.
choose
choose에서는 여러가지 케이스를 작성한다.
활용도가 높지는 않고, 주로 쇼핑몰 같은 페이지에서 사용한다.
<!-- 사용법 -->
<c:choose>
<c:when test="조건식"></c:when>
<c:when test="조건식"></c:when>
<c:when test="조건식"></c:when>
<c:when test="조건식"></c:when>
<c:otherwise></c:otherwise> >> 위의 조건식들에 해당하지 않는 것
</c:choose>
<!-- 사용예시 -->
<c:choose>
<c:when test="사용자가 들어온 링크가 베이지 링크라면"></c:when>
<c:when test="사용자가 들어온 링크가 블랙 링크라면"></c:when>
<c:otherwise></c:otherwise>
</c:choose>
'WEB > 백' 카테고리의 다른 글
[WEB] xml 파일 (0) | 2024.08.25 |
---|---|
[WEB] 커스텀 태그 (0) | 2024.08.25 |
[WEB] EL식 (0) | 2024.08.22 |
[WEB] 에러 페이지 (1) | 2024.08.22 |
[WEB] 요청과 기능 (action 파라미터) (0) | 2024.08.22 |