10장 자바빈(JavaBean) 김은옥(oda94@naver.com) 이장에서 배울 내용 : 화면에 표시를 담당하는 JSP페이지와 실제프로그램을 처리하는 로직을 분리하는 것에 대해서 학습한다. 하나의 JSP페이지 안에 디자인부와 로직부가 혼재하게 되면 프로그램의 협업과 유지보수가 어렵다. 자바빈은 로직을 처리하는 부분을 JSP페이지 내에서 따로 추출해서 별도의 자바파일로 작성을 하는 것이다. 따라서 이번 장에서 JSP의 로직부분을 담당하고 있는 자바빈이 무엇이고 어떻게 작성하고 사용하는지를 학습하는 것이 목적이다. 김은옥(oda94@naver.com)
목차 자바빈(JavaBean)의 개요 자바빈(JavaBean) 만들기 : 자바빈 클래스작성 자바빈과 useBean액션태그의 연동
자바빈(JavaBean)의 개요 자바빈을 사용하는 목적 : JSP 페이지에 화면 표시부분과 로직들이 함께 존재해서 복잡하게 구성되는 것을 가능한 피하고, JSP 페이지의 로직 부분을 분리해서 코드를 재사용함으로 프로그램의 효율을 높이는 것.
자바빈(JavaBean) 만들기 : 자바빈 클래스작성 자바의 클래스를 작성할 때의 기본적인 순서 자바의 클래스를 선언 1. package 패키지명; //없으면 생략가능 2. import 패키지명을 포함한 클래스의 풀네임; //없으면 생략가능 3. class 클래스명{ } 접근제어자 [키워드] class 클래스명{}
자바빈(JavaBean) 만들기 : 자바빈 클래스작성 자바빈의 클래스선언:접근제어자를 public을 사용 멤버변수 : 접근제어자는 private 사용 자바빈에서는 멤버변수를 프로퍼티(property)라고 도 부름. setter/getter메소드 : 프로퍼티의 값을 저장하고 얻어내는 메소드, 접근 제어자는 public을 사용
자바빈(JavaBean) 만들기 : 자바빈 클래스작성 자바빈 클래스 예시 package bean.logon; public class DbDataLogin{ //자바빈 클래스 //프로퍼티 private String id; //setter메소드 public void setId(String id){ this.id=id.trim(); } //getter메소드 public String getId(){ return id;
자바빈과 useBean액션태그의 연동 JSP페이지에서는 자바빈을 사용하기 위해서 3가지의 액션태그를 제공. 자바빈 객체를 생성: useBean액션태그(<jsp:useBean>) 자바빈 객체의 프로퍼티 값을 저장: setProperty액션태그(<jsp:setProperty>) 자바빈 객체에서 저장된 프로퍼티 값을 얻어내기: getProperty액션태그 (<jsp:getProperty>)
자바빈과 useBean액션태그의 연동 자바 빈 관련 액션태그 자바 빈 관련 액션태그 <jsp:useBean id="..." class="..." scope="..."/> 자바빈 객체를 생성 <jsp:setProperty name="..." property="..." value="..."/> 생성된 자바빈 객체에 프로퍼티 값을 저장. <jsp:getProperty name="..." property="..." /> 생성된 자바빈 객체에서 저장된 프로퍼티 값을 사용하기 위해 얻어냄.
자바빈과 useBean액션태그의 연동 자바 빈 객체 생성 : useBean액션태그(<jsp:useBean>) 사용하는 방법 <jsp:useBean id= "빈 이름" class="자바빈 클래스 이름" scope="범위" /> id속성: 생성될 자바빈 객체(인스턴스)의 이름을 명시. 필수 속성으로 생략이 불가능. class속성: 객체가 생성될 자바빈 클래스명을 기술. 이때 패키지명을 포함한 자바클래스의 풀네임을 기술. 필수 속성으로 생략이 불가능. scope속성: 자바빈 객체의 유효범위로 자바빈 객체가 공유되는 범위를 지정. scope속성 값으로는 page, request, session, application을 가지며 scope속성 생략 시, 기본 값은 page.
자바빈과 useBean액션태그의 연동 <jsp:useBean>액션태그에서 id속성 값에 지정한 객체의 레퍼런스명이 이미 존재하는 경우, 기존에 생성된 객체를 그대로 사용.
자바빈과 useBean액션태그의 연동 프로퍼티 값 설정 : setProperty액션태그(<jsp:setProperty>) <jsp:setProperty>액션태그는 자바빈 객체의 프로퍼티 값을 저장하기 위해 사용 <jsp:setProperty name= "빈 이름" property="프로퍼티 이름" value="프로퍼티에 저장할 값 " /> name속성: 자바빈 객체의 이름을 지정. 필수 속성으로 생략이 불가능. property속성: 프로퍼티명을 지정. 필수 속성으로 생략이 불가능. value속성: 프로퍼티에 저장할 값을 지정. 생략 가능.
자바빈과 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>
자바빈과 useBean액션태그의 연동 한 번에 각각의 프로퍼티의 값을 지정 <자바빈을 사용하는 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; }
자바빈과 useBean액션태그의 연동 프로퍼티 값 얻기 : getProperty액션태그(<jsp:getProperty>) <jsp:getProperty>액션태그는 자바빈 객체에서 저장된 프로퍼티 값을 얻어내서 사용 <jsp:getProperty name= "빈 이름" property="프로퍼티 이름" /> name속성: 자바빈 객체의 이름을 명시. 필수 속성으로 생략이 불가능. property속성: 프로퍼티 명을 기술. 필수 속성으로 생략이 불가능