액션태그 :useBean, :getProperty, :setProperty
<jsp:useBean>, <jsp:setProperty>등의 표준액션을 이용하면 자바코드를 작성하지 않고도
자바빈(JavaBean, 자바빈 규격서에 따라 만든 자바클래스)을 만들어 사용할 수 있다.
※ <jsp:useBean> 표준액션의 scope
==> 자바빈즈를 객체화 시킨 후 이 객체를 어느 범위까지 사용할지를 결정하는 것이다.
1. scope="page"
- scope 속성 기본값이므로 특별히 지정하지 않으면 이 값이 적용된다.
이 객체는 요청된 JSP 페이지 내에서만 사용되고, 실행 종료와 함께 객체는 자동으로 소멸된다.
그러므로 다른 JSP 페이지에서는 사용될 수 없다.
또한 요청된 JSP 페이지를 부를때 마다 이 객체는 매번 새로이 생성된다.
2. scope="request"
- 이 객체는 요청된 JSP 페이지내에서 사용된 후 , 이 JSP 페이지와 연결된 다른 JSP 페이지까지 사용되어진다.
연결된 다른 JSP 페이지에서 실행 종료와 함께 객체는 자동으로 소멸된다.
request 영역에서 이 객체가 있으면 생성된 객체를 사용하고 없으면 객체를 새로이 만들어 request 영역에 올려둔다.
3. scope="session"
- 이 객체는 세션이 종료(소멸)할때 까지 객체는 소멸하지 않고 사용된다.
세션이 종료(소멸)되는 순간 이 객체는 자동으로 소멸된다.
session 영역에서 이 객체가 있으면 생성된 객체를 사용하고 없으면 객체를 새로이 만들어 session 영역에 올려둔다.
4. scope="application"
- 이 객체는 웹 어플리케이션이 종료될때까지 소멸되지 않고 사용되어진다.
이 객체는 웹 어플리케이션이 종료될때 자동으로 소멸되어지는 것이므로
웹 어플리케이션의 공동으로 사용되어지는 객체이어야 한다.
application 영역에서 이 객체가 있으면 생성된 객체를 사용하고 없으면 객체를 새로이 만들어 application 영역에 올려둔다.
<jsp:useBean id="객체명" class="패키지명.클래스명" scope="page" />
<jsp:useBean id="객체명" class="패키지명.클래스명" scope="request" />
<jsp:useBean id="객체명" class="패키지명.클래스명" scope="session" />
<jsp:useBean id="객체명" class="패키지명.클래스명" scope="application" />
JSP 표준액션 중 useBean을 사용하여 MemberDTO 클래스의 객체정보 불러오기
<jsp:useBean id="mbr3" class="chap03.MemberDTO" />
은
chap03.MemberDTO mbr3 = new chap03.MemberDTO();
와 동일한 역할을 수행한다.
즉, chap03.MemberDTO 클래스의 기본생성자로 mbr3 이라는 객체를 생성하는 것이다.
useBean의 id 값과 get,setProperty 의 name 값은 동일한 객체명이어야 한다.
또한
<jsp:setProperty property="name" name="mbr3" value="김태희" />
는
mbr3.setName("김태희");
와 같은 뜻이며,
property="name" 의 name 은 MemberDTO 의 private String name; 의 name 이 아니고
public void setName(String name) 의 set 다음에 오는 Name 이다.
그런데 가장 첫글자는 소문자로 name 으로 작성한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="chap03.MemberDTO" %>
<%
// == MemberDTO 객체 생성하기 == //
MemberDTO mbr1 = new MemberDTO();
mbr1.setName("이순신");
mbr1.setJubun("9708311234567");
String name1 = mbr1.getName();
String jubun1 = mbr1.getJubun();
String gender1 = mbr1.getGender();
int age1 = mbr1.getAge();
///////////////////////////////
MemberDTO mbr2 = new MemberDTO("엄정화","9709102234567");
String name2 = mbr2.getName();
String jubun2 = mbr2.getJubun();
String gender2 = mbr2.getGender();
int age2 = mbr2.getAge();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP 표준액션 중 useBean 에 대해서 알아봅니다.</title>
</head>
<body>
<div>
<h2>스크립틀릿을 사용하여 MemberDTO 클래스의 객체정보 불러오기</h2>
<ul>
<li>성명: <%= name1%></li>
<li>주민번호: <%= jubun1%></li>
<li>성별: <%= gender1%></li>
<li>나이: <%= age1%></li>
</ul>
<br>
<ul>
<li>성명: <%= name2%></li>
<li>주민번호: <%= jubun2%></li>
<li>성별: <%= gender2%></li>
<li>나이: <%= age2%></li>
</ul>
</div>
<hr style="border: solid 1px red; margin: 20px 0;">
<div>
<h2>JSP 표준액션 중 useBean을 사용하여 MemberDTO 클래스의 객체정보 불러오기</h2>
<jsp:useBean id="mbr3" class="chap03.MemberDTO" />
<%--
위의 것은 아래의 뜻이다.
chap03.MemberDTO mbr3 = new chap03.MemberDTO(); // 기본생성자
즉, chap03.MemberDTO 클래스의 기본생성자로 mbr3 이라는 객체를 생성하는 것이다.
만들때는 id="mbr3" 아이디고
--%>
<jsp:setProperty property="name" name="mbr3" value="김태희" />
<%--
mbr3.setName("김태희"); 와 같은 뜻이다.
property="name" 의 name 은 MemberDTO 의 private String name; 의 name 이 아니고
public void setName(String name) 의 set 다음에 오는 Name 이다.
그런데 가장 첫글자는 소문자로 name 으로 작성한다.
set 할때는 name="mbr3" 네임이다.
--%>
<jsp:setProperty property="jubun" name="mbr3" value="8904062234567" />
<%--
mbr3.setJubun("8904062234567"); 와 같은 뜻이다.
property="jubun" 의 jubun 은 MemberDTO 의 private String jubun; 의 jubun 이 아니고
public void setJubun(String jubun) 의 set 다음에 오는 Jubun 이다.
그런데 가장 첫글자는 소문자로 jubun 으로 작성한다.
--%>
<ul>
<li>성명: <jsp:getProperty property="name" name="mbr3" /></li>
<%--
mbr3.getName(); 와 같은 것이다.
property="name" 의 name 은 getName() 의 Name
--%>
<li>주민번호: <jsp:getProperty property="jubun" name="mbr3" /></li>
<li>성별: <jsp:getProperty property="gender" name="mbr3"/> </li>
<%-- mbr3.getGender(); 와 같다. --%>
<li>나이: <jsp:getProperty property="age" name="mbr3"/></li>
<%-- mbr3.getAge(); 와 같다. --%>
</ul>
</div>
</body>
</html>