[서블릿의 이해]

 

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 클래스 테스트 작성

    }

}


 

+ Recent posts