일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- NestedFor
- 사용자예외클래스생성
- Java
- 환경설정
- 어윈 사용법
- 예외미루기
- 집합_SET
- 메소드오버로딩
- cursor문
- 제네릭
- 인터페이스
- 예외처리
- 추상메서드
- 컬렉션 타입
- abstract
- 객체 비교
- EnhancedFor
- exception
- oracle
- 정수형타입
- 다형성
- 생성자오버로드
- 한국건설관리시스템
- GRANT VIEW
- 자동차수리시스템
- 참조형변수
- 오라클
- 대덕인재개발원
- 컬렉션프레임워크
- 자바
- Today
- Total
거니의 velog
(14) 표현 언어와 JSTL 5 본문
(3) <c:if> 태그를 이용한 실습
* <c:if> 태그는 이름에서도 알 수 있듯이 JSP 페이지에서 조건문을 대체해 사용하는 태그이며, 사용 형식은 다음과 같다.
<c:if test="${조건식}" var="변수이름" [scope="scope 속성 중 하나"] />
...
</c:if>
* 여기서 test는 표현 언어를 이용해 수행할 조건식 위치를, var는 조건식의 결과값을 저장한다. 또한 scope는 변수의 스코프를 지정(page, request, session, application 중 하나)한다.
* 그럼 <c:if> 태그를 이용해 조건문을 사용해 보자.
1. 다음과 같이 member4.jsp를 작성한다. <c:if> 태그의 test 속성에는 표현 언어 안에 비교 연산자나 논리 연산자로 조건식을 수행한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
request.setCharacterEncoding("UTF-8");
%>
<c:set var="id" value="hong" scope="page" />
<c:set var="pwd" value="1234" scope="page" />
<c:set var="name" value="${'홍길동'}" scope="page" />
<c:set var="age" value="${22}" scope="page" />
<c:set var="height" value="${177}" scope="page" />
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>조건문 실습</title>
</head>
<body>
<c:if test="${true}"> <!-- 조건식이 true이므로 항상 참이다. -->
<h1>항상 참입니다.</h1>
</c:if>
<c:if test="${11==11}"> <!-- 조건식에 비교 연산자를 사용한다. -->
<h1>두 값은 같습니다.</h1>
</c:if>
<c:if test="${11!=31}"> <!-- 조건식에 비교 연산자를 사용한다. -->
<h1>두 값은 같지 않습니다.</h1>
</c:if>
<c:if test="${(id=='hong') && (name=='홍길동')}"> <!-- 조건식에 논리 연산자를 사용한다. -->
<h1>아이디는 ${id}이고, 이름은 ${name }입니다.</h1>
</c:if>
<c:if test="${age==22}">
<h1>${name }의 나이는 ${age}살입니다.</h1>
</c:if>
<c:if test="${height>160}">
<h1>${name }의 키는 160보다 큽니다.</h1>
</c:if>
</body>
</html>
2. 다음의 주소로 요청하여 실행 결과를 확인한다.
- http://localhost:8090/pro14/test03/member4.jsp
(4) <c:choose> 태그를 이용한 실습
* <c:choose> 태그는 JSP 페이지에서 switch문의 기능을 수행하며, 사용 형식은 다음과 같다.
<c:choose>
<c:when test="조건식1">본문내용1</c:when>
<c:when test="조건식2">본문내용2</c:when>
...
<c:otherwise>본문내용n</c:otherwise>
</c:choose>
* 첫 번째 <c:when> 태그의 조건식1을 체크해서 참이면 본문내용1을 수행하고 만약 거짓이면 다음 <c:when>의 조건식2를 체크해서 참이면 본문내용2를 수행한다. 모든 조건이 거짓이면 <c:otherwise> 태그의 본문 내용을 수행한다.
1. 다음과 같이 member5.jsp를 작성한다. <c:choose> 태그를 이용해 name 값의 유무에 따라 다른 결과를 표시한다. 만약 name 값이 정상적이면 회원 정보를 출력하고 name이 null이거나 빈 문자열이면 오류 메시지를 출력한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
request.setCharacterEncoding("UTF-8");
%>
<c:set var="id" value="hong" scope="page" />
<c:set var="pwd" value="1234" scope="page" />
<c:set var="name" value="${'홍길동'}" scope="page" />
<%-- <c:set var="name" value="${'홍길동'}" scope="page" /> --%>
<c:set var="age" value="${22}" scope="page" />
<c:set var="height" value="${177}" scope="page" />
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>회원 정보 출력 창</title>
</head>
<body>
<table align="center" border="1">
<tr align="center" bgcolor="lightgreen">
<td width="7%"><b>아이디</b></td>
<td width="7%"><b>비밀번호</b></td>
<td width="7%"><b>이름</b></td>
<td width="7%"><b>나이</b></td>
<td width="7%"><b>키</b></td>
</tr>
<c:choose>
<%-- <c:when test="${name==null}"> --%>
<c:when test="${empty name}"> <!-- 변수 name이 null이거나 빈 문자열인지 체크한다. -->
<tr align="center">
<td colspan=5>이름을 입력하세요!!</td>
</tr>
</c:when>
<c:otherwise> <!-- name이 정상적이면 회원 정보를 출력한다. -->
<tr align="center">
<td>${id}</td>
<td>${pwd}</td>
<td>${name}</td>
<td>${age}</td>
<td>${height}</td>
</tr>
</c:otherwise>
</c:choose>
</table>
</body>
</html>
2. 다음의 주소로 요청한다. 먼저 name 변수를 정상적으로 선언한 후 브라우저에서 요청 시 회원 정보를 출력한다.
- http://localhost:8090/pro14/test03/member5.jsp
3. 이번에는 다음과 같이 name 변수를 주석 처리한다.
4. 브라우저에서 재요청 시 오류 메시지를 출력한다.
(5) <c:forEach> 태그를 이용한 실습
* <c:forEach> 태그는 JSP 페이지에서 반복문을 수행하는 태그이며, 사용 형식은 다음과 같다.
<c:forEach items="반복할객체이름" begin="시작값" end="마지막값">
step="증가값" varStatus="반복상태변수이름">
...
</c:forEach>
* 여기서 var는 반복한 변수 이름을, items는 반복할 객체 이름을 지정한다. begin과 end는 각각 반복 시작 및 종료 값을, step은 한 번 반복할 때마다 반복 변수를 증가시킬 값을, varStatus는 반복 상태 속성을 지정한다.
<varStatus의 속성>
속성 | 값 | 설명 |
index | int | items에서 정의한 항목을 가리키는 index 번호이다. 0부터 시작한다. |
count | int | 몇 번째 반복인지 나타낸다. 1부터 시작한다. |
first | boolean | 첫 번째 반복인지 나타낸다. |
last | boolean | 마지막 반복인지 나타낸다. |
* <c:forEach>로 반복문을 만들어 사용해 보자.
1. member6.jsp를 다음과 같이 작성한다. 먼저 자바 코드로 ArrayList 객체를 생성하여 문자열을 저장한 후 <c:forEach> 태그에서 사용할 수 있도록 <c:set> 태그로 변수 list에 재할당한다. 그리고 varStatus의 loop 속성을 이용해 반복 횟수를 출력한다. <c:forEach> 태그의 items에 ArrayList를 설정한 후 반복문 수행 시 ArrayList에 저장된 문자열을 반복 변수 data에 한 개씩 가져와 출력한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
import="java.util.*"
pageEncoding="UTF-8"
isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
List dataList=new ArrayList();
dataList.add("hello");
dataList.add("world");
dataList.add("안녕하세요!!");
// 표현 언어에서 사용할 수 있도록 <c:set> 태그를 이용해 변수에 dataList를 할당한다.
// 반복 변수 i를 1부터 10까지 1씩 증가시키면서 반복문을 수행한다.
// 반복 변수 i를 1부터 10까지 2씩 증가시키면서 반복문을 수행한다.
// ArrayList 같은 컬렉션 객체에 저장된 객체(데이터)를 반복해서 반복 변수 data에 하나씩 가져와 처리한다.
// 구분자 ,(콤마)를 이용해 문자열을 분리해서 출력한다.
%>
<c:set var="list" value="<%=dataList %>" />
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>반복문 실습</title>
</head>
<body>
<c:forEach var="i" begin="1" end="10" step="1" varStatus="loop">
i= ${i} 반복횟수: ${loop.count} <br>
</c:forEach>
<br>
<c:forEach var="i" begin="1" end="10" step="2">
5 * ${i} = ${5*i}<br>
</c:forEach>
<br>
<c:forEach var="data" items="${list}">
${data } <br>
</c:forEach>
<br>
<c:set var="fruits" value="사과, 파인애플, 바나나, 망고, 귤" />
<c:forTokens var="token" items="${fruits}" delims=",">
${token} <br>
</c:forTokens>
</body>
</html>
2. 다음의 주소로 요청하여 결과를 확인한다.
- http://localhost:8090/pro14/test03/member6.jsp
3. 이번에는 <c:forEach> 태그를 이용해 ArrayList에 저장된 회원 정보를 출력해 보자. <c:forEach> 태그를 이용하면 ArrayList에 저장된 객체에 편리하게 접근할 수 있다. 다음과 같이 <c:forEach> 태그의 반복 변수 i를 ArrayList의 인덱스로 사용해서 저장된 회원 정보를 차례대로 출력하도록 member7.jsp를 작성한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
import="java.util.*, sec01.ex01.*"
pageEncoding="UTF-8"
isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
request.setCharacterEncoding("UTF-8");
List membersList = new ArrayList();
MemberBean m1 = new MemberBean("son","1234", "손흥민", "son@test.com");
MemberBean m2 = new MemberBean("ki","4321", "기성용", "ki@test.com");
MemberBean m3 = new MemberBean("park", "1212", "박지성", "park@test.com");
membersList.add(m1);
membersList.add(m2);
membersList.add(m3); // 세 명의 회원 정보를 MemberBean에 저장한 후 다시 ArrayList에 저장한다.
// memberList에 저장된 회원 수만큼 반복 변수 i를 0부터 1씩 증가시키면서 forEach문을 실행한다.
// 반복 변수 i를 ArrayList의 인덱스로 사용해 회원 정보를 차례대로 출력한다.
%>
<c:set var="membersList" value="<%= membersList%>" />
<html>
<head>
<meta charset="UTF-8">
<title>회원 정보 출력 창</title>
</head>
<body>
<table border="1" align="center">
<tr align="center" bgcolor="lightgreen">
<td width="7%"><b>아이디</b></td>
<td width="7%"><b>비밀번호</b></td>
<td width="5%"><b>이름</b></td>
<td width="5%"><b>이메일</b></td>
</tr>
<c:forEach var="i" begin="0" end="2" step="1">
<tr align="center">
<td>${membersList[i].id}</td>
<td>${membersList[i].pwd}</td>
<td>${membersList[i].name}</td>
<td>${membersList[i].email}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
4. 다음의 주소로 요청하여 결과를 확인한다.
- http://localhost:8090/pro14/test03/member7.jsp
5. 이번에는 <c:forEach>문의 items 속성에 memberList를 할당한 후 실행하여 자동으로 var의 member에 membersList의 MemberBean 객체가 차례대로 할당되도록 member8.jsp를 작성한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
import="java.util.*, sec01.ex01.*"
pageEncoding="UTF-8"
isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
request.setCharacterEncoding("UTF-8");
List membersList = new ArrayList();
MemberBean m1 = new MemberBean("son","1234", "손흥민", "son@test.com");
MemberBean m2 = new MemberBean("ki","4321", "기성용", "ki@test.com");
MemberBean m3 = new MemberBean("park", "1212", "박지성", "park@test.com");
membersList.add(m1);
membersList.add(m2);
membersList.add(m3);
// 반복문을 수행하면서 memberList에 저장된 MemberBean 객체가 차례대로 member에 할당된다.
// 속성 이름으로 회원 정보를 차례대로 출력한다.
%>
<c:set var="membersList" value="<%= membersList%>" />
<html>
<head>
<meta charset="UTF-8">
<title>회원 정보 출력 창</title>
</head>
<body>
<table border="1" align="center">
<tr align="center" bgcolor="lightgreen">
<td width="7%"><b>아이디</b></td>
<td width="7%"><b>비밀번호</b></td>
<td width="5%"><b>이름</b></td>
<td width="5%"><b>이메일</b></td>
</tr>
<c:forEach var="member" items="${membersList}">
<tr align="center">
<td>${member.id}</td>
<td>${member.pwd}</td>
<td>${member.name}</td>
<td>${member.email}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
6. 다음의 주소로 요청하여 결과를 확인한다.
- http://localhost:8090/pro14/test03/member8.jsp
'Java > Java_JSP' 카테고리의 다른 글
(16) 표현 언어와 JSTL 7 (0) | 2023.09.18 |
---|---|
(15) 표현 언어와 JSTL 6 (0) | 2023.09.15 |
(13) 표현 언어와 JSTL 4 (0) | 2023.09.15 |
(12) 표현 언어와 JSTL 3 (0) | 2023.09.14 |
(11) 표현 언어와 JSTL 2 (0) | 2023.09.14 |