쌍용교육(JAVA)/JSP

쌍용교육 -JSP수업 54일차 jstl

구 승 2024. 5. 7. 10:38

jstl을 사용하기 위해서는 jar파일이 필요하다.

CH03_JSP => WEB-INF => lib폴더

jstl-1.2.jar
0.40MB

 

 

package kr.web.member =>

Member

package kr.web.member;

public class Member {
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
}

s01_set.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="kr.web.member.Member" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>set 태그</title>
</head>
<body>
<%--		속성명		   속성값 		   영역 --%>
<c:set var="msg" value="봄" scope="page"/>
<c:set var="msg2" value="여름" scope="request"/>
<c:set var="msg3" value="가을" scope="session"/>
<c:set var="msg4" value="겨울" scope="application"/>
${pageScope.msg}, ${msg}<br>
${requestScope.msg2}, ${msg2}<br>
${sessionScope.msg3}, ${msg3}<br>
${applicationScope.msg4}, ${msg4}<br>

<%
	Member member = new Member();
%>
<%-- page 영역에 Member 객체 저장 --%>
<c:set var="member" value="<%= member %>"/>
<%-- Member 객체의 name 멤버변수에 데이터 저장 --%>
<%--
target : 값을 설정하고자 하는 객체를 명시
property : 값이 저장되는 멤버변수
 --%>
<c:set target="${member}" property="name" value="홍길동"/> <!-- 자동으로 setName이 호출 -->
회원 이름 : ${member.name}<br> <!-- 자동으로 getName이 호출 -->
회원 이름 : ${member.getName()}<br> 
</body>
</html>

s02_remove.jsp 

<%@ page language="java" 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">
<title>remove 태그</title>
</head>
<body>
<c:set var="city" value="인천"/>
데이터 삭제 전 : ${city}<br>
---------------------<br>
<c:remove var="city"/>
데이터 삭제 후 : ${city}
</body>
</html>

s03_if.jsp

<%@ page language="java" 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">
<title>if 태그</title>
</head>
<body>
<c:if test="true">
무조건 수행<br>
</c:if>
<%--				문자열		문자열  이므로 java는 ==가 아닌 equals를 써야되는게 맞지만 el은 ==(비교연산자)를씀. --%>
<c:if test="${param.name=='dragon'}">
name 파라미터의 값이 ${param.name}입니다.<br>
</c:if>
<%-- tomcat 7버전 이상부터는 el도 equals 비교 지원 --%>
<c:if test="${param.name.equals('dragon')}">
name 파라미터의 값이 ${param.name}입니다.<br>
</c:if>

<c:if test="${param.age >=20}">
당신의 나이는 20세 이상입니다.
</c:if>

</body>
</html>

 

노란줄을 입력하지않으면 '무조건 수행' 말고는 아무것도 뜨지않는다.

 

 s04_choose.jsp 

<%@ page language="java" 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">
<title>choose 태그</title>
</head>
<body>
<c:choose>
	<c:when test="${param.name == 'dragon' && param.age >=20}">
		당신의 이름은 ${param.name}이고 20세 이상입니다.
	</c:when>
	<c:when test="${param.name == 'dragon'}">
		당신의 이름은 ${param.name}입니다.
	</c:when>
	<c:when test="${param.age >=20}"><!-- 파라미터로 넘어오면 String으로만 받아오는데 이를 자동으로 int로 바꿔준다. -->
		당신은 20세 이상입니다.
	</c:when>
	<c:otherwise>
		당신은 dragon이 아니고 20세 이상이 아닙니다.
	</c:otherwise>
</c:choose>
</body>
</html>

s05_forEach.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import = "java.util.HashMap" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>forEach 태그</title>
</head>
<body>
<h4>1부터 100까지의 홀수의 합</h4>
<c:set var="sum" value="0"/>
<c:forEach var="i" begin="1" end="100" step="2">
	<c:set var="sum" value="${sum+i}"/>
</c:forEach>
결과 = ${sum}

<h4>구구단 : 5단</h4>
<ul>
<c:forEach var="i" begin="1" end="9" step="1">
	<li>5 * ${i} = ${5*i}</li>
</c:forEach>	
</ul>
<h4>int형 배열</h4>
<c:set var="intArray" value="<%= new int[]{10,20,30,40,50} %>"/>
<c:forEach var="i" items="${intArray}" begin="2" end="4" varStatus="status"><!--begin="2" end="4" => 인덱스 2번부터 4번까지 읽기위함  -->
	<%--	인덱스			반복돌리는 횟수	 	 값  	첫번째 반복여부: 첫번째면 true   마지막 반복여부: 마지막이면 true  --%>
	${status.index} - ${status.count} - [${i}] - ${status.first} - ${status.last}<br>
