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
반응형