Java Beans 개요
1) 자바 웹페이지의 개발방식의 흐름
servlet(.java) -> jsp -> servlet(.java)
2) 서블릿의 이해
서블릿을 이용한 구성
-
자바로 개발된 .class 파일
-
JSP에 비하여 컴파일 단계가 생략되기 때문에 속도가 빠르다.
-
서블릿의 단점 : 디자인 부분과 혼합하여 작업하기가 매우 어렵다.
JSP(Java Server Page)를 이용한 구성
-
.jsp 파일
-
Servlet의 불편한 디자인 부분을 좀더 간결하게 제작하도록 개선된 서버 스크립트
-
하나의 JSP페이지에는 HTML, CSS, JavaScript, Java Code등이 혼합되어 코딩이 이루어 진다.
-
유지보수 및 보안 문제, 기능 확장이 어려워 개발시 JSP와 Beans로 분리한다.
. JSP + Beans 를 이용한 구성
- .jsp + .java 파일로 구성
- BEANS는 콤포넌트 자바 개발자가 Business Logic(Process Logic)를 구현하는 목적으로 사용된다.
- DB관련해서 INSERT, UPDATE, DELETE, SELECT등 구현시 주로 사용한다.
3) Beans의 이해
-
jsp페이지에 나열되는 자바 처리로직은 디자인 코드와 함께 매우 복잡한 코드를 구성한다. 이로인해 디자인 변경시 자바코드가 영향을 받아 오류가 자주 발생되며, 코드 수정시 코드를 알아볼 수 없어 유지보수가 어렵다. 또한 작업 도중 자바 코드가 JSP 페이지에 반복적으로 사용될 수 있으며, 코드의 노출로 저작권등 보안에 심각한 문제가 발생된다. 이러한 반복되는 자바 코드들을 JAVA파일안에 저장하여 사용하는 형태를 빈즈라고 한다.
-
데이터를 출력하는 레이어와 데이터를 처리하는 레이어를 분리(Manager, Process class)하여 유지보수 시간을 단축 시키 수 있으며 코드의 가독성을 높일 수 있다.
-
확장자는 *.java 이며 컴파일해서 .class형태로 배포한다.
-
빈즈는 dll과 같은 원리를 가지고 있다.
-
빈즈의 종류
DTO(Data Transfer Object) class Manager(Process) class DAO(Data Access Object) class
Beans 테스트1 - 계산기
계산기(computerForm.jsp)
1 |
|
1) JSP 메소드를 이용 (computerok1.jsp)
1 |
|
2) new 연산자 (computerok2.jsp)
Compute.java 클래스를 만든다
1 |
|
new 연산자를 이용해 불러온다.
1 |
|
3) beans 이용 (computerok3.jsp)
위와 동일하게 Compute.java 클래스를 만들어 불러온다.
Java Bean(객체) 생성
<jsp:useBean id="객체명" class="팩키지명.클래스명" scope="page">
Java Bean(id)의 유효범위
- scope=”page” : 현재페이지에서만 유효, 생략 시 기본값
- scope=”request” : 다른페이지에서 공유
- scope=”session” : 다른페이지에서 공유
- scope=”application” : 다른페이지에서 공유
[주의사항]
Java Bean(id)가 제대로 생성 안될 수도 있다.
-> 해당프로젝트를 Refresh , Validate, Project -> Clean 해주기
1 |
|
Beans 테스트2 - 절대값, 팩토리얼
절대값,팩토리얼 입력(calcForm.jsp)
1 |
|
결과 창 (calcok.jsp)
CalcBean.java 클래스를 만든다.
package째 복사해서 src에 붙여넣으면 자동으로 생성
1 |
|
만든 CalcBean.java 클래스를 불러온다.
1 |
|
Beans를 이용한 성적테이블
성적 입력폼(sungjukForm.jsp)
1 |
|
데이터베이스 클래스
보안을 위해 따로 데이터베이스를 불러오는 코드는 클래스로 만든다.
DBOpen.java 와 DBClose.java 클래스를 만든다.(이번은 DBOpen.java만 사용)
DBOpen.java
1 |
|
성적 결과 폼(sungjukIns.jsp)
SungjukDAO.java , SungjukDTO.java 클래스를 만든다.
성적 결과창
sungjukDAO.java , sungjukDTO.java는 net.sungjuk 위치에 있고 이걸 불러와야 한다.
1 |
|
DAO (Data Access Object)
- Insert, delete, update, select등 레코드 처리를 주 목적으로 한다.
- DTO 객체를 데이터베이스 서버에 저장한다.
- 데이터베이스 서버로 부터 레코드를 SELECT한 후, DTO 객체로 변경해 가져온다.
- SQL을 직접 실행하는 기능을 가지고 있다.
- JSP에서 데이터베이스 접속 로직을 Beans로 작성하여 DB정보 변경시 쉽게 변경사항을 구현할 수 있다.
- 데이터 접근을 목적하는 객체이다.
- 커넥션 같은 것을 하나만 두고 여러 사용자가 DAO의 인터페이스를 사용하여 필요한 자료에 접근 하도록 하는 것
- DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트를 말한다.
SungjukDAO.java클래스의 insert()
1 |
|
DTO (Data Transfer Object) 데이터 전송 객체
- 사용자가 입력한 값을 객체형태로 받을수 있게 클래스를 구성한다
- 폼에서 입력된 데이터들은 하나의 DTO 객체로 변환 될 수 있다.
- 하나의 데이터베이스 레코드를 저장하며 레코드와 같은 구조를 가지고 있다.
- 레코드가 50개이면 DTO 객체도 50개가 만들어 진다.
- 한개의 레코드는 빈즈 클래스 객체 하나로 매핑된다.
- 한개의 컬럼은 멤버 변수로 매핑된다.
- 데이터가 포함된 객체를 한 시스템에서 다른 시스템으로 전달하는 작업을 처리하는 객체이다.
- DTO는 VO로 바꿔 말할 수 있는데 계층간 데이터 교환을 위한 자바빈즈를 말한다.
- SungjukVO (Value Object) , SungjukDataBean 라고도 쓰임
- 테이블의 칼럼과 1:1 매칭되는 field를 private 접근제어로 선언하고 getter, setter함수를 작성한다
SungjukDTO.java 클래스
1 |
|
성적 목록 (sungjukList.jsp)
1 |
|
sungjukDAO.java클래스의 list()
1 |
|
성적 상세보기 (sungjukRead.jsp)
1 |
|
SungjukDAO.java클래스의 read()
1 |
|
성적 삭제 (sungjukDel.jsp)
위에서는 이렇게 직접 import를 했는데 이런 공통적인 부분은 따로 .jsp 파일로 묶어 그 파일 하나만 include 하는 형식으로 한다.
1 |
|
ssi.jsp
한글변환은 모든 페이지의 공통부분이기 때문에 넣어준다.
만약 프로젝트시 공통부분은 이렇게 파일로 만들어 사용한다.
1 |
|
sungjukDel.jsp
<%@ include file=”ssi.jsp” %>
공통부분인 파일을 include 한 모습
1 |
|
SungjukDAO.java클래스의 delete()
1 |
|
성적 수정1 (sungjukUpdate.jsp)
틀은 성적 입력과 동일하게 하는대신 SELECT를 통해 값이 보여야 하기 때문에
SungjukDAO클래스의 read() 함수를 불러와서 사용한다. (상세보여주기 페이지와 동일한 함수 사용)
1 |
|
성적 수정2 (sungjukUpdateProc.jsp)
성적 결과폼처럼 값을 받은 뒤 SungjukDAO 클래스에서 update() 함수를 받아 사용한다. 이때 수정이므로 INSERT와는 다른 점이 sno를 dto 객체에 담아야 한다.
dto.setSno(sno);
1 |
|
SungjukDAO.java클래스의 update()
1 |
|