[서블릿의 이해]
1. 서블릿을 이용한 구성
- 자바로 개발된 .class 파일
- JSP에 비하여 컴파일 단계가 생략되기 때문에 속도가 빠르다.
- 서블릿의 단점 : 디자인 부분과 혼합하여 작업하기가 매우 어렵다.
2. JSP(Java Server Page)를 이용한 구성
- .jsp 파일
- Servlet의 불편한 디자인 부분을 좀더 간결하게 제작하도록 개선된 서버 스크립트
- 하나의 JSP페이지에는 HTML, CSS, JavaScript, Java Code등이 혼합되어 코딩이 이루어 진다.
- 유지보수 및 보안 문제, 기능 확장이 어려워 개발시 JSP와 Beans로 분리한다.
3. JSP + Beans 를 이용한 구성
- .jsp + .java 파일로 구성
- BEANS는 콤포넌트 자바 개발자가 Business Logic(Process Logic)를 구현하는 목적으로 사용된다.
- DB관련해서 INSERT, UPDATE, DELETE, SELECT등 구현시 주로 사용한다.
[Beans의 이해]
- jsp페이지에 나열되는 자바 처리로직은 디자인 코드와 함께 매우 복잡한 코드를 구성한다.
이로인해 디자인 변경시 자바코드가 영향을 받아 오류가 자주 발생되며,
코드 수정시 코드를 알아볼 수 없어 유지보수가 어렵다.
또한 작업 도중 자바 코드가 JSP 페이지에 반복적으로 사용될 수 있으며,
코드의 노출로 저작권등 보안에 심각한 문제가 발생된다.
이러한 반복되는 자바 코드들을 JAVA파일안에 저장하여 사용하는 형태를 빈즈라고 한다.
- 데이터를 출력하는 레이어와 데이터를 처리하는 레이어를 분리(Manager, Process class)하여
유지보수 시간을 단축 시키 수 있으며 코드의 가독성을 높일 수 있다.
- 확장자는 *.java 이며 컴파일해서 .class형태로 배포한다.
- 빈즈는 dll과 같은 원리를 가지고 있다.
- 빈즈의 종류
DTO(Data Transfer Object) class
Manager(Process) class
DAO(Data Access Object) class
[DTO (Data Transfer Object) 데이터 전송 객체]
- 사용자가 입력한 값을 객체형태로 받을수 있게 클래스를 구성한다
- 폼에서 입력된 데이터들은 하나의 DTO 객체로 변환 될 수 있다.
- 하나의 데이터베이스 레코드를 저장하며 레코드와 같은 구조를 가지고 있다.
- 레코드가 50개이면 DTO 객체도 50개가 만들어 진다.
- 한개의 레코드는 빈즈 클래스 객체 하나로 매핑된다.
- 한개의 컬럼은 멤버 변수로 매핑된다.
[DAO (Data Access Object)]
- Insert, delete, update, select등 레코드 처리를 주 목적으로 한다.
- DTO 객체를 데이터베이스 서버에 저장한다.
- 데이터베이스 서버로 부터 레코드를 SELECT한 후, DTO 객체로 변경해 가져온다.
- SQL을 직접 실행하는 기능을 가지고 있다.
- JSP에서 데이터베이스 접속 로직을 Beans로 작성하여 DB정보 변경시 쉽게 변경사항을 구현할 수 있다.
[Beans 테스트 페이지 작성]
1. Beans를 사용하지 않은 경우 (jsp코드)
파일명 : WebContent/testbeans/test01.jsp
#########################################################
<%@ page contentType="text/html; charset=utf-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>빈즈를 사용하지 않은 경우</title>
</head>
<body>
<%
int a = 10;
int b = 3;
%>
<%!
public int add(int a, int b){
return a + b;
}
public int sub(int a, int b){
return a - b;
}
public int mul(int a, int b){
return a * b;
}
public int div(int a, int b){
return a / b;
}
public int mod(int a, int b){
return a % b;
}
public int max(int a, int b){
if ( a >= b ){
return a;
}else{
return b;
}
}//큰수
public int min(int a, int b){
if ( a <= b ){
return a;
}else{
return b;
}
}//작은수
public String chart(int a){
String str = "";
str = "<font color='#0000FF'>";
for(int i=0; i<a; i++){
str = str + "♣";
}
str = str + "</font> (" + a + ")";
return str;
}
%>
<center>
<table width="300" border="1" align="center">
<tr>
<td width="100"><div align="center">연산</div></td>
<td width="200"><div align="center">결과</div></td>
</tr>
<tr>
<td>변수 a </td>
<td> <%=a%></td>
</tr>
<tr>
<td>변수 b </td>
<td> <%=b%></td>
</tr>
<tr>
<td>더하기</td>
<td> <%=add(a, b)%></td>
</tr>
<tr>
<td>빼기</td>
<td> <%=sub(a, b)%></td>
</tr>
<tr>
<td>곱하기</td>
<td> <%=mul(a, b)%></td>
</tr>
<tr>
<td>나누기</td>
<td> <%=div(a, b)%></td>
</tr>
<tr>
<td>나머지</td>
<td> <%=mod(a, b)%></td>
</tr>
<tr>
<td>큰수</td>
<td> <%=max(a, b)%></td>
</tr>
<tr>
<td>작은수</td>
<td> <%=min(a, b)%></td>
</tr>
<tr>
<td>변수 a </td>
<td> <%=chart(a)%></td>
</tr>
<tr>
<td>변수 b </td>
<td> <%=chart(b)%></td>
</tr>
</table>
</center>
</body>
</html>
#######################################################
2. JSP와 빈즈의 분리
- 자바 소스 : src 폴더
- 컴파일 결과 : build/classes 폴더에 저장
파일명 : SungjukBean.java
#######################################################
package www.sungjuk;
public class SungjukBean {
public int add(int a, int b){
return a + b;
}
public int sub(int a, int b){
return a - b;
}
public int mul(int a, int b){
return a * b;
}
public int div(int a, int b){
return a / b;
}
public int mod(int a, int b){
return a % b;
}
public int max(int a, int b){
if ( a >= b ){
return a;
}else{
return b;
}
}
public int min(int a, int b){
if ( a <= b ){
return a;
}else{
return b;
}
}
public String chart(int a){
String str = "";
str = "<font color='#0000FF'>";
for(int i=0; i<a; i++){
str = str + "★";
}
str = str + "</font> (" + a + ")";
return str;
}
}
###################################################
[SungjukBean 클래스 테스트]
package www.sungjuk;
public class SungjukBeanTest {
public static void main(String[] args) {
//여기에...SungjukBean 클래스 테스트 작성
}
}
'..열심히 공부하세.. > JSP' 카테고리의 다른 글
[12] 성적테이블 DTO(Data Transfer Object) 빈즈 (0) | 2012.02.19 |
---|---|
[11] JSP에서 빈즈 테스트 (0) | 2012.02.15 |
[과제] 회원가입 (0) | 2012.02.15 |
[09] Session 이용한 로그인 체크 (0) | 2012.02.15 |
[08] DB연결 include, 성적테이블 수정, 삭제 (0) | 2012.02.14 |