JSP

액션태그 :useBean, :getProperty, :setProperty

에어팟맥스 2022. 8. 31. 23:05

<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>