Servlet & Jsp

[JSP에서 JSTL사용하기 <c:out> & <c:forEach> ] - Head Frist Servlet & Jsp

사과씨앗 2020. 12. 28. 20:55
728x90
반응형

안녕하세요 이번 글에서는 jstl태그들의 사용법을 알아보겠습니다.

 

1. <c: out>

 

<c:out> 태그는 생명주기의 속성 값들을 jsp회면에서 사용할 때 사용됩니다.

 

request.setAttribute("name", "사과씨앗");

서블릿에서 request객체에 위와 같은 속성 값을 세팅하여 줍니다.

 

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page import="com.main.model.Member"%>
<%@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>
		
	<h1><c:out value="${name}" /></h1>	
		

</body>

</html>

위 코드처럼 c:out태그의 value에 서블릿에서 보낸 속성의 키값을 el태그를 사용하여 넣어줍니다.

 

 

화면과 같은 결과가 출력됩니다. 

 

c:out 태그는 해당 값이 value에 선언한 값이 없을 때 defalut 값을 선언할 수 있습니다.

 

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page import="com.main.model.Member"%>
<%@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>
		
	<h1><c:out value="${name2}" default="사과쥬스" /></h1>	
		

</body>

</html>

이렇게 선언하여 봅시다 name2라는 속성은 전달해주지 않았기 때문에 null인 상태입니다.

 

null값이 들어와서 미리 defalut 값으로 선언한 값이 호출됩니다.

 

2. <c:forEach>

 

forEach 태그는 반복문이 필요할 때 사용됩니다.

 

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//한글깨짐 방지
		request.setCharacterEncoding("UTF-8");
			
		ArrayList<String> list = new ArrayList<String>();
		list.add("사과씨앗");
		list.add("사과쥬스");
		list.add("사과파이");
		list.add("사과쨈");
		list.add("사과사과");
		list.add("사과김치");
		
		
		request.setAttribute("list", list);
		
		RequestDispatcher view = request.getRequestDispatcher("view/next.jsp");
		view.forward(request, response);
	
	}

서블릿에서 배열을 하나 선언하여 보내줍시다.

 

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page import="com.main.model.Member"%>
<%@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>
		
	<table>
	  <tbody>
	  	<!--var = 배열안에 값들을 받을 변수   items = request객체에 담아서 보낸 배열 -->			
		<c:forEach var="object" items="${list }">
			<tr>
					<td>${object}</td>			
			</tr>
		</c:forEach>
		
	  </tbody>
	</table>	
		
	
</body>
</html>

위처럼 코딩하여 준 뒤 실행시켜 보면

 

배열의 값이 출력되는 것을 확인할 수 있습니다.

 

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page import="com.main.model.Member"%>
<%@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>
		
	<table>
	  <tbody>
	  	<!--var = 배열안에 값들을 받을 변수   items = request객체에 담아서 보낸 배열 -->			
		<c:forEach var="object" items="${list }" varStatus="objectCount">
			<tr>
					<td>${object}</td><td>${objectCount.count }</td>			
			</tr>
		</c:forEach>
		
	  </tbody>
	</table>	
		
	
</body>
</html>

varStatus를 사용하게 되면 카운트에 대한 변수를 구할 수 있습니다.

 

다음 글에서는 <c:if>, <c:set> 등에 대해서 알아보겠습니다.

 

감사합니다.

 

728x90
반응형