</c:forEach>

<h4>Map</h4>
<%
	HashMap<String,String> mapData = new HashMap<String,String>();
	
	mapData.put("name","홍길동");
	mapData.put("job","소방관");
	mapData.put("hobby","영화감상");
%>
<c:set var="map" value="<%= mapData %>"/>
<c:forEach var="i" items="${map}">
	${i.key} = ${i.value}<br>
</c:forEach>
</body>
</html>

s06_forTokens.jsp 

<%@ page language="java" 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">
<title>forTokens 태그</title>
</head>
<body>
<h4>쉼표와 점을 구분자로 사용</h4>
<c:forTokens items="빨강색,주황색.노란색.초록색,파랑색,남색.보라색" var="token" delims=",.">
	${token}<br>
</c:forTokens>
<h4>날짜를 연월일시분초로 구분해서 출력</h4>
<c:forTokens items="2024-05-07 14:09:20" var="now" delims="- :">
	${now}<br>
</c:forTokens>
	
</body> 
</html>

s07_import.jsp

<%@ page language="java" 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">
<title>Import 태그</title>
</head>
<body>
<h1>Import 태그 연습</h1>
<c:import url="https://www.daum.net"/>
<h1>import 태그 연습 끝~~~~</h1>
</body>
</html>

s08_out.jsp 

<%@ page language="java" 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">
<title>out 태그</title>
</head>
<body>
<%-- escapeXml = "true" 이면 html 태그 불인정(기본값) --%>
<c:out value="<h1>오늘은 좋은날<h1>" escapeXml="true"/>
<%-- escapeXml="false"이면 html 태그 인정 --%>
<c:out value="<h1>오늘은 좋은날<h1>" escapeXml="false"/>
</body>
</html>

s09_catch.jsp 

<%@ page language="java" 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">
<title>catch 태그</title>
</head>
<body>
<h1>catch 태그 사용하기</h1>
<c:catch var="ex">
	name 파라미터의 값 = <%= request.getParameter("name") %><br>
<%
	if(request.getParameter("name").equals("test")){
%>
	${param.name}은 test입니다.		
<%
	}
%>
</c:catch>
<c:if test="${ex!=null}">
	예외가 발생했습니다.<br>
	${ex}
</c:if>
</body>
</html>

s10_formatNumber.jsp 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>formatNumber 태그</title>
</head>
<body>
숫자 : <fmt:formatNumber type="number" value="1000000"/><br>
통화 : <fmt:formatNumber type="currency" value="1000000" currencySymbol="$"/><br>
통화 : <fmt:formatNumber type="currency" value="1000000" currencySymbol="\\"/><br>
퍼센트 : <fmt:formatNumber type="percent" value="0.3"/><br>
패턴 : <fmt:formatNumber value="12.345" pattern="00000.00"/>
</body>
</html>

s11_formatDate.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>formatDate 태그</title>
</head>
<body>
<c:set var="now" value="<%= new java.util.Date() %>"/>
${now}<br>
<fmt:formatDate value="${now}" type="date" dateStyle="full"/><br>
<fmt:formatDate value="${now}" type="date" dateStyle="short"/><br>
<fmt:formatDate value="${now}" type="time" timeStyle="full"/><br>
<fmt:formatDate value="${now}" type="time" timeStyle="short"/><br>
<fmt:formatDate value="${now}" type="both" dateStyle="full" timeStyle="full"/><br>
<fmt:formatDate value="${now}" pattern="yyyy년MM월dd일 a hh:mm:ss"/>
</body>
</html>

s12_functions.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>functions 라이브러리</title>
</head>
<body>
<c:set var="str1" value=" Functions <태그>를 사용합니다. "/>
<c:set var="str2" value="사용"/>
<c:set var="str3" value="10,20,30-40,50,60,70,80.90,100"/>

문자열의 길이:${fn:length(str1)}<br>
대문자로 변경:${fn:toUpperCase(str1)}<br>
소문자로 변경:${fn:toLowerCase(str1)}<br>
인덱스 3~6전까지 문자열 추출:${fn:substring(str1,3,6)}<br>
문자열에서 원래 문자를 지정한 문자로 대체:${fn:replace(str1," ","-")}<br>
문자열의 앞뒤 공백 제거:${fn:trim(str1)}<br>
지정한 문자의 인덱스 구하기:${fn:indexOf(str1,str2)}<br>
문자열에서 지정한 문자를 구분자로 문자열을 잘라내기:${fn:split(str3,',')}<br>
<c:forEach var="array" items="${fn:split(str3,',')}">
	${array}<br>
</c:forEach>
</body>
</html>