JavaBean:
-자바로 작성된 컴포넌트들을 일반적으로 일컫는 말
-자바는 프로그램 기본단위가 클래스이고, 자바빈은 클래스들이 복합적으로 이루어진 구조
-자바 언어의 프로그램 작성 규칙과 문법을 따름
-자바빈은 자바의 클래스를 만드는 것과 같은 규칙을 갖는다.
클래스의 작성 순서
1.package 패키지명;//없으면 생략 가능
2.import 패키지명을 포함한 클래스의 풀네임;//없으면 생략 가능
3.class 클래스명{//필수 정의, 생략 불가능
}
자바의 클래스 선언
-접근제어자 [키워드] class 클래스명{}
●접근 제어자(access modifier):
-public,private,default(접근 제어자가 없는 형태)가 올 수 있는데, 자바빈을 작성할 때는 접근 제어의 강도가 가장 약한 public을 주로 사용한다.
-웹에서는 불특정 다수의 접근을 허용해야 하기 때문에 누구나 접근할 수 있는 public을 사용한다.
●키워드(key word):
-final, abstract, static 등이 있으나 자바빈 클래스에서는 사용하지 않는다.
●클래스명(class name):
-첫 글자는 대문자로 시작하고 나머지는 소문자를 사용한다.
-또한 여러 개의 단어로 이루어진 경우, 다음 단어의 첫 글자는 대문자로 시작한다.ex) public class UtilClass{}
-자바의 클래스는 캡슐화(Encapsulation)의 역할을 한다
-캡슐화는 객체 지향의 가장 중요한 개념중 하나인 정보은닉을 구현한다.
●자바 클래스를 캡슐화 형태로 작정
-정의된 클래스는 사용 시 객체로 할당되며, public으로 선언해 누구나 접근할 수 있는 객체로 생성
-클래스의 멤버 변수는 private으로 선언해서 정보에 직접 접근할 수 없도록 한다.
-객체의 정보를 갖는 멤버 변수에 접근하려면 setter(세터)/getter(게터) 메소드를 사용한다.
setter/getter 메소드의 접근 제어자는 public을 사용한다.
-자바빈의 클래스 선언은 접근 제어자로 public을 사용하고, 멤버 변수의 접근 제어자는 private을 사용해서 작성한다.
-자바빈에서는 멤버 필드를 프로퍼티(property)라고도 부른다.
-프로퍼티의 값을 저장하고 얻어내는 메소드를 setter/getter 메소드라 하며, 접근 제어자로 public을 사용한다.
자바빈 클래스의 예시
package bean.logon;
public class DbDateLogin{//자바빈 클래스
//프로퍼티
private String id;
private String passwd;
//setter 메소드
public void setId(String id){
this.id = id.trim();
}
public void setPasswd(String passwd){
this.passwd = passwd.trim();
}
//getter 메소드
public String getId(){
return id;
}
public String getPasswd(){
return passwd;
}
}
자바빈의 작성(저장)위치
-일반적으로 자바파일(서블릿, 자바빈)은 [웹애플리케이션 폴더]-[WEB-INF]-[classes]폴더에 위치
-가상 환경 이클립스에서는 [프로젝트명]-[java Resources]-[src] 폴더에 자바빈 클래스들이 위치한다.
-이클립스에서 자바빈을 포함한 로직 파일을 작성하면 원본 파인은 [프로젝트명]-[Java Resources]-[src] 폴더에 위치하게 되고, 또한 자동으로 컴파일되어'.class' 파일은 [build]-[classes]폴더에 위치한다.
-작성이 끝난 후에 해당 프로젝트를 WAR파일로 내보내기 하면 [build]-[classes]폴더에 있는 자바 클래스 파일들은 서버상의 [웹 애플리케이션 폴더]-[WEB-INF]-[classes] 폴더에 알아서 위치된다.
자바빈 작성
1.[new]-[class]에서 로 자바 클래스를 하나 만든다.
2.package 패키지이름;
public class 클래스이름{
private String id(프로퍼티 이름);
}
3.[source]-[Generate Getters and Setters] 메뉴에서
id 프로퍼티(프로퍼티 이름)를 선택해서
insertion point: after 'id(프로퍼티 이름)'
sort by: Fields in getter/setter pairs
-OK클릭
4.package 패키지이름;
public class 클래스이름{
private String id(프로퍼티 이름);
public String getId() {
}
public String setId(String id) {
}
}
처럼 만들어진다.
자바빈과 연동하는 액션 태그
자바빈 관련 액션 태그 3가지
1.<jsp:useBean id="..." class="..." scope="..."/> 자바빈 객체를 생성
2.<jsp:setProperty name="..." property="..." value="..."/> 생성된 자바빈 객체의 프로퍼티 값을 저장
3.<jsp:getProperty name="..." property="..." /> 생성된 자바빈 객체의 프로퍼티 값을 사용하기 위해 얻어냄
●<jsp:useBean id="빈 이름" class="자바빈 클래스 이름" scope="범위"/>
-id속성: 생설될 자바빈 객체(인스턴스)의 이름을 쓰는 곳. 필수 속성이므로 생략할 수 없다.
-class 속성: 객체가 생성될 자바빈 클래스명을 기술하는 곳으로, 패키지명을 포함한 자바 클래스의 풀네임을 기술한다.(필수속성) ex)class="패키지이름.클래스이름"
-scope 속성: 자바빈 객체의 유효 범위로 자바빈 객체가 공유되는 범위를 지정한다. scope 속성값으로 page, request, session, application을 가지며 scope 속성 생략시 기본값은 page이다.
●<jsp:setProperty name="빈 이름" property="프로퍼티 이름" value="프로퍼티에 저장할 값"/>
-name 속성: 자바빈 객체의 이름을 지정한다.(필수 속성)
-property 속성: 프로퍼티명을 지정한다.(필수 속성)
-value 속성: 프로퍼티에 저장할 값을 지정하며, 생략가능
<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">
</td>
</tr>
자바빈을 사용하는 JSP 페이지
<jsp:useBean id=:inDb" scope="page" class="bean.logon.DbDataLogin">
<jsp: setProperty name="inDb" property="id" />
</jsp:userBean>
자바빈 클래스
public void setId(String id) {
this.id= id;
}
이 세개의 굵게 강조한 부분이 일치해야 한다.
●<jsp:getProperty name="빈 이름" property="프로퍼티 이름" />
-name 속성: 자바빈 객체의 이름을 지정한다.(필수 속성)
-property 속성: 프로퍼티명을 기술하는 곳이다.(필수 속성)
위의 <jsp:getProperty name="testBean" property="id"/> 액션 태그는 자바빈 클래스의 getId() 메소드와 자동 연동된다.
property 속성값"id"는 자바빈 클래스의 프로퍼티 id를 의미.
'language > JSP' 카테고리의 다른 글
JSP 내장 객체(Implied Object) (0) | 2020.11.13 |
---|---|
JSP(Java Server Pages) vs Servlet(Server+ applet) (0) | 2020.08.07 |
Model1 vs Model2 vs MVC(Model View Controller) 패턴(pattern) (0) | 2020.08.07 |
getParameter()와 getAttribute()차이점 (0) | 2020.06.06 |
웹 프로그래밍의 이해 (0) | 2020.02.24 |
댓글