자바빈의 클래스 선언은 접근 제어자로 public을 사용하고, 멤버 변수는 접근 제어자로 private을 사용해서 작성한다.
자바빈에서는 멤버 변수를 프로퍼티(property)라고 한다.
프로퍼티는 JSP 페이지의 내용을 DB에 저장하거나 DB에 저장된 내용을 JSP 페이지에 표출할 때 중간 데이터 저장소로 사용된다.
자바빈 관련 액션 태그
<jsp:useBean id="" class="" scope=""/> //자바빈 객체를 생성
<jsp:setProperty name="" property="" value=""/> //생성된 자바빈 객체에 프로퍼티 값을 저장
<jsp:getProperty name="" property=""/> //생성된 자바빈 객체에서 저장된 프로퍼티 값을 가져옴
<jsp:useBean> 액션 태그
<jsp:uesBean id="빈 이름" class="자바빈 클래스 이름" scope="범위"/>
id 속성은 생성될 자바빈 객체의 이름을 명시하는 곳이다.(필수 속성으로 생략이 불가능 하다)
class 속성은 객체가 생성될 자바빈 클래스명을 기술하는 곳이다.
이때 패키지명을 포함한 자바 클래스의 풀네임을 기술한다.(필수 속성으로 생략이 불가능 하다)
scope 속성은 자바빈 객체의 유효 범위로 자바빈 객체가 공유되는 범위를 지정한다.
scope 속성값으로는 page,request,session application을 가지며 scope 속성 생략시 기본값은 page이다.
ex)
<jsp:useBean id="simpleBean" class="ch08.simpleBean.SimpleBean" scop="page"/>
SimpleBean 클래스의 멤버 변수(프로퍼티)나 메소드에 접근하려면 simpleBean 레퍼런스를 사용해야 한다.
이것은 자바에서 객체를 생성하는 아래와 동일하다.
SimpleBean simpleBean = new SimpleBean();
<jsp:useBean> 액션 태그에서 id 속성값에 지정한 이름이 이미 존재하는 경우 자바빈 객체를 새로 생성하는 것이 아니라 기존에 생성된 객체를 그대로 사용한다. 이때 id 속성값, class 속성값, scope 속성값이 모두 동일해야 같은 객체가 된다.
ex)
<jsp:useBean id="simpleBean" class="ch08.simpleBean.SimpleBean" scop="page"/>
..
...
중략
..
<jsp:useBean id="simpleBean" class="ch08.simpleBean.SimpleBean" scop="page"/>
=> 같은 SimpleBean 객체를 사용
<jsp:setProperty> 액션 태그
자바빈 객체의 프로퍼티 값을 저장하기 위해 사용된다.
<jsp:setProperty name="빈 이름" property="프로퍼티 이름" value="프로퍼티에 저장할 값"/>
name 속성은 자바빈 객체의 이름을 명시하는 곳이다.(필수 속성으로 생략이 불가능하다.)
property 속성은 프로퍼티명을 기술하는 곳이다.(필수 속성으로 생략이 불가능하다.)
value 속성은 프로퍼티에 저장할 값을 기술하는 곳이다.(생략가능)
<jsp:useBean id="simpleBean" class="ch08.simpleBean.SimpleBean" scope="page">
<jsp:setProperty name="simpleBean" property="message"/>
</jsp:useBean>
위의 <jsp:setProperty name="simpleBean" property="message"/> 액션 태그는
자바빈 클래스의 setMessage() 메소드와 자동 연동된다.
즉 프로퍼티명 message는 자바빈 클래스의 프로퍼티 message를 의미한다.
이때 사용된 액션 태그가 setProperty 이므로 setMessage() 메소드와 연동하게 되는 것이다.
public void setMessage(String message){
this.message=message;
}
하나의 프로퍼티 값을 세팅할 때는 위와 같이 사용한다.
<jsp:useBean id="inDb" scope="page" class="bean.logon.DbDataLogin">
<jsp:setProperty name="inDb" property="id"/>
<jsp:setProperty name="inDb" property="userpass"/>
<jsp:setProperty name="inDb" property="username"/>
<jsp:setProperty name="inDb" property="socialid1"/>
<jsp:setProperty name="inDb" property="socialid2"/>
<jsp:setProperty name="inDb" property="birth"/>
<jsp:setProperty name="inDb" property="email"/>
<jsp:setProperty name="inDb" property="addr"/>
<jsp:setProperty name="inDb" property="zip1"/>
<jsp:setProperty name="inDb" property="job"/>
</jsp:useBean>
위의 코드들은 아래와 같이 쓸 수 있다.
property 속성값을 *(아스테리스크)를 주면 모든 프로퍼티 값이 세팅된다.
아무 때나 되는 것은 아니다. 폼으로 부터 넘어오는 파라미터의 이름이 프로퍼티의 이름과 일치해야 한다.
<jsp:useBean id="inDb" scope="page" class="bean.logon.DbDataLogin">
<jsp:setProperty name="inDb" property="*"/>
</jsp:useBean>
폼
<tr>
<td bgcolor="" class="normalbold" width="200">사용자 ID </td>
<td width="400">
<input type="text" name="id" size="10" maxlength="10">
<input type="button" name="confirm_id" value="ID중복확인" OnClick="openConfirmid(this.form)">
</td>
</tr>
자바빈을 사용하는 JSP 페이지
<jsp:useBean id="inDb" scope="page" class="bean.logon.DbDataLogin">
<jsp:setProperty name="inDb" property="id"/>
</jsp:useBean>
자바빈 클래스
public void setId(String id){
this.id=id;
}
폼
<tr>
<td bgcolor="" class="normalbold" width="200">사용자 ID </td>
<td width="400">
<input type="text" name="userid" size="10" maxlength="10">
<input type="button" name="confirm_id" value="ID중복확인" OnClick="openConfirmid(this.form)">
</td>
</tr>
자바빈을 사용하는 JSP 페이지
<jsp:useBean id="inDb" scope="page" class="bean.logon.DbDataLogin">
<jsp:setProperty name="inDb" property="id" param="userid"/>
</jsp:useBean>
자바빈 클래스
public void setId(String id){
this.id=id;
}
폼으로부터 넘어온 파라미터명과 자바빈의 프로퍼티가 일치하지 않는 경우 <jsp:setProperty> 액션 태그에 param 속성을 기술해야 한다. param 속성값에는 폼으로부터 넘어온 파라미터명을 기술한다.
<jsp:getProperty> 액션 태그
<jsp:getProperty name="빈 이름" property="프로퍼티 이름"/>
name 속성은 자바빈 객체의 이름을 명시하는 곳이다.(필수 속성으로 생략이 불가능하다)
property 속성은 프로퍼티명을 기술하는 곳이다.(필수 속성으로 생략이 불가능하다)
<jsp:useBean id="simpleBean" class="sh08.simpleBean.SimpleBean" scpoe="page"/>
<jsp:getProtery name="simpleBean" property="message"/>
<jsp:getProtery name="simpleBean" property="message"/> 액션 태그는 자바빈 클래스의 getMessage() 메소드와 자동 연동된다.
즉, 프로퍼티명 message는 자바빈 클래스의 프로퍼티 message를 의미한다.
이때 사용된 액션 태그가 getProperty 이므로 getMessage() 메소드와 연동하게 되는 것이다.
public String getMessge(){
return message;
}
댓글을 달아 주세요