라이브러리 다운로드 필요
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 |