라이브러리 다운로드 필요

http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/

 

Index of /dist/jakarta/taglibs/standard/binaries

 

archive.apache.org

jstl.jar
0.02MB
standard.jar
0.38MB


taglib : 태그 라이브러리, html태그 처럼 생겼음

    <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix="C"  %>

CDN 방식은 아님 , 태그라이브러리의 설정문서가 제목 : uri : 기능 순으로 되어있음

어떤 제목의 기능들을 쓰겠다고 선언 (import와 유사)

 

 


JSTL에서는 속성값에 "을 빼면 에러

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix="C"  %>
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL Practice</title>
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
	<c:if test="${empty list}">
		리스트가 비어있습니다.
	</c:if>
</body>
</html>

 


index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
	<button id="toInput">toInput</button>
	<button id="toOutput">toOutput</button>
	<button id="toDelete">toDelete</button>
	<button id="toPractice">연습2</button>
	<script>
		$("#toInput").on("click",function(){
			location.href="input.jsp";
		
		})
		$("#toOutput").on("click",function(){
			location.href="output.msg";
		})
		$("#toDelete").on("click",function(){
			location.href="delete.msg";
		})
		$("#toPractice").on("click", function() {
			location.href = "practice2.prc";
		
	})
	</script>
</body>
</html>

 

PracticeController.java

package kh.backend.controller;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import kh.backend.dto.MessagesDTO;

@WebServlet("*.prc")
public class PracticeController extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String requestURL = request.getRequestURI();
		String ctxPath = request.getContextPath();
		String cmd = requestURL.substring(ctxPath.length());
		System.out.println(cmd);
		
		if(cmd.contentEquals("/practice1.prc")) {

		}else if(cmd.contentEquals("/practice2.prc")) {

			List<MessagesDTO> list = new ArrayList<>();
			list.add(new MessagesDTO(1002,"Tom","Cat",null));
			list.add(new MessagesDTO(1003,"Jane","JSTL",null));
			list.add(new MessagesDTO(1004,"Mike","Servlet",null));
			request.setAttribute("list", list);
			
			RequestDispatcher rd = request.getRequestDispatcher("practice2.jsp");
			rd.forward(request, response);
			
		}
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

<C:choose>

, when , otherwise

JSPL문법에서 if, else if 대신 사용

 

practice2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="C"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL Practice</title>
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
	<%-- 	<c:if test="${empty list}">
		리스트가 비어있습니다.
	</c:if> --%>

	<C:choose>
		<C:when test="${empty list}">
			리스트가 비어있습니다.
		</C:when>
		<C:otherwise>
			리스트가 비어있지 않습니다.
		</C:otherwise>
	</C:choose>
    
</body>
</html>

 

else if 처럼 조건항목을 추가하고 싶다면 when 을 반복해서 사용하면 된다.


<C:forEach>

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="C"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL Practice</title>
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>

	<C:forEach var="i" begin="0" step="1" end="10">
		${i}
	</C:forEach>
    
</body>
</html>

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="C"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL Practice</title>
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>

	<C:forEach var="i" begin="0" step="1" end="10">
		${list[i].name} : ${list[i].msg} <br>
	</C:forEach>
    
</body>
</html>

불필요하게 10번 반복되지 않도록 하기

 

자바의 foreach 처럼 실행하려면

	for(MessagesDTO i : list){
	}

 

	<C:forEach var="i" items="${list}">
	</C:forEach>

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="C"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL Practice</title>
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
	
	<C:forEach var="i" items="${list}">
	${i.name} : ${i.msg} <br>
	</C:forEach>

</body>
</html>

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="C"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL Practice</title>
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>

	<C:choose>
		<C:when test="${empty list}">
			출력할 내용이 없습니다.
		</C:when>
		<C:otherwise>
			<C:forEach var="i" items="${list}">
				${i.name} : ${i.msg} <br>
			</C:forEach>
		</C:otherwise>
	</C:choose>

</body>
</html>

 

'디지털 컨버전스 > JSP' 카테고리의 다른 글

[JSTL] <c:import>  (0) 2020.06.24
[JSP] EL/JSTL 적용  (0) 2020.05.06
[JSP] EL - Expression language  (0) 2020.05.06
[JSP] Redirect & Forward  (0) 2020.04.28
[JSP] MVC2 - delete  (0) 2020.04.28

+ Recent posts