Tiny Bunny [WEB] JSTL - 솜님의 블로그
솜님의 블로그
카테고리
작성일
2024. 8. 25. 15:39
작성자
겨울솜사탕

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