JSP

221202 JSTL

주영재 2022. 12. 2. 15:06

JSTL(JSP Standard Tag Library)

/*
자바에도 없고, 톰캣에도 없다. 설치가 필요
https://jakarta.apache.org/로 이동
->Taglib
->2014/01/02 standard
->1.2가 최상버전인데 1.1로 다운
->binaries/
->zip버전. jakarta-taglibs-standard-1.1.2.zip      
->다운받아서 lib폴더
->standard.jar과 jstl.jar
->이클립스 WEB-INF의 lib폴더에 넣으면 된다
*/


JSTL구문을 쓸 화면에서는 어떤 라이브러리의 종류를 사용할 것인지 선언문이 필요하다.

Core - 제어문  prefix: c
Formatting - 형변환 prefix : fmt

선언
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
uri-해당 라이브러리의 식별자의 이름
prefix : 태그의 이름

사용은 <c: 로. 
<c:out 은 출력
<c:set 은 변수선언
<c:remove 는 변수제거
<c:if 조건처리
<c:choose 다중조건처리
<c:when 조건에 맞을 때
<c:otherwise 맞는조건이 없을 때
<c:forEach 반복문
등등
when과 otherwise는 choose의 자식구문. switch나 else if를 대체하는 태그

<c:out value="출력값">을 하면 출력됨.
<c:set var="변수명" value="설정값" scope="범위">
<c:remove var="변수명" scope="범위">
<c:if test="조건식">
<c:forEach items="객체명" begin="시작값" end="끝 값" step="증감식" var="변수명">
var는 포문의 int i와 같다.
<c:choose>
<c:when test="조건식"> 처리 내용 </c:when>
<c:when test="조건식"> 처리 내용 </c:when>
<c:otherwise> 처리 내용 </c:otherwise>
</c:choose>

 

 

jstl_form

<%@ 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>
</head>
<body>	
	<h3>if절 확인하기</h3>
		<form action="jstl_if.jsp">
			이름:<input type="text" name="name"><br>
			나이:<input type="text" name="age"><br>
			<input type="submit" value="확인"><br>
		</form>
		
		
	<h3>choose절 확인하기</h3>
		<form action="jstl_choose.jsp">
			이름:<input type="text" name="name"><br>
			나이:<input type="text" name="age"><br>
			<input type="submit" value="확인"><br>
		</form>
</body>
</html>

form은 여러개 만들 수 있다

submit을 어떤 걸 누르느냐에 따라 다른 페이지로 이동한다.

 

jstl_if

<%@ 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>Insert title here</title>
</head>
<body>
	
	<!-- 태그를 혼자 쓸 거면 마지막에 /를 넣어주면 됨 -->
	<%--출력문 --%>
	<c:out value="${param.name }"/>
	
	<%--변수로 선언 --%>
	<c:set var="num" value="${param.age }"/>
	<c:out value="${num }"/>
	
	<hr/>
	<%--if문 --%>
	<%if(request.getParameter("name").equals("홍")){ %>
	
	<% }%>
	
	
	<c:if test="${param.name eq '홍'}">
		<h3>홍 입니다</h3>
	</c:if>
	
	<c:if test="${num >= 20 }">
		<h3>성인 입니다</h3>
	</c:if>
	<c:if test="${num < 20 }">
		<h3>미성년자 입니다</h3>
	</c:if>
	
	
	
	

</body>
</html>

 

jstl_choose

<%@ 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>Insert title here</title>
</head>
<body>
	
	<c:choose>
		<c:when test="${param.name eq '홍길동' }">
			<h3>홍길동</h3>
		</c:when>
		<c:when test="${param.name eq '이순신' }">
			<h3>이순신</h3>
		</c:when>
		<c:otherwise>
			<h3>둘다아님</h3>
		</c:otherwise>
	</c:choose>
	
	
	<c:choose>
		<c:when test="${param.age >= 20 }">
			<h3>성인 입니다</h3>
		</c:when>
		<c:otherwise>
			<h3>미성년자 입니다</h3>		
		</c:otherwise>	
	
	</c:choose>
	
</body>
</html>

when과 otherwise는 choose의 자식구문이다. 항상 같이 사용

 

 

 

JSTL을 쓸 때 EL태그를 자주 사용한다. 알아둘 것. 상황에 따라 <%자바코드%>를 가져와야 할 때도 있다.