Jam's story
[JSP] JSTL 본문
JSTL 이란 ? JSP Standard Tag Library
- 개발자가 필요에 의해서 태그를 만들어서 사용할 수 있다.
- 커스텀 태그 중에 많이 사용된 것을 모아서 JSTL
- WEB-INF>lib>jstl-1.2.jar
- JSTL 기능
- 변수지원 - c:set c:remove
- 흐름제어 - c:forEach c:if c:choose
- URL 처리 - c:url c:redirect
- 출력태그 - c:out
- 데이터베이스 - sql:
- XML 태그 - xml:
- 국제화
- 지역
- 메시지 - fmt:
- 숫자, 날짜형식
- 함수 - fn:
이것을 꼭 추가해야한다.
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml"%>
<%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
window-preferences
템플릿수정
jstl로 sql 이용하기 - 이 방법 잘 안쓴다 .
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<link rel="shortcut icon" type="image/x-icon" href="../images/SiSt.ico">
<title>2022. 6. 23.-오전 9:33:51</title>
</head>
<body>
<sql:query var="rs" dataSource="jdbc/myoracle">
SELECT deptno, dname, loc
from dept
</sql:query>
<c:forEach items="${rs.rows}" var="dto">
<li>${dto.detpno }-${dto.loc }</li>
</c:forEach>
<h3></h3>
</body>
</html>
변수선언 <c:set> 과 값 변경
target => 대상의 property=>속성을 value=>로 바꾸겟다 .
target: 프로퍼티 값을 설정할 대상 객체 지정 자바빈, 맵, 표현식, el property: 설정할 프로퍼티의 이름 지정
<%@page import="days02.DeptDTO"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<link rel="shortcut icon" type="image/x-icon" href="../images/SiSt.ico">
<title>2022. 6. 23.-오전 10:06:16</title>
</head>
<body>
<h3></h3>
<%
DeptDTO dto=new DeptDTO(10,"QC","SEOUL");
%>
<%-- <c:set var="dto2" value="${dto}"></c:set> --%>
<c:set var="dto2" value="<%=dto %>"></c:set>
deptno: ${dto2.deptno }<br>
dname:${dto2.dname }<br>
loc:${dto2.loc }<br>
<!-- deptno10->50 수정 -->
<hr>
<c:set target="${dto2}" property="deptno" value="50"></c:set>
deptno: ${dto2.deptno }<br>
dname:${dto2.dname }<br>
loc:${dto2.loc }<br>
</body>
</html>
<%@page import="java.util.Map"%>
<%@page import="java.util.HashMap"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>2022. 6. 23.-오전 10:13:25</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
<h3>ex04_03.jsp</h3>
<%
Map<String, String>map = new HashMap<>();
map.put("id","admin");
map.put("passwd","1234");
%>
<c:set var="m" value="<%= map %>"></c:set>
<!-- Map 객체의 key를 이용해 value 출력 -->
m.id = ${ m.id }<br>
m.passwd = ${ m.passwd }<br>
<!-- map.put("name","hong") 엔트리를 맵에 추가 -->
<%-- <c:set target="<%= map %>" property="name" value="hong"></c:set> --%>
<c:set target="${ m }" property="name" value="hong"></c:set>
m.name = ${ m.name }<br>
</body>
</html>
코어- 흐름제어 if ,forEach, choose, forTokens
짝수 홀수
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<link rel="shortcut icon" type="image/x-icon" href="../images/SiSt.ico">
<title>2022. 6. 23.-오전 9:48:13</title>
</head>
<body>
<h3>코어- 흐름제어 if ,forEach, choose, forTokens</h3>
<c:set var="num" value="${param.num }"></c:set>
<%-- <c:if test="${num/2 }">짝수</c:if>
<c:if test="${num div 2 }">짝수</c:if> --%>
<%-- <c:if test="${num%2 }">짝수</c:if> --%>
<c:if test="${num mod 2 eq 0}">짝수</c:if>
<c:if test="${num mod 2 eq 1}">홀수</c:if>
<%-- <c:if test="${num mod 2 != 0}">홀수</c:if> --%>
<%-- <c:if test="${num mod 2 ne 0}">홀수</c:if> --%>
</body>
</html>
<c:set value="${param.kor }" var="kor"></c:set>
<c:if test="${kor >=90 && kor<=100 }">수</c:if>
<c:if test="${kor >=90 && kor<=90 }">우</c:if>
<c:if test="${kor >=90 && kor<=80}">미</c:if>
<c:if test="${kor >=90 && kor<=70}">양</c:if>
<c:if test="${kor >=90 && kor<=100 }">가</c:if>
<c:choose>
<c:when test="${kor >=90 && kor<=100 }">수</c:when>
<c:when test="${kor ge 80 and kor lt 90 }">우</c:when>
<c:when test="">미</c:when>
<c:when test="">양</c:when>
<c:otherwise>가</c:otherwise>
</c:choose>
c:forEach var="변수명" items="컬렉션, 배열 ,맵 "
c:forEach begin ="시작값" end="끝값" step="중가치" var="변수명"
1+ 2+ 3+ 4+ 5+ 6+ 7+ 8+ 9+ 10+ =55
${status.current} 현재 for문의 해당하는 번호
${status.index} 0부터의 순서
${status.count} 1부터의 순서
${status.first} 첫 번째인지 여부
${status.last} 마지막인지 여부
${status.begin} for문의 시작 번호
${status.end} for문의 끝 번호
${status.step} for문의 증가값
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<link rel="shortcut icon" type="image/x-icon" href="../images/SiSt.ico">
<title>2022. 6. 23.-오전 10:31:40</title>
</head>
<body>
<h3></h3>
<!-- c:forEach var="변수명" items="컬렉션, 배열 ,맵 "
c:forEach begin ="시작값" end="끝값" step="중가치" var="변수명" -->
<!-- 1+ 2+ 3+ 4+ 5+ 6+ 7+ 8+ 9+ 10+ =55 -->
<!-- 1번째방법 -->
<c:set var="sum" value="0"></c:set>
<c:forEach begin="1" end="10" step="1" var="i">
<c:if test="${i eq 10 }">${i }</c:if>
<c:if test="${i ne 10 }">${i }+</c:if>
<c:set var="sum" value="${sum+i }"></c:set>
</c:forEach>
=${sum }
<hr>
<!-- 2번째방법 -->
<c:forEach begin="1" end="10" step="1" var="i">
<!-- += 문자열 연결 연산자 -->
${i += (i eq 10 ? "" : "+") }
<c:set var="sum2" value="${sum2+i }"></c:set>
<%--
위에꺼랑 같은코딩
<c:set var="sum" ${sum+i }> ${sum+i }</c:set> --%>
</c:forEach>
=${sum }
<hr>
<c:forEach begin="1" end="10" step="2" var="i" varStatus="status">
<c:if test="${status.first}">첫번째</c:if>
<c:if test="${status.last}">마지막</c:if>
test-${i }:[ ${status.count}/${status.index}/${status.first}/${status.last}]<br>
</c:forEach>
</body>
</html>
<c:set var="m" value="<%=new int[] {1, 4, 5, 4, 2} %>"></c:set>
<c:forEach items="${m }" var="n" varStatus="status">
<li>m[${status.index}] : ${n } - ${status.first}/${status.last }</li>
</c:forEach>
<%
Map<String, String> map = new HashMap<>();
map.put("k1","v1");
map.put("k2","v2");
map.put("k3","v3");
map.put("k4","v4");
%>
<ol>
<c:forEach items="<%= map %>" var="entry">
<li>${ entry.key } - ${ entry.value }</li>
</c:forEach>
</ol>
<!-- c:url -->
<c:url var="url" value="ex05jsp"></c:url>
<c:redirect url="${url }">
<!-- c:url -->
<c:url var="url" value="ex05.jsp"></c:url>
<c:redirect url="${url }">
<!--리다이렉트 될때 파라미터값을 가져가고 싶을때 -->
<c:param name="name" value="admin"></c:param>
<c:param name="age" value="10"></c:param>
</c:redirect>
</c:redirect>
ex05.jsp에
>name="${param.name}";
>age="${param.age}";
<%
FileReader fr = null;
try {
String path = "days08/ex01.jsp";
String realPath = request.getRealPath(path);
fr = new FileReader(realPath);
%>
<pre>
실제배포경로 = <%=realPath %> <br />
<c:out value="<%=fr %>" escapeXml="true"></c:out>
</pre>
<%
} catch (Exception e) {
%>
에러: <%=e.getMessage() %>
<%
} finally {
if (fr != null) {
try { fr.close(); } catch (IOException ex) {}
}
}
%>
try-catch
<c:catch var="ex">
</c:catch>
<c:if test="${ex != null }">
${ex }
</c:if>
<%
Date now = new Date();
%>
now: <%=now %><br>
<hr>
<c:set value="<%=now %>" var="now"></c:set>
<fmt:formatDate value="${now }"/>
<fmt:formatDate value="${now }" dateStyle="default"/> <!-- 기본 --><br>
<fmt:formatDate value="${now }" dateStyle="full"/> <br>
<fmt:formatDate value="${now }" dateStyle="short"/> <br>
<fmt:formatDate value="${now }" dateStyle="long"/> <br>
<fmt:formatDate value="${now }" dateStyle="medium"/> <br>
<hr>
<fmt:formatDate value="${now }" type="date"/> <br>
<fmt:formatDate value="${now }" type="time"/> <br>
<fmt:formatDate value="${now }" type="both"/> <br>
<hr />
<fmt:formatDate value="${now }" pattern="yyyy년 MM월 dd일"/> <br>
ex06_02.jsp
<%@page import="java.time.LocalDate"%>
<%@page import="java.time.LocalDateTime"%>
<%@page import="java.time.format.DateTimeFormatter"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Date"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<link rel="shortcut icon" type="image/x-icon" href="../images/SiSt.ico">
<title>2022. 6. 23.-오전 11:35:04</title>
</head>
<body>
<h3></h3>
<%
Date now = new Date();
%>
now: <%=now %><br>
<hr>
<c:set value="<%=now %>" var="now"></c:set>
<fmt:formatDate value="${now }"/>
<fmt:formatDate value="${now }" dateStyle="default"/> <!-- 기본 --><br>
<fmt:formatDate value="${now }" dateStyle="full"/> <br>
<fmt:formatDate value="${now }" dateStyle="short"/> <br>
<fmt:formatDate value="${now }" dateStyle="long"/> <br>
<fmt:formatDate value="${now }" dateStyle="medium"/> <br>
<hr>
<fmt:formatDate value="${now }" type="date"/> <br>
<fmt:formatDate value="${now }" type="time"/> <br>
<fmt:formatDate value="${now }" type="both"/> <br>
<hr />
<fmt:formatDate value="${now }" pattern="yyyy년 MM월 dd일"/> <br>
<%
String strNow="2022년 06월 22일";
//1
Date now2=new Date(2022-1900, 6-1, 22);
//2
String pattern="yyyy년 MM월 dd일";
SimpleDateFormat sdf= new SimpleDateFormat(pattern);
Date now3=sdf.parse(strNow);
//3
String pattern2="yyyy년 MM월 dd일";
DateTimeFormatter f=DateTimeFormatter.ofPattern(pattern2);
LocalDate now4=LocalDate.parse(strNow,f);
//4
%>
</body>
</html>
'JSP' 카테고리의 다른 글
[JSP] ServletContextListener 인터페이스 활용 방법 (0) | 2022.06.24 |
---|---|
[JSP] MVC 패턴 (0) | 2022.06.23 |
[JSP] EL을 사용해서 쿠키를 읽고 쓰기 (0) | 2022.06.23 |
[JSP] EL (0) | 2022.06.22 |
[JSP] 세션 (0) | 2022.06.22 |
Comments