-
22. JSTL개발자 수업/JSP 2021. 12. 15. 00:43
1. 커스텀 태그 (Custom Tag)
1) 액션 태그나 표현 언어를 사용하더라도 조건식이나 반복문 등의 자바 코드를 제거하기 위해 도입된 기능
2. 커스텀 태그 종류
1) JSTL(JSP Standard Tag Library)
- 라이브러리 따로 설치해서 사용함
2) 개발자가 만든 커스텀 태그
- 스프링 프레임워크에서 미리 만들어서 제공
3. 표준 태그 라이브러리
1) 가장 많이 사용되는 태그를 표준화하여 라이브러리로 제공
- Core 태그 : 변수 선언, 조건문/반복문, URL 처리
- Formatting 태그 : 숫자, 날짜, 시간 포맷 지정
- XML 태그 : XML 파싱
- Function 태그 : 컬렉션 처리, 문자열 처리
- SQL 태그 : DB 연결 및 쿼리 실행
4. Core 태그 라이브러리
1) 사용 전 반드시 taglib 디렉티브 태그를 선언해야 함
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
2) set, remove, if, choose, forEach, forTokens, import, redirect, url, out, catch
- <c:set> 형식
- <c:set var="변수 이름" value="변수 값" scope=""/>
- <c:set> 태그로 빈 속성이름 줄여서 사용할 수 있음- <c:remove> 형식
- <c:remove var="변수 이름" scope=""/>
- <c:if> 형식
- <c:if test="${조건식 }" var="변수 이름(조건식의 결과값을 저장)" scope="">
...
</c:if>
- <c:choose> 형식 (switch문 기능)
- <c:choose>
<c:when test="조건식1">본문내용</c:when>
<c:when test="조건식2">본문내용</c:when>
...
<c:otherwise>본문내용n</c:otherwise>
</c:choose>
- <c:forEach> 형식
- <c:forEach var="반복할 변수 이름"
items="반복할 객체 이름"
begin="반복 시작값"
end="반복 마지막값"
step="한 번 반복할 때마다 반복 변수를 증가(시킬) 값"
varStatus="반복상태 변수 이름(속성)">
index : items에서 정의한 항목을 가리키는 index (0부터 시작)
count : 몇 번째 반복인지 나타냄 (1부터 시작)
first : 첫 번째 반복을 나타냄
last : 마지막 반복을 나타냄
(예:loop)
</c:forEach>
- <c:url> 형식
- <c:url var="url이 저장된 변수 이름" value="url경로" scope="">
[<c:param name="매개변수이름" value="전달값"/>]
</c:url>
- <c:redirect> 형식
- response.sendRedirect() 기능을 대체함
- <c:redirect url="redirect할 url">
[<c:param name="매개변수 이름" value="전달값"/>]
</c:redirect>
- <c:out> 형식
- 화면에 지정한 값을 출력하는 기능
- <c:out value="출력할 값" default="기본값" escapeXml="boolean값"/>5. 국제화(다국어, Formatting) 태그 라이브러리
1) 국가별로 다양한 언어, 날짜, 시간, 숫자 형식을 설정할 때 사용
2) <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
3) 숫자 포맷
- <fmt:formatNumber>
- <fmt:formatNumber value="출력할 숫자" groupingUsed="세 자리마다 콤마 출력여부 결정, 기본값 true"
type="출력 양식 설정, percent, currency, number" var="출력할 숫자를 변수에 저장함" pattern="출력할 숫자의 양식을 패턴으로 지정"/>
- <fmt:parseNumber>
- <fmt:parseNumber value="파싱할 문자열" pattern="패턴" var="변수 설정" integerOnly="정수만 파싱"/>
날짜 포맷
- <fmt:formatDate>
- <fmt:formatDate value="출력할 날짜" type="출력 양식 - date, time, both"
dataStyle="날짜 스타일 - default, short, medium, long, full"
timeStyle="시간 스타일 - default, short, medium, long, full"/>
타임존 설정
- <fmt:timeZone>
로케일 설정
- <fmt:setLocale>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- core 태그 라이브러리를 사용하기 위해서 반드시 선언해야 함 --> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("utf-8"); %> <!-- <c:set> 태그 이용해 변수 선언함 value 속성에는 EL 사용해서 초기화 --> <c:set var="id" value="ezen700" scope="page"/> <c:set var="pwd" value="0311" scope="page"/> <c:set var="name" value="${'이순신' }" scope="page"/> <c:set var="age" value="${30 }" scope="page"/> <c:set var="height" value="${180 }" scope="page"/> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>회원 정보 출력</title> </head> <body> <table border="1" align="center"> <tr align="center" bgcolor="#99ccff"> <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> <tr align="center"> <td>${id }</td> <!-- EL로 변수에 바로 접근하여 값 출력 --> <td>${pwd }</td> <td>${name }</td> <td>${age }</td> <td>${height }</td> </tr> </table> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:set var="contextPath" value="${pageContext.request.contextPath }"/> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>로그인</title> </head> <body> <form action="result.jsp"> 아이디 : <input type="text" size="20"><br> 비밀번호 : <input type="password" size="20"><br> <input type="submit" value="로그인"> <input type="reset" value="다시입력"><br><br> <!-- 직접 컨텍스트 이름을 입력해 요청함 --> <a href="http://localhost:8080/chap14_EL/jstl01/memberForm.jsp">회원 가입하기</a><br> <!-- request의 getContextPath() 이용해 컨텍스트 이름을 가져옴 --> <a href="<%=request.getContextPath() %>/jstl01/memberForm.jsp">회원 가입하기</a><br> <!-- 자바 코드 상용하지 않고 pageContext의 속성인 request의 contextPath 속성으로 컨텍스트 이름을 가져옴--> <a href="${contextPath}/jstl01/memberForm.jsp">회원 가입하기</a> </form> </body> </html>
<%@page import="kr.co.ezenac.jstl.MemberBean"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- core 태그 라이브러리를 사용하기 위해서 반드시 선언해야 함 --> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("utf-8"); %> <jsp:useBean id="membersList" class="java.util.ArrayList" /> <jsp:useBean id="membersMap" class="java.util.HashMap" /> <% membersMap.put("id", "ezen100"); membersMap.put("pwd", "0311"); membersMap.put("name", "이젠IT"); membersMap.put("email", "ezen100@gmail.com"); MemberBean m1 = new MemberBean("lee", "0311", "이순신", "lee@gmail.com"); MemberBean m2 = new MemberBean("shin", "0311", "신사임당", "shin@gmail.com"); membersList.add(m1); membersList.add(m2); membersMap.put("membersList", membersList); %> <%-- c:set 태그로 HashMap에 저장된 ArrayList에 접근하기 위해 좀 더 편리한 이름으로 설정함 --%> <c:set var="membersList" value="${membersMap.membersList }"/> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>회원 정보 출력</title> </head> <body> <table border="1" align="center"> <tr align="center" bgcolor="#99ccff"> <td width="20%"><b>아이디</b></td> <td width="20%"><b>비밀번호</b></td> <td width="20%"><b>이름</b></td> <td width="20%"><b>이메일</b></td> </tr> <tr align="center"> <td>${membersMap.id }</td> <td>${membersMap.pwd }</td> <td>${membersMap.name }</td> <td>${membersMap.email }</td> </tr> <tr align="center"> <td>${membersList[0].id }</td> <!-- c:set 태그로 설정한 변수 이름으로 접근해서 출력 --> <td>${membersList[0].pwd }</td> <td>${membersList[0].name }</td> <td>${membersList[0].email }</td> </tr> <tr align="center"> <td>${membersList[1].id }</td> <td>${membersList[1].pwd }</td> <td>${membersList[1].name }</td> <td>${membersList[1].email }</td> </tr> </table> </body> </html>
<%@page import="kr.co.ezenac.jstl.MemberBean"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- core 태그 라이브러리를 사용하기 위해서 반드시 선언해야 함 --> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("utf-8"); %> <c:set var="id" value="ezen700" scope="page"/> <c:set var="pwd" value="0311" scope="page"/> <c:set var="name" value="${'이순신' }" scope="page"/> <c:set var="age" value="${30 }" scope="page"/> <c:set var="height" value="${180 }" scope="page"/> <c:remove var="age"/> <!-- 변수 age와 height를 삭제하 --> <c:remove var="height"/> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>회원 정보 출력</title> </head> <body> <table border="1" align="center"> <tr align="center" bgcolor="#99ccff"> <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> <tr align="center"> <td>${id }</td> <!-- EL로 변수에 바로 접근하여 값 출력 --> <td>${pwd }</td> <td>${name }</td> <td>${age }</td> <td>${height }</td> </tr> </table> </body> </html>
<%@page import="kr.co.ezenac.jstl.MemberBean"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- core 태그 라이브러리를 사용하기 위해서 반드시 선언해야 함 --> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("utf-8"); %> <c:set var="id" value="ezen700" scope="page"/> <c:set var="pwd" value="0311" scope="page"/> <c:set var="name" value="${'이순신' }" scope="page"/> <c:set var="age" value="${30 }" scope="page"/> <c:set var="height" value="${180 }" scope="page"/> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>조건문</title> </head> <body> <c:if test="${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=='ezen700') && (name=='이순신')}"> <h1>아이디는 ${id }이고, 이름은 ${name }입니다.</h1> </c:if> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Insert title here</title> </head> <body> <!-- 변수 선언 --> <c:set var="number" value="100"/> <c:set var="string" value="JSP"/> <c:if test="${number mod 2 eq 0 }"> ${number } 짝수입니다.<br> </c:if> <c:if test="${string eq 'JAVA' }" var="result"> 문자열은 JAVA입니다.<br> </c:if> <c:if test="${not result }"> 'JAVA'가 아닙니다.<br> </c:if> <h4>조건식 주의사항</h4> <c:if test="100" var="result2"> EL이 아닌 정수를 지정하면 false </c:if> result2 : ${result2 }<br> <c:if test="tRuE" var="result3"> 대소문자 구분없이 "tRuE"인 경우 true<br> </c:if> result3 : ${result3 }<br> <c:if test="${ true }" var="result4"> EL 양쪽에 빈 공백이 있는 경우 true<br> </c:if> result4 : ${result4 }<br> </body> </html>
<%@page import="kr.co.ezenac.jstl.MemberBean"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- core 태그 라이브러리를 사용하기 위해서 반드시 선언해야 함 --> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("utf-8"); %> <c:set var="id" value="ezen700" scope="page"/> <c:set var="pwd" value="0311" scope="page"/> <c:set var="name" value="${'이순신' }" scope="page"/> <c:set var="age" value="${30 }" scope="page"/> <c:set var="height" value="${180 }" scope="page"/> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>회원 정보 출력</title> </head> <body> <table border="1" align="center"> <tr align="center" bgcolor="#99ccff"> <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="${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>
<%@page import="java.util.ArrayList"%> <%@page import="java.util.List"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% List<String> dataList = new ArrayList(); dataList.add("hello"); dataList.add("world"); dataList.add("좋은 아침입니다."); %> <c:set var="list" value="<%=dataList %>"/> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <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> <!-- ArrayList 컬렉션 객체에 저장된 데이터를 반복해서 반복변수 data에 하나씩 가져와 처리 --> <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>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>choose/when/otherwise</title> <c:set var="number" value="100" /> <h4>choose 태그로 홀짝 판단하기</h4> <c:choose> <c:when test="${number mod 2 eq 0 }"> ${number }는 짝수입니다. </c:when> <c:otherwise> ${number }는 홀수입니다. </c:otherwise> </c:choose> <br> <h4>국,영,수 점수를 입력하면 평균을 구해 학점을 출력하시오</h4> <form> 국어 : <input type="text" name="kor"><br> 영어 : <input type="text" name="eng"><br> 수학 : <input type="text" name="math"><br> <input type="submit" value="학점 구하기"> </form> <!-- 모든 과목 점수가 입력되었는지 체크 --> <c:if test="${not (empty param.kor or empty param.eng or empty param.math) }"> <!-- 평균 계산 --> <c:set var="avg" value="${(param.kor + param.eng + param.math) / 3 }"/> 평균 점수는 ${avg }점이고, <!-- 학점 출력 --> <c:choose> <c:when test="${avg >= 90 }">A학점</c:when> <c:when test="${avg >= 80 }">B학점</c:when> <c:when test="${avg >= 70 }">C학점</c:when> <c:when test="${avg >= 60 }">D학점</c:when> <c:otherwise>F학점</c:otherwise> </c:choose> 입니다. </c:if> </head> <body> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>JSTL - forEach</title> </head> <body> <h4>일반 for문 형태의 forEach 태그</h4> <c:forEach begin="1" end="3" step="1" var="i"> <p>반복 ${i }입니다.</p> </c:forEach> <h4>varStatus 속성 확인하기</h4> <table border="1"> <c:forEach begin="3" end="5" var="i" varStatus="loop"> <tr> <td>count : ${loop.count }</td> <td>index : ${loop.index }</td> <td>current : ${loop.current }</td> <td>first : ${loop.first }</td> <td>last : ${loop.last }</td> </tr> </c:forEach> </table> <h4>1에서 100까지 정수 중 홀수의 합</h4> <c:forEach begin="1" end="100" step="1" var="i" varStatus=""> <c:if test="${i mod 2 ne 0 }"> <c:set var="sum" value="${sum + i }"/> </c:if> </c:forEach> 1~100 사이의 정수 중 홀수의 합은? ${sum } </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>JSTL - forEach 태그</title> </head> <body> <h4>향상된 for문 형태의 forEach 태그</h4> <% String[] rgba = {"Red", "Green", "Blue", "Black"}; %> <c:forEach items="<%=rgba %>" var="c"> <span style="color: ${c};">${c }</span> </c:forEach> <h4>varStatus 속성 확인</h4> <table border="1"> <c:forEach items="<%=rgba %>" var="c" varStatus="loop"> <tr> <td>count: ${loop.count }</td> <td>index: ${loop.index }</td> <td>current: ${loop.current }</td> <td>first: ${loop.first }</td> <td>last: ${loop.last }</td> </tr> </c:forEach> </table> </body> </html>
package kr.co.ezenac.jstl; public class Person { private String name; private int age; public Person() { // TODO Auto-generated constructor stub } public Person(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
<%@page import="java.util.HashMap"%> <%@page import="java.util.Map"%> <%@page import="kr.co.ezenac.jstl.Person"%> <%@page import="java.util.List"%> <%@page import="java.util.LinkedList"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>JSTL - forEach 태그</title> </head> <body> <h4>List 컬렉션 사용하기</h4> <% List<Person> lists = new LinkedList<>(); lists.add(new Person("이순신", 30)); lists.add(new Person("이도", 40)); lists.add(new Person("신사임당", 50)); %> <c:set var="lists" value="<%=lists %>" /> <c:forEach items="${lists }" var="list"> <li> 이름 : ${list.name }, 나이 : ${list.age } </li> </c:forEach> <h4>Map 컬렉션 사용하기</h4> <% Map<String,Person> maps = new HashMap<>(); maps.put("1st", new Person("이순신", 30)); maps.put("2st", new Person("이도", 40)); maps.put("3rd", new Person("신사임당", 50)); %> <c:set var="maps" value="<%=maps %>"/> <c:forEach items="${maps }" var="map"> <li> Key -> ${map.key }<br> Value -> 이름 : ${map.value.name }, 나이 : ${map.value.age } </li> </c:forEach> </body> </html>
package kr.co.ezenac.jstl; import java.sql.Date; public class MemberBean { private String id; private String pwd; private String name; private String email; private Date joinDate; public MemberBean() { // TODO Auto-generated constructor stub } public MemberBean(String id, String pwd, String name, String email) { //super(); this.id = id; this.pwd = pwd; this.name = name; this.email = email; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Date getJoinDate() { return joinDate; } public void setJoinDate(Date joinDate) { this.joinDate = joinDate; } }
<%@page import="java.util.ArrayList"%> <%@page import="java.util.List"%> <%@page import="kr.co.ezenac.jstl.MemberBean"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- core 태그 라이브러리를 사용하기 위해서 반드시 선언해야 함 --> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("utf-8"); %> <% List<MemberBean> membersList = new ArrayList<>(); MemberBean m1 = new MemberBean("ezen100", "0311", "이순신", "ezen100@gmail.com"); MemberBean m2 = new MemberBean("ezen200", "0311", "신사임당", "ezen200@gmail.com"); MemberBean m3 = new MemberBean("ezen300", "0311", "이도", "ezen300@gmail.com"); membersList.add(m1); membersList.add(m2); membersList.add(m3); %> <c:set var="membersList" value="<%=membersList %>"/> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>회원 정보 출력</title> </head> <body> <table border="1" align="center"> <tr align="center" bgcolor="#99ccff"> <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: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>
import java.sql.Date; public class MemberBean { private String id; private String pwd; private String name; private String email; private Date joinDate; public MemberBean() { // TODO Auto-generated constructor stub } public MemberBean(String id, String pwd, String name, String email) { //super(); this.id = id; this.pwd = pwd; this.name = name; this.email = email; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Date getJoinDate() { return joinDate; } public void setJoinDate(Date joinDate) { this.joinDate = joinDate; } }
<%@page import="java.util.ArrayList"%> <%@page import="java.util.List"%> <%@page import="kr.co.ezenac.jstl.MemberBean"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- core 태그 라이브러리를 사용하기 위해서 반드시 선언해야 함 --> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("utf-8"); %> <% List<MemberBean> membersList = new ArrayList<>(); MemberBean m1 = new MemberBean("ezen100", "0311", "이순신", "ezen100@gmail.com"); MemberBean m2 = new MemberBean("ezen200", "0311", "신사임당", "ezen200@gmail.com"); MemberBean m3 = new MemberBean("ezen300", "0311", "이도", "ezen300@gmail.com"); membersList.add(m1); membersList.add(m2); membersList.add(m3); %> <c:set var="membersList" value="<%=membersList %>"/> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>회원 정보 출력</title> </head> <body> <table border="1" align="center"> <tr align="center" bgcolor="#99ccff"> <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> <!-- 반복문 수행하면서 membersList에 저장된 MemberBean 객체가 차례대로 member 할당됨 --> <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>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:set var="contextPath" value="${pageContext.request.contextPath }"/> <!-- c:url 태그로 이동할 페이지 설정 --> <c:url var="url1" value="../jstl01/member01.jsp"> <c:param name="id" value="ezen300"/> <!-- 이동할 페이지로 전달할 데이터 설정 --> <c:param name="pwd" value="0311"/> <c:param name="name" value="이순신"/> <c:param name="email" value="ezen300@gmail.com"/> </c:url> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>c:url 테스트</title> </head> <body> <%-- <a href="${contextPath}/jstl01/member1.jsp">회원정보 출력</a> --%> <a href="${url1 }">회원정보 출력</a> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- core 태그 라이브러리를 사용하기 위해서 반드시 선언해야 함 --> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("utf-8"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>회원 정보 출력</title> </head> <body> <table border="1" align="center"> <tr align="center" bgcolor="#99ccff"> <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> <tr align="center"> <td>${param.id }</td> <td>${param.pwd }</td> <td>${param.name }</td> <td>${param.email }</td> </tr> </table> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>JSTL - url</title> </head> <body> <h4>url 태그로 링크 걸기</h4> <c:url value="../jstl01/inc/urlPage.jsp" var="url"> <c:param name="userParam1" value="ezen500"/> <c:param name="userParam2">ezen900</c:param> </c:url> <a href="${url }">urlPage.jsp 바로가기</a> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <h4>urlPage.jsp</h4> <ul> <li>매개변수 1 : ${param.userParam1 }</li> <li>매개변수 2 : ${param.userParam2 }</li> </ul>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("utf-8"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>리다이렉트 테스트</title> </head> <body> <c:redirect url="../jstl01/member01.jsp"> <!-- 리다이렉트 할 페이지 설정 --> <c:param name="id" value="${'ezen700' }"/> <!-- 리다이렉트 할 페이지로 전달할 매개변수 설정 --> <c:param name="pwd" value="${'0311' }"/> <c:param name="name" value="${'이순신' }"/> <c:param name="email" value="${'ezen700@gmail.com' }"/> </c:redirect> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- core 태그 라이브러리를 사용하기 위해서 반드시 선언해야 함 --> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("utf-8"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>회원 정보 출력</title> </head> <body> <table border="1" align="center"> <tr align="center" bgcolor="#99ccff"> <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> <tr align="center"> <td>${param.id }</td> <td>${param.pwd }</td> <td>${param.name }</td> <td>${param.email }</td> </tr> </table> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>jstl - redirect</title> </head> <body> <c:set var="requestVar" value="ezen1000" /> <c:redirect url="../jstl01/inc/urlPage.jsp"> <c:param name="userParam1" value="서울시"/> <c:param name="userParam2" value="서초구"/> </c:redirect> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <h4>urlPage.jsp</h4> <ul> <li>매개변수 1 : ${param.userParam1 }</li> <li>매개변수 2 : ${param.userParam2 }</li> </ul>
<%@page import="java.util.ArrayList"%> <%@page import="java.util.List"%> <%@page import="kr.co.ezenac.jstl.MemberBean"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- core 태그 라이브러리를 사용하기 위해서 반드시 선언해야 함 --> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("utf-8"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>회원 정보 출력</title> </head> <body> <table border="1" align="center"> <tr align="center" bgcolor="#99ccff"> <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="${empty param.id }"> <tr align="center"> <td colspan="5">아이디를 입력하세요.</td> </tr> </c:when> <c:otherwise> <tr align="center"> <td><c:out value="${param.id }"/></td> <td><c:out value="${param.pwd }"/></td> <td><c:out value="${param.name }"/></td> <td><c:out value="${param.email }"/></td> </tr> </c:otherwise> </c:choose> </table> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>JSTL - out</title> </head> <body> <c:set var="iTag"> i 태그는 <i>기울임</i>을 표현합니다. </c:set> <h4>기본 사용</h4> <c:out value="${iTag }"/> <!-- escapeXml이 false일 때 변환되는 문자 < < > > & & escapeXml 속성이 true이면 value의 값이 그대로 화면에 출력됨 escapeXml 속성이 false이면 value의 값이 특수문자로 변환되어 화면에 출력됨 --> <h4>escapeXml 속성</h4> <c:out value="${iTag }" escapeXml="false"/> <h2>escapeXml 변환하기</h2> <h2> <pre> <c:out value="<" escapeXml="true"/> <c:out value="<" escapeXml="false"/> <c:out value=">" escapeXml="true"/> <c:out value=">" escapeXml="false"/> <c:out value="&" escapeXml="true"/> <c:out value="&" escapeXml="false"/> </pre> </h2> <h4>default 속성</h4> <c:out value="${param.name }" default="이름 없음"/> <c:out value="" default="빈 문자열도 값입니다."/> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!-- c:set 이용해 pageContext 내장 객체의 컨텍스트 이름을 변수 contextPath에 설정함 --> <c:set var="contextPath" value="${pageContext.request.contextPath }"/> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>로그인</title> </head> <body> <form action="result2.jsp"> 아이디 : <input type="text" name="userID" size="20"><br> 비밀번호 : <input type="password" name="userPW" size="20"><br> <input type="submit" value="로그인"> <input type="reset" value="다시입력"><br><br> </form> </body> <
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("utf-8"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>결과화면2</title> </head> <body> <c:if test="${empty param.userID }"> <!-- empty 연산자를 이용해 ID 값이 비었는지 체크 --> 아이디를 입력하세요. <br> <a href="login.jsp">로그인</a> </c:if> <c:if test="${not empty param.userID }"> <!-- ID가 null 아님 체크 --> <c:if test="${param.userID == 'admin' }"> <!-- ID가 admin이면 관리자 화면 출력 --> <h1>관리자로 로그인 했습니다.</h1> <form> <input type="button" value="회원정보 수정하기"> <input type="button" value="회원정보 삭제하기"> </form> </c:if> <c:if test="${param.userID != 'admin' }"> <!-- ID가 admin이 아니면 로그인 메세지 출력 --> <h1>환영합니다. <c:out value="${param.userID }"/>님!</h1> </c:if> </c:if> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>시험 점수 입력</title> </head> <body> <h1>시험 점수를 입력해 주세요.</h1> <form action="scoreResult2.jsp"> 시험점수 : <input type="text" name="score"><br> <input type="submit" value="학점변환"> </form> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("utf-8"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>학점 변환 화면</title> </head> <body> <c:set var="score" value="${param.score }"/> <!-- param.score를 score 변수에 할당 --> <h1>시험 점수 <c:out value="${score }"/></h1> <c:choose> <c:when test="${score >= 0 && score <= 100 }"> <c:choose> <c:when test="${score >= 90 && score <= 100 }"> <h1>A학점 입니다.</h1> </c:when> <c:when test="${score >= 80 && score <= 90 }"> <h1>B학점 입니다.</h1> </c:when> <c:when test="${score >= 70 && score <= 80 }"> <h1>C학점 입니다.</h1> </c:when> <c:when test="${score >= 60 && score <= 70 }"> <h1>D학점 입니다.</h1> </c:when> <c:otherwise> <h1>F학점 입니다.</h1> </c:otherwise> </c:choose> </c:when> <c:otherwise> <h1>점수를 잘못 입력했습니다. 다시 입력하세요.</h1> <a href="scoreTest.jsp">점수 입력</a> </c:otherwise> </c:choose> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>JSTL - fmt1</title> </head> <body> <h4>숫자 포맷 설정</h4> <c:set var="number1" value="12345"/> 콤마 O : <fmt:formatNumber value="${number1 }"/><br> 콤마 X : <fmt:formatNumber value="${number1 }" groupingUsed="false"/><br> <fmt:formatNumber value="${number1 }" type="currency" var="printNum1"/><br> 통화기호 : ${printNum1 }<br> <fmt:formatNumber value="0.03" type="percent" var="printNum2"/><br> 퍼센트 : ${printNum2 }<br> <h4>문자열을 숫자로 변경</h4> <c:set var="number2" value="6,789.01"/> <fmt:parseNumber value="${number2 }" pattern="00,000.00" var="printNum3"/> 소수점까지 출력 : ${printNum3 }<br> <fmt:parseNumber value="${number2 }" integerOnly="true" var="printNum4"/> 정수만 출력 : ${printNum4 }<br> </body> </html>
<%@page import="java.util.Date"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>JSTL - fmt2</title> </head> <body> <c:set var="today" value="<%=new Date() %>"/> <h4>날짜 포맷</h4> full : <fmt:formatDate value="${today }" type="date" dateStyle="full"/><br> short : <fmt:formatDate value="${today }" type="date" dateStyle="short"/><br> long : <fmt:formatDate value="${today }" type="date" dateStyle="long"/><br> default : <fmt:formatDate value="${today }" type="date" dateStyle="default"/><br> <h4>시간 포맷</h4> full : <fmt:formatDate value="${today }" type="time" dateStyle="full"/><br> short : <fmt:formatDate value="${today }" type="time" dateStyle="short"/><br> long : <fmt:formatDate value="${today }" type="time" dateStyle="long"/><br> default : <fmt:formatDate value="${today }" type="time" dateStyle="default"/><br> <h4>날짜/시간 표시</h4> <fmt:formatDate value="${today }" type="both" dateStyle="full" timeStyle="full"/><br> <fmt:formatDate value="${today }" type="both" pattern="yyyy-MM-dd hh:mm:ss"/><br> <h4>타임존 설정</h4> <fmt:timeZone value="GMT"> <fmt:formatDate value="${today }" type="both" dateStyle="full" timeStyle="full"/><br> </fmt:timeZone> <fmt:timeZone value="America/Los_Angeles"> <fmt:formatDate value="${today }" type="both" dateStyle="full" timeStyle="full"/><br> </fmt:timeZone> </body> </html>
package kr.co.ezenac.util; import java.util.TimeZone; public class TimezoneTest { public static void main(String[] args) { String[] timezone = TimeZone.getAvailableIDs(); for(String zoneId : timezone) { System.out.println("타임존 영역 : " + zoneId); } } }
<%@page import="java.util.Date"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>JSTL - fmt3</title> </head> <body> <h4>로케일 설정</h4> <c:set var="today" value="<%=new Date() %>"/> 한글로 설정 : <fmt:setLocale value="ko_kr"/> <fmt:formatNumber value="10000" type="currency"/> / <fmt:formatDate value="${today }"/><br> 일어로 설정 : <fmt:setLocale value="ja_JP"/> <fmt:formatNumber value="10000" type="currency"/> / <fmt:formatDate value="${today }"/><br> 영어로 설정 : <fmt:setLocale value="en_US"/> <fmt:formatNumber value="10000" type="currency"/> / <fmt:formatDate value="${today }"/><br> </body> </html>
mem.name = 이순신
mem.address = 서울시 서초구
mem.job = 개발자mem.name = \uc774\uc21c\uc2e0
mem.address = \uc11c\uc6b8\uc2dc \uc11c\ucd08\uad6c
mem.job = \uac1c\ubc1c\uc790mem.name = Admiral Yi
mem.address = Seocho-gu, Seoul
mem.job = developer<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>JSTL 다국어 기능</title> </head> <body> <%-- <fmt:setLocale value="ko_KR"/> --%> <!-- locale을 한글로 지정 --> <fmt:setLocale value="en_US"/> <!-- locale을 영어로 지정 --> <h1> 회원정보<br><br> <fmt:bundle basename="kr.co.ezenac.resource.member"> <!-- 패키지 아래 member 프로퍼티 파일 읽어옴 --> 이름 : <fmt:message key="mem.name"/><br> <!-- fmt:message 태그의 key 속성에 프로퍼티 파일의 key 지정 --> 주소 : <fmt:message key="mem.address"/><br> 직업 : <fmt:message key="mem.job"/><br> </fmt:bundle> </h1> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>회원 가입창</title> </head> <body> <form action="memberAction.jsp"> <h1 style="text-align: center;">회원 가입창</h1> <table align="center"> <tr> <td width="200"> <p align="right">아이디</p> </td> <td width="400"> <input type="text" name="id"> </td> </tr> <tr> <td width="200"> <p align="right">비밀번호</p> </td> <td width="400"> <input type="password" name="pwd"> </td> </tr> <tr> <td width="200"> <p align="right">이름</p> </td> <td width="400"> <input type="text" name="name"> </td> </tr> <tr> <td width="200"> <p align="right">이메일</p> </td> <td width="400"> <input type="text" name="email"> </td> </tr> <tr> <td width="200"> <p align="right"> </p> </td> <td width="400"> <input type="submit" value="가입하기"> <input type="reset" value="다시입력"> </td> </tr> </table> </form> </body> </html>
<%@page import="kr.co.ezenac.member.MemberBean"%> <%@page import="java.util.List"%> <%@page import="kr.co.ezenac.member.MemberDAO"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <% request.setCharacterEncoding("utf-8"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Insert title here</title> <jsp:useBean id="m" class="kr.co.ezenac.member.MemberBean"/> <jsp:setProperty property="*" name="m"/> <% MemberDAO memberDAO = new MemberDAO(); memberDAO.addMember(m); List<MemberBean> membersList = memberDAO.listMembers(); request.setAttribute("membersList", membersList); /* 조회한 회원 정보를 request에 바인딩함 */ %> </head> <body> <jsp:forward page="membersList.jsp"/> <!-- membersList.jsp로 포워딩함 --> </body> </html>
package kr.co.ezenac.member; import java.sql.Date; public class MemberBean { private String id; private String pwd; private String name; private String email; private Date joinDate; public MemberBean() { // TODO Auto-generated constructor stub } public MemberBean(String id, String pwd, String name, String email) { //super(); this.id = id; this.pwd = pwd; this.name = name; this.email = email; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Date getJoinDate() { return joinDate; } public void setJoinDate(Date joinDate) { this.joinDate = joinDate; } }
package kr.co.ezenac.member; import java.sql.Connection; import java.sql.Date; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; public class MemberDAO { private Connection conn; private PreparedStatement pstmt; private DataSource dataFactory; public MemberDAO() { try { Context ctx = new InitialContext(); Context envContext = (Context)ctx.lookup("java:/comp/env"); //JNDI에 접근하기 위해 기본경로를 지정 //톰캣 context.xml에 설정한 name 값인 jdbc/oracle을 이용해 톰캣이 미리 연결한 DataSource를 받아옴 dataFactory = (DataSource)envContext.lookup("jdbc/oracle"); } catch (NamingException e) { e.printStackTrace(); } } public List<MemberBean> listMembers() { List<MemberBean> list = new ArrayList<MemberBean>(); try { conn = dataFactory.getConnection(); //DataSource를 이용해 DB에 연결함 String query = "SELECT * FROM T_MEMBER"; System.out.println(query); pstmt = conn.prepareStatement(query); //prepareStatement()메서드에 SQL문을 전달해 객체 생성함 ResultSet rs = pstmt.executeQuery(); //미리 설정한 SQL문을 실행함 while(rs.next()) { String id = rs.getString("id"); String pwd = rs.getString("pwd"); String name = rs.getString("name"); String email = rs.getString("email"); Date joinDate = rs.getDate("joinDate"); //조회한 레코드의 각 컬럼 값을 받아옴 MemberBean vo = new MemberBean(); vo.setId(id); vo.setPwd(pwd); vo.setName(name); vo.setEmail(email); vo.setJoinDate(joinDate); //각 컬럼 값을 다시 MemberVO 객체의 속성에 설정함 list.add(vo); //설정된 MemberVO 객체를 다시 ArrayList에 저장함 } rs.close(); pstmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } return list; //조회한 레코드의 개수만큼 MemberVO 객체를 저장한 ArrayList를 반환함 } public void addMember(MemberBean MemberBean) { try { conn = dataFactory.getConnection(); // DataSource를 이용해 DB 연결 String id = MemberBean.getId(); // 테이블에 저장할 회원 정보 받아옴 String pwd = MemberBean.getPwd(); String name = MemberBean.getName(); String email = MemberBean.getEmail(); String query = "insert into t_member (id, pwd, name, email) values (?, ?, ?, ?)"; System.out.println("prepareStatement: " + query); pstmt = conn.prepareStatement(query); pstmt.setString(1, id); //insert문의 ?에 순서대로 회원 정보 세팅 pstmt.setString(2, pwd); pstmt.setString(3, name); pstmt.setString(4, email); pstmt.executeUpdate(); pstmt.close(); } catch (SQLException e) { e.printStackTrace(); } } }
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <% request.setCharacterEncoding("utf-8"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>회원정보출력</title> </head> <body> <table align="center" border="1"> <tr aligh="center" bgcolor="lightgreen"> <td width="7%">아이디</td> <td width="7%">비밀번호</td> <td width="5%">이름</td> <td width="11%">이메일</td> <td width="5%">가입일</td> </tr> <c:choose> <c:when test="${membersList == null }"> <tr> <td colspan="5"> <b>등록된 회원이 없습니다.</b> </td> </tr> </c:when> <c:when test="${membersList != null }"> <c:forEach var="mem" items="${membersList }"> <tr align="center"> <td>${mem.id }</td> <td>${mem.pwd }</td> <td>${mem.name }</td> <td>${mem.email }</td> <td>${mem.joinDate }</td> </tr> </c:forEach> </c:when> </c:choose> </table> </body> </html>
'개발자 수업 > JSP' 카테고리의 다른 글
24. jQuery Ajax (0) 2021.12.20 23. 파일 업로드 다운로드 (0) 2021.12.16 21. 표현 언어(EL) (0) 2021.12.15 20. 게시판 만들기(모델1) 업로드 예정 (0) 2021.12.15 19. 액션태그 (0) 2021.12.09