# 1. Beans(강남콩)의 이해
- JSP Page 상에 나열되는 자바 처리 로직은 디자인 코드와 함께 매우 복잡한 코드를 구성합니다.
이로 인해 디자인 변경시 자바코드가 영향을 받아 오류가 자주 발생되며, 코드 수정시 코드를 알아볼 수
없어 유지보수가 매우 힘이 듭니다.
이러한 반복되는 자바 코드들을 JAVA 파일안에 저장하여 사용하는 형태를 빈즈라고 합니다.
- 확장자는 *.java입니다. 컴파일하여 .class 형태로 배포합니다.
- 메모리에 생성된 Beans(DTO)는 다른 자바 클래스(DAO, Business Logic)에 의하여 사용됩니다.
- Beans는 dll과 같은 원리를 가지고 있습니다.
- Beans는 sun에서 제시한 작성 규칙이 존재합니다.
# 2. DTO(Data Transfer Object : 데이터 전송 객체, value Object) Beans
- 폼에서 입력된 데이터들은 하나의 DTO 객체로 변환 될 수 있습니다.
- 하나의 데이터베이스 레코드를 저장하며 레코드와 같은 구조를 가지고 있습니다.
- 하나의 레코드는 Beans 클래스 객체 하나로 매핑됩니다.
1) 필드 선언 (멤버 변수, 인스턴트 변수)
- 하나의 컬럼 값을 저장
- 보안성 및 캡슐화, 데이터 은닉의 목적으로 private를 선언합니다.
ex) private String name;
2) setter
- 필드에 값을 저장하는 기능을 합니다.
- HTML 폼의 INPUT 태그의 값을 빈에 저장하는 역할을 합니다.
- 메소드 명은 set + input 태그의 이름 중 첫자를 반드시 대문자로 사용하는 규칙을 적용해 태그명을 지정
합니다. 따랏 HTML에서 input 태그의 이름은 영문 소문자로 사용하여 태그의 이름에 신중을 기해야
합니다,
예1)
<input type="text" name="id" size="15" value='user1'>
<input type="text" name="addr" size="15" value='user1'>
public void setId(String id) {
this.id = id;
}
public void setAddr(String addr) {
this.addr = addr;
}
3) getter
- 인스턴스 변수의 값을 가져오는 기능을 합니다.
예1) public String getName() {
return name;
}
# 3. DAO(Data Access Object : 데이터 접근 객체t) Beans
- DTO 객체를 만들어 편집 및 조작을 합니다.
- DTO를 데이터베이스 서버에 저장하기도 하고, 데이터 베이스 서버로부터 레코드를 Select해 DTO 객체로
변경해 가져오기도 합니다.
- Insert, delete, upadate, select 등 데이터 처리를 주 목적으로 ㅎ바니다.
# 4. Manager Class(관리 클래스, MGR)
- DTO와 DAO 사이에서 연결 및 처리 역할을 합니다.
DreamWeaver Eclipse DbEdit
(*.html, *.jsp) (*.java) (*.sql)
----------- ------------------------ -------------
JSP <-----> Manager Class <-----> DAO <-----> Oracle
↑ ↑
│ │
└--------------------------------┘
DTO
계층간 데이터 전송 객체
# 5. Beans의 사용 Scope(범위)
- page : 기본값, page를 벗어나면 자동으로 소멸합니다.(중요)
- request : forward, include에서 사용 가능, 약간 사용됩니다..
- Session : 사용자가 로그인해 있는 동안 계속적으로 살아 있습니다.
메모리 소모가 심함으로 필요한 곳에 적절히 사용해야 됩니다.
쇼핑카드 구현등 객체를 지속적으로 유지해야하는 경우에 사용됩니다.
사용자가 브라우저를 닫으면 고나련 JSP session Bean은 소멸됩니다.(중요)
- Application : 웹 사이트 전체, 모든 사용자에게 영향을 미치는 빈
메모리 소모가 심함으로 많이 사용하지 않고, 서버가 운영되는 동안 객체가 살아있습니다.
모든 사용자가 변수와 객체를 공유하게 됩니다.
서버를 재 시작해야 변수들이 재 설정됩니다.