일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 객체 비교
- 참조형변수
- 정수형타입
- cursor문
- 컬렉션프레임워크
- GRANT VIEW
- 메소드오버로딩
- 추상메서드
- 생성자오버로드
- EnhancedFor
- 환경설정
- 사용자예외클래스생성
- 자동차수리시스템
- 다형성
- 예외미루기
- 예외처리
- 제네릭
- Java
- oracle
- abstract
- 자바
- 집합_SET
- 대덕인재개발원
- 한국건설관리시스템
- NestedFor
- 오라클
- 컬렉션 타입
- 어윈 사용법
- exception
- 인터페이스
- Today
- Total
거니의 velog
(9) 자바 코드를 없애는 액션 태그 3 본문
(3) setProperty/getProperty 액션 태그를 이용한 회원 정보 조회 실습
* 앞 절에서는 useBean 액션 태그를 사용해 자바 코드를 사용하지 않고 자바 빈을 생성했다. 그러나 여전히 빈의 속성에 값을 설정할 때는 자바 코드에서 setter를 사용하고 있다. useBean에 접근해 속성 값을 설정하거나 가져오는 <jsp:setProperty> 액션 태그와 <jsp:getProperty> 액션 태그를 사용하는 방법을 다음의 표로 정리하니 참고하기 바란다.
<setProperty와 getProperty 태그의 특징>
이름 | 정의 | 형식 |
setProperty | useBean의 속성에 값을 설정하는 태그 | <jsp:setProperty name="자바 빈 이름" property="속성 이름" value="값" /> - name : <jsp:useBean> 액션 태그의 id 속성에 지정한 이름 - property : 값을 설정할 속성 이름 - value : 속성에 설정할 속성 값 |
getProperty | useBean의 속성 값을 얻는 태그 | <jsp:getProperty name="자바 빈 이름" property="속성 이름" /> - name : <jsp:useBean> 액션 태그의 id 속성에 지정한 이름 - property : 값을 얻을 속성 이름 |
* 이번에는 자바의 setter를 사용하지 않고 빈 속성을 설정해 보자.
1. 다음과 같이 실습 파일 member3~7.jsp를 준비한다.
2. member3.jsp에서 <jsp:useBean> 액션 태그로 생성된 빈에 대해 <jsp:setProperty> 액션 태그를 이용해 빈의 속성을 설정한다. 이번에는 회원 가입창에서 전송한 회원 정보를 자바 코드 즉, setter를 사용해 일일이 설정하지 않았다는 것이 큰 차이이다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
import="java.util.*,sec01.ex01.*"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8"); // useBean에 속성 값을 설정하기 전에 한글 인코딩 작업을 한다.
%>
<!-- 유즈빈 액션 태그를 이용해 유즈빈을 만든다. -->
<jsp:useBean id="m" class="sec01.ex01.MemberBean" scope="page" />
<!-- 회원 가입창에서 전송된 동일한 이름의 매개변수에 해당되는 유즈빈 속성에 전송된 값을 설정한다. -->
<jsp:setProperty name="m" property="id" value='<%= request.getParameter("id") %>' />
<jsp:setProperty name="m" property="pwd" value='<%= request.getParameter("pwd") %>' />
<jsp:setProperty name="m" property="name" value='<%= request.getParameter("name") %>' />
<jsp:setProperty name="m" property="email" value='<%= request.getParameter("email") %>' />
<%
/* String id=request.getParameter("id");
String pwd = request.getParameter("pwd");
String name = request.getParameter("name");
String email = request.getParameter("email");
m.setId(id);
m.setPwd(pwd);
m.setName(name);
m.setEmail(email); */ // 자바 코드를 이용해 빈에 설정할 필요가 없다.
MemberDAO memberDAO=new MemberDAO();
memberDAO.addMember(m);
List membersList = memberDAO.listMembers();
%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>회원 목록창</title>
</head>
<body>
<table align="center" width="100%">
<tr align="center" bgcolor="#99ccff">
<td width="7%">아이디</td>
<td width="7%">비밀번호</td>
<td width="5%">이름</td>
<td width="11%">이메일</td>
<td width="5%">가입일</td>
</tr>
<%
if(membersList.size()==0){
%>
<tr>
<td colspan="5">
<p align="center"><b><span style="font-size:9pt;">
등록된 회원이 없습니다.</span></b></p>
</td>
</tr>
<%
}else{
for( int i = 0; i < membersList.size(); i++ ) {
MemberBean bean = (MemberBean) membersList.get(i);
%>
<tr align="center">
<td><%=bean.getId() %></td>
<td><%=bean.getPwd() %></td>
<td><%=bean.getName() %></td>
<td><%=bean.getEmail() %></td>
<td><%=bean.getJoinDate() %></td>
</tr>
<%
} // end for
} // end if
%>
<tr height="1" bgcolor="#99ccff">
<td colspan="5"></td>
</tr>
</table>
</body>
</html>
3. 실행 결과는 자바 빈을 사용했을 때와 같다.
4. 이번에는 회원 가입 창에서 전달된 회원 정보를 <jsp:setProperty> 액션 태그를 이용해 유즈빈의 속성에 좀 더 편리하게 설정하는 방법을 알아보자.
* 먼저 회원 가입창의 각 입력창의 매개변수 이름을 자바 빈 속성 이름과 동일하게 설정한다.
5. member4.jsp를 다음과 같이 작성한다. <jsp:setProperty> 액션 태그의 param 속성을 이용해 회원 가입창에서 전달된 매개변수 이름으로 해당 useBean의 속성에 자동으로 값을 설정한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
import="java.util.*,sec01.ex01.*"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="m" class="sec01.ex01.MemberBean" scope="page" />
<jsp:setProperty name="m" property="id" param="id" />
<jsp:setProperty name="m" property="pwd" param="pwd" />
<jsp:setProperty name="m" property="name" param="name" />
<jsp:setProperty name="m" property="email" param="email" />
<!-- 회원 가입창에서 전달된 매개변수 이름과 속성 이름이 같으면 같은 이름으로 값을 설정한다. -->
<%
/* String id=request.getParameter("id");
String pwd = request.getParameter("pwd");
String name = request.getParameter("name");
String email = request.getParameter("email");
m.setId(id);
m.setPwd(pwd);
m.setName(name);
m.setEmail(email); */
MemberDAO memberDAO=new MemberDAO();
memberDAO.addMember(m);
List membersList = memberDAO.listMembers();
%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>회원 목록창</title>
</head>
<body>
<table align="center" width="100%">
<tr align="center" bgcolor="#99ccff">
<td width="7%">아이디</td>
<td width="7%">비밀번호</td>
<td width="5%">이름</td>
<td width="11%">이메일</td>
<td width="5%">가입일</td>
</tr>
<%
if(membersList.size()==0){
%>
<tr>
<td colspan="5">
<p align="center"><b><span style="font-size:9pt;">
등록된 회원이 없습니다.</span></b></p>
</td>
</tr>
<%
}else{
for( int i = 0; i < membersList.size(); i++ ) {
MemberBean bean = (MemberBean) membersList.get(i);
%>
<tr align="center">
<td><%=bean.getId() %></td>
<td><%=bean.getPwd() %></td>
<td><%=bean.getName() %></td>
<td><%=bean.getEmail() %></td>
<td><%=bean.getJoinDate() %></td>
</tr>
<%
} // end for
} // end if
%>
<tr height="1" bgcolor="#99ccff">
<td colspan="5"></td>
</tr>
</table>
</body>
</html>
6. member5.jsp를 다음과 같이 작성한다. <jsp:setProperty> 액션 태그에 param 속성을 생략하고 property 속성 이름만 지정하면 회원 가입창에서 전달받은 매개변수 중 같은 매개변수 값을 자동으로 설정해 준다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
import="java.util.*,sec01.ex01.*"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="m" class="sec01.ex01.MemberBean" scope="page" />
<jsp:setProperty name="m" property="id" />
<jsp:setProperty name="m" property="pwd" />
<jsp:setProperty name="m" property="name" />
<jsp:setProperty name="m" property="email" />
<!-- 회원 가입창에서 전달받은 매개변수 이름이 일치하는 useBean 속성에 자동으로 값을 설정해 준다. -->
<%
MemberDAO memberDAO=new MemberDAO();
memberDAO.addMember(m);
List membersList = memberDAO.listMembers();
%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>회원 목록창</title>
</head>
<body>
<table align="center" width="100%">
<tr align="center" bgcolor="#99ccff">
<td width="7%">아이디</td>
<td width="7%">비밀번호</td>
<td width="5%">이름</td>
<td width="11%">이메일</td>
<td width="5%">가입일</td>
</tr>
<%
if(membersList.size()==0){
%>
<tr>
<td colspan="5">
<p align="center"><b><span style="font-size:9pt;">
등록된 회원이 없습니다.</span></b></p>
</td>
</tr>
<%
}else{
for( int i = 0; i < membersList.size(); i++ ) {
MemberBean bean = (MemberBean) membersList.get(i);
%>
<tr align="center">
<td><%=bean.getId() %></td>
<td><%=bean.getPwd() %></td>
<td><%=bean.getName() %></td>
<td><%=bean.getEmail() %></td>
<td><%=bean.getJoinDate() %></td>
</tr>
<%
} // end for
} // end if
%>
<tr height="1" bgcolor="#99ccff">
<td colspan="5"></td>
</tr>
</table>
</body>
</html>
7. member6.jsp를 다음과 같이 작성한다. <jsp:setProperty> 액션 태그의 property 속성에 * 를 지정하면 JSP 페이지에서 자동으로 매개변수 이름과 속성 이름을 비교한 후 같은 이름의 속성 이름에 전달된 값을 알아서 설정해 준다. 따라서 JSP나 HTML 페이지에서 전달된 데이터를 처리할 때 미리 매개변수 이름과 속성 이름을 동일하게 설정하여 편리하게 사용할 수 있다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
import="java.util.*,sec01.ex01.*"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="m" class="sec01.ex01.MemberBean" scope="page" />
<jsp:setProperty name="m" property="*" />
<!-- 전송된 매개변수 이름과 빈 속성을 비교한 후 동일한 빈에 값을 자동으로 설정한다. -->
<%
MemberDAO memberDAO=new MemberDAO();
memberDAO.addMember(m);
List membersList = memberDAO.listMembers();
%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>회원 목록창</title>
</head>
<body>
<table align="center" width="100%">
<tr align="center" bgcolor="#99ccff">
<td width="7%">아이디</td>
<td width="7%">비밀번호</td>
<td width="5%">이름</td>
<td width="11%">이메일</td>
<td width="5%">가입일</td>
</tr>
<%
if(membersList.size()==0){
%>
<tr>
<td colspan="5">
<p align="center"><b><span style="font-size:9pt;">
등록된 회원이 없습니다.</span></b></p>
</td>
</tr>
<%
}else{
for( int i = 0; i < membersList.size(); i++ ) {
MemberBean bean = (MemberBean) membersList.get(i);
%>
<tr align="center">
<td><%=bean.getId() %></td>
<td><%=bean.getPwd() %></td>
<td><%=bean.getName() %></td>
<td><%=bean.getEmail() %></td>
<td><%=bean.getJoinDate() %></td>
</tr>
<%
} // end for
} // end if
%>
<tr height="1" bgcolor="#99ccff">
<td colspan="5"></td>
</tr>
</table>
</body>
</html>
8. 마지막으로 member7.jsp를 다음과 같이 작성한다. 회원 가입창에서 전달받은 회원 정보를 일단 <jsp:setProperty> 액션 태그를 이용해 useBean 속성에 저장한 후 <jsp:getProperty> 액션 태그를 이용해 useBean의 속성에 접근하여 값을 출력한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
import="java.util.*, sec01.ex01.*" pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="m" class="sec01.ex01.MemberBean" scope="page" />
<jsp:setProperty name="m" property="*" />
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>회원 목록창</title>
</head>
<body>
<table align="center" width="100%">
<tr align="center" bgcolor="#99ccff">
<td width="7%">아이디</td>
<td width="7%">비밀번호</td>
<td width="5%">이름</td>
<td width="11%">이메일</td>
</tr>
<!-- <jsp:getProperty> 태그를 이용해 useBean 속성 값에 접근한다. -->
<tr align="center">
<td>
<jsp:getProperty name="m" property="id" />
</td>
<td>
<jsp:getProperty name="m" property="pwd" />
</td>
<td>
<jsp:getProperty name="m" property="name" />
</td>
<td>
<jsp:getProperty name="m" property="email" />
</td>
</tr>
<tr height="1" bgcolor="#99ccff">
<td colspan="5"></td>
</tr>
</table>
</body>
</html>
9. 다음 주소로 요청하여 회원 가입창에 회원 정보를 입력한 후 가입하기를 클릭한다.
- http://localhost:8090/pro13/memberForm.html
10. 그러면 전송된 회원 정보를 <jsp:getProperty> 액션 태그를 이용해 출력한다.
* 마지막으로 <jsp:param> 액션 태그는 <include> 액션 태그와 <forward> 액션 태그 사용 시 다른 JSP로 매개변수 값을 전송할 때 사용한다.
'Java > Java_JSP' 카테고리의 다른 글
(11) 표현 언어와 JSTL 2 (0) | 2023.09.14 |
---|---|
(10) 표현 언어와 JSTL 1 (0) | 2023.09.13 |
(8) 자바 코드를 없애는 액션 태그 2 (0) | 2023.09.13 |
(7) 자바 코드를 없애는 액션 태그 1 (0) | 2023.09.11 |
(6) JSP 스크립트 요소 기능 4 (0) | 2023.09.11 |