[WEB] JSP-JSTL

지수·2021년 9월 3일
0

플레이데이터

목록 보기
30/50
post-thumbnail

1. JSTL이란?

: JSP Standard Tag Library의 약어

  • 별도의 library로 제공되기 때문에 사용 전 WebContent-WEB-INF-lib에 library 파일을 넣어줘야함
    (아파치 사이트 혹은 각 톰캣 서버 내장 예시 샘플 사용)
  • jsp에서 jstl tag 사용을 위해 상단에 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 입력



2. JSTL의 목적

  • jsp에는 html/css/java script + java + jsp tag 혼재 되어 사용됨
  • 개발 권장 사항은 가급적 jsp에 순수 java 코드 최소화 (<% %> 사용해서 jsp 내부에 java 코드 넣는 것 비추)

ㄴ jsp에서 순수 자바 코드 최소화

ㄴ 반복, 조건문은 순수 자바로 ❌, jstl tag 사용 ⭕




3. JSTL 활용

1) 조건 tag

  • <c:if test="${조건}"></c:if> : 단일 조건
  • <c:choose><c:when test="${조건1}"></c:when>
    <c:otherwise></c:otherwise></c:choose> : 다중 조건, 조건1 & 그외(else)
<!-- jstl tag 활용을 위한 설정 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!-- html 관련 태그 생략 -->

<h3>[1] 조건 tag</h3>
	
  <%-- 조건식이 하나인 경우 사용하는 tag --%>
	<c:if test="${'a'=='a'}">
		1. 조건식이 true <br>	
	</c:if>
		
	<c:if test="${'a'!='a'}">
		2. 'a' != 'a' 조건식 <br>
	</c:if>
		
  <br><hr><br>

  <%-- 다중 조건식인 경우 사용하는 tag --%>
	<c:choose>
		<c:when test="${1==1}">
			3. 1==1 인 경우 <br>
		</c:when>
		<c:when test="${1==2}">
			4. 1==2 인 경우 <br>
		</c:when>
		<c:otherwise>
			5. 모든 조건식이 false인 경우 실행 <br>
		</c:otherwise>
	</c:choose>

2) 반복 tag

  • 숫자 반복 : <c:forEach begin="시작숫자" end="끝숫자" step="간격" var="변수 이름"></c:forEach>
  • 객체 반복 : <c:forEach items="${반복할 객체}" var="변수 이름"></c:forEach>
    * items 내부에 ${} EL tag 사용하여 객체 이름 입력해야함
<!-- jstl tag 활용을 위한 설정 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!-- html 관련 태그 생략 -->

<h3>[2] 반복 tag</h3>

  <%-- 숫자 반복 --%>
	<c:forEach begin="1" end="5" step="2" var="data">
		${data}-
	</c:forEach>
	
	<br><br>
	
	<c:forEach begin="1" end="5" step="2" var="data" varStatus="pd">
		순번 : ${pd.count} - 데이터 : ${data} <br>
	</c:forEach>
    
  <br><hr><br>
  
  <%-- 객체 반복 --%>
  
  <%
	Person[] v4 = {new Person("재석1", 10), 
		       new Person("재석2", 20),
		       new Person("재석3", 30),
		       new Person("재석4", 40)};
	request.setAttribute("v4", v4);
  %>

  <%-- ${data} 즉 브라우저에 출력시에도 toString 메소드가 자동 호출 --%>
	<c:forEach items="${v4}" var="data">
		${data} <br>
	</c:forEach>

	<br>

  <%-- Person 객체 안의 멤버 변수 하나씩 호출하여 출력 --%>
	<c:forEach items="${v4}" var="data">
		이름 : ${data.name} / 나이 : ${data.age} <br>
	</c:forEach>  
    
 
 <br><hr><br>
	
	
  <%
	HashMap<String, String> v7 = new HashMap<>();
	v7.put("k1","재석");
	v7.put("k2","종원");
	request.setAttribute("v7", v7);
  %>
	
  <%-- key=valye 구조로 출력 --%>
	<c:forEach items="${v7}" var="data">
		key=value 구조 : ${data} /
	</c:forEach>
	
  <br><br>

  <%-- key와 value 각각 출력 --%>
	<c:forEach items="${v7}" var="data">
		key : ${data.key} / value : ${data.value} <br>
	</c:forEach>



#. 번외 - 용어 정리

새로운 용어들을 와다닥 배우고 약자만 사용하다보니 슬슬 헷갈리기 시작해서 하는 용어 정리 📚

📍 JDBC = Java Database Connectivity

  • 자바에서 DB 연동하기 위해 사용하는 API
  • sql문을 일일히 다 작성해서 넣어주어야 함

📍 JPA = Java Persistence API

  • 자바에서 DB 연동하기 위해 사용하는 API
  • JDBC처럼 일일히 sql문을 적어주지 않아도 보다 편리하게 DB 접근 가능

📍 Servlet

  • http 프로토콜을 편리하게 지키며(HTTPServlet 상속) 동족 웹 페이지 생성, 데이터 처리를 수행하는 자바 프로그램
    = servlet 클래스의 구현 규칙을 지킨 자바프로그램

📍 JSP = Java Server Pages

  • servlet + 인터페이스(view) 구현 기술
  • servlet만으로는 UI적 처리 한계를 갖기 때문에 html 안에 java 코드를 삽입한 형태의 jsp 등장
  • html tag / jsp tag / EL / JSTL로 구성됨

📍 JSTL = Java Standard Tag Library

  • jsp에서 순수 자바 코드는 최소화 하기 위해 반복/조건문 등을 jstl tag로 대체
profile
사부작 사부작

0개의 댓글