Servlet & Jsp

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

사과씨앗 2020. 12. 28. 21:34
728x90
반응형

안녕하세요 이번 글에서는 <c:if>, <c:set> 태그에 대해서 알아보겠습니다.

 

1. <c:if>

 

c:if 문은 조건문이 필요로 할 때 사용됩니다.

 

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//한글깨짐 방지
		request.setCharacterEncoding("UTF-8");
			
		request.setAttribute("name", "사과씨앗");
		
		RequestDispatcher view = request.getRequestDispatcher("view/next.jsp");
		view.forward(request, response);
	
	}

서블릿에서 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>
		
	<c:if test='${name } != "사과씨앗"'>
		<h1>사과씨앗</h1>
	</c:if>
		<h1>사과쥬스</h1>
	
</body>
</html>

jsp에 위처럼 코딩하여 줍니다.

 

위 화면처럼 c:if의 test안에 조건에 따라서 컨트롤할 수 있습니다.

 

<%@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>
	<c:choose>
    		<!-- if else 와 같은 개념으로 여러번 사용할 수 있다. -->		
		<c:when test='${name } != "사과씨앗"'>
				<h1>사과쥬스</h1>
		</c:when>
        <!-- else 와 같은 개념으로 사용할 수 있다. -->
		<c:otherwise>
				<h1>사과씨앗</h1>
		</c:otherwise>
	</c:choose>	
</body>
</html>

 

2. <c:set>

 

c:set 태그를 사용하여 속성 값을 세팅하여 줄 수 있습니다.

 

<%@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>
	<c:set var="name" scope="request" value="사과씨앗" />
	<h1><c:out value="${name }" /></h1>

</body>
</html>

위처럼 c:set을 이용하여 값을 세팅할 수 있습니다.

 

<%@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>
	<c:set var="name" scope="request" >
		사과씨앗, 사과쥬스, 사과쨈
	</c:set>
	<h1><c:out value="${name }" /></h1>

</body>
</html>

위처럼 c:set태그의 몸체를 열어 그 안에 값을 세팅할 수 도 있습니다.

 

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//한글깨짐 방지
		request.setCharacterEncoding("UTF-8");
			
		
		Map<String, String> map = new HashMap();
		
		map.put("name", "사과씨앗");
		map.put("age", "22");
		map.put("company", "google");
		
		request.setAttribute("map", map);
		
		RequestDispatcher view = request.getRequestDispatcher("view/next.jsp");
		view.forward(request, response);
	
	}
}

서블릿에서 맵객체를 하나 만들어 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>
	
	<c:set target="${map }" property="name" value="사과쥬스" />
	
	<c:set target="${map }" property="address" value="seoul" />
	
<h1 ><c:out value="${map.name }" />     </h1>
<h1 ><c:out value="${map.age }" />      </h1>
<h1> <c:out value="${map.company }" />   </h1>
<h1> <c:out value="${map.address }" />  </h1>

</body>
</html>

target은 맵이 들어있는 속성의 키 값을 선언하여 주고 property에는 맵 안에 키-벨류 쌍을 이루고 있는 정보중 키 값을 입력하여 줍니다.

 

실행시켜보면 기존에 가지고 있던 property 값은 수정이 되고 만약 선언한 property값이 없으면 생성하여 줍니다.

targer에 오는 값은 null값이 오게 되면 에러를 유발할 수 있으니 null값이 오지 않도록 주의해주시면 됩니다.

 

오늘도 봐주셔서 감사합니다 ^^

728x90
반응형