- 자바빈(JavaBeans)
- <jsp:useBean> 액션 태그
-<jsp:getProperty>
-<jsp:setProperty> - 프로퍼티 타입에 따른 값 매핑
<jsp:useBean> 태그의
- JSP에서 자바빈 객체를 생성할 때 사용
- 구문
-<jsp:useBean id="[빈이름]" class ="[자바빈클래스이름]" scope="[범위]" /> 의 각 속성들
- id : JSP 페이지에서 자바빈 객체에 접근할 때 사용할 이름
- class : 패키지 이름을 포함한 자바빈 클래스의 완전한 이름
- scope : 자바빈 객체가 저장될 영역을 지정합니다. page, request, session,application중 하나의 값으로 갖습니다.
기본값은 page 입니다.
-Ex)
<jsp:useBean id="info" class="chap11.member,MemberInfo" scope="request" />
<%= info.getName() %>
위 코드는 MemberInfo 클래스의 객체를 생성해서 이름이 info인 변수에 할당합니다. 그리고 request 기본 객체의 "info"속성의 값으로 생성된 객체를 저장합니다. 즉
MemberInfo info = new MemberInfo();
request.setAttribute("info", info);
이거와 비슷한 코드가 실행됩니다.
<jsp:useBean> 액션 태그는 지정한 영역에 이미 id 속성에서 지정한 이림의 속성값이 존재하면, 객체를 새로 생성하지 않고 기존에 존재하는 객체를 그대로 사용합니다. 즉. 위의 <jsp:useBean> 액션 태그는
MemberInfo info (MemberInfo)request.getAttribute("info");
if(info == null) {
info = new MemberInfo();
request.setAttribute("info", info);
}
이 코드와 같습니다.
<jsp:useBean> 액션 태그의 scope 속성값에 따라 객체는 서로 다른 기본 객체에 저장됩니다. 각 값과 관련된 기본 객체입니다.
scope 속성 값에 따라 저장되는 기본 객체
- "page" - pageContext 기본 객체
- "request" - request 기본 객체
- "session" - session 기본 객체
- "application" - application 기본 객체
따라서,
<jsp:setProperty> 액션 태그와 <jsp:getProperty> 액션 태그
<jsp:setProperty> 액션 태그를 사용하면 생성한 자바빈 객체의 프로퍼티 값을 변경할 수 있다.
<jsp:setProperty> 액션 태그의 구문은 다음과 같다.
<jsp:setProperty name="[자바빈]" property="이름" value="[값]" />
<jsp:setProperty> 액션 태그의 속성
- name : 프로퍼티의 값을 변경할 자바빈 객체의 이름을 지정한다.
<jsp:useBean> 액션 태그의 id 속성에서 지정한 값을 사용합니다. - property : 값을 지정할 프로퍼티의 이름을 지정합니다.
- value : 프로퍼티의 값을 지정한다. 표현식(<%=값%>) 이나 EL(${값})을 사용할 수 있습니다.
예를 들어, 자바빈 객체의 name 프로퍼티의 값을 "홍길동"으로 지정하고 싶다면
<jsp:useBean id="member" calss="chap08.member,MemberInfo"/>
<jsp:setProperty name="member" property="name" value="홍길동" />
이렇게 해주시면 됩니다.
value 속성 대신에 param 속성을 사용할 수도 있습니다. param 속성은 파라미터 값을 프로퍼티 값으로 지정할 때 사용됩니다.
예를 들어. memberId 파라미터 값을 자바빈 객체의 id 프로퍼티의 값으로 지정하고 싶다면 다음과 같이 param 속성을 사용해야합니다.
<jsp:setProperty name="member" property="id" param="memberid" />
( param 과 value 는 같이 사용 할 수 없습니다.)
프로퍼티 속성의 값을 " * " 으로 지정하면 각 프로퍼티의 값을 같은 이름을 갖는 파라미터의 값으로 설정합니다
Ex)
<jsp:useBean id="member" calss="chap08.member,MemberInfo"/>
<jsp:setProperty name="member" property="*" />
<jsp:getProperty> 액션 태그는 자바빈 객체의 프로퍼티 값을 출력할 때 사용 됩니다.
<jsp:getProperty name="자바빈이름" property="프로퍼티이름" />
<jsp:getProperty> 액션 태그의 속성
- name : <jsp:useBean> 의 id 속성에서 지정한 자바빈 객체의 이름을 지정합니다.
- property : 출력할 프로퍼티의 이름을 지정합니다.
예를 들어 자바빈 객체의 name 프로퍼티의 값을 출력하고 싶다면 이렇게 코드를 사용하면 됩니다.
<jsp:getProperty name="memberId" property="name" />
<jsp:setProperty>와 <jsp:getProperty> 액션 태그가 어떻게 사용되는지에 관한 간단한 예제입니다.
memberShipForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 입력 폼</title>
</head>
<body>
<form action="/chap08/processJoining.jsp" method="post" >
<table border="1" cellpadding ="0: cellspacing="0">
<tr>
<td>아이디</td>
<td colspan="3"><input type="text" name="id" size="10"></td>
</tr>
<tr>
<td>이름</td>
<td><input type="text" name="name"size="10"></td>
<td>이메일</td>
<td><input type="text" name="email" size="10"></td>
</tr>
<tr>
<td colspan="4" align="center">
<input type="submit" value="회원가입">
</tr>
</table>
</body>
</html>
실행시켜보면 이렇게 출력됩니다. 회원가입 버튼을 누르면 데이터를 post방식으로 processJoing.jsp에 전달해줍니다. 전달 받은 데이터를 MemberInfo 자바빈 클래스의 객체에 저장해서 화면에 출력해줍니다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="chap08.member.MemberInfo" %>
<%
request.setCharacterEncoding("utf-8");
%>
<jsp:useBean id="memberInfo" class="chap08.member.MemberInfo" />
<!-- MemberInfo 자바빈 클래스의 객체를 생성해서 memberInfo 라고 이름을 저장합니다. -->
<jsp:setProperty name="memberInfo" property="*" />
<!-- 파라미터 값을 memberInfo 자바빈 객체의 프로퍼티 값으로 저장합니다. -->
<jsp:setProperty name="memberInfo" property="password" value="<%= memberInfo.getId() %>" />
<!-- memberInfo 자바빈 객체의 password 프로퍼티 값을 memberInfo.getId() 와 동일하게 지정합니다
08행에서 memberInfo 변수를 사용하여 id 프로퍼티에 접근하고 있습니다. -->
<!DOCTYPE html>
<html>
<head>
<title>가입</title>
</head>
<body>
<table width="400" border ="1" cellpadding="0" cellspacing="0">
<tr>
<td>아이디</td>
<td><jsp:getProperty name="memberInfo" property ="id" /></td>
<td>암호</td>
<td><jsp:getProperty name="memberInfo" property ="password" /></td>
</tr>
<tr>
<td>이름</td>
<td><jsp:getProperty name="memberInfo" property ="name" /></td>
<td>이메일</td>
<td><jsp:getProperty name="memberInfo" property ="email" /></td>
</tr>
</table>
</body>
</html>
위에서 값을 입력한후 회원가입 버튼을 누르면
이런 결과 화면이 출력됩니다. 이 결과를 보면 파라미터로 전송된 데이터가 자바빈 객체의 프로퍼티의 값으로 지정된 것을 확인 가능합니다.
이번 예제에서 알아야 할 점은 <jsp:setProperty> 액션 태그를 사용함으로써 요청 파라미터의 값을 간단하게 자바빈 객체의 프로퍼티에 저장할 수 있다는 점 입니다.
(폴더 잘확인.. 오타 잘확인...)
만약 <jsp:setProperty> 액션 태그를 사용하지 않았다면 processJoining.jsp의 06행 코드를 다음과 같이 작성해야 합니다.
// <jsp:setProperty name="memberInfo" property=" * " />
memberInfo.setId(request.getParameter("id"));
memberInfo,setName(request.getParameter("name"));
memberInfo,setEmail(request.getParameter("email"));
프로퍼티의 타입에 따른 값 매핑
'JSP' 카테고리의 다른 글
JSP JSTL 연동하기 (0) | 2022.07.15 |
---|---|
JSP EL (0) | 2022.07.15 |
JSP javabeans (0) | 2022.07.14 |
JSP 쿠키 (0) | 2022.07.13 |
JSP 예외처리 (0) | 2022.07.13 |