본문 바로가기

Languages/JSP

JSP - 데이터를 담는다! BEAN!



MVC 에 대한 설명


# 순수 자바 보다는 JSP를 위한 방법이 됩니다.

# 이 방법을 습득하게 되면, 나중에 실무에서도 익숙해질 수 있습니다.

# JSP에서는 어떻게 씌여 질까요?

  • M : Model
    • 데이터입니다. 데이터베이스가 존재하게 됩니다. 이 데이터를 가져오는 것을 MODEL이 해줍니다.
  • V : View
    • 가져오는 데이터는 동일하지만, 사용자에게 보여질 화면은 달라질 수 있습니다.
    • 모델이 변화되지 않기 때문에, 뷰만 분리시켜 따로 구성할 수 있습니다.
  • C : Controller
    • 모델과 뷰의 데이터 연계를 제어해주는 컨트롤 입니다.

#DAO(Data Accese Object) : 데이터를 추출하기 위한 개체입니다. 데이터베이스가 될 수 있으며, 파일이 될 수 있습니다.



왜?! 자바빈즈를 사용할까.?


"데이터가 여기있다가, 저기 있다가, 헷갈리네. ㅠ_ㅠ 뭐하러 빈즈를 쓰는거야 버럭 버럭"

  • 빈즈를 사용하게 되면, 데이터의 흐름을 관리할 때, 훨씬 체계적인 관리가 가능합니다.
    1. 프레젠테이션 로직과, 비즈니스 로직을 분리할 수가 있다. 즉 뷰와 JAVA소스의 분리가 가능합니다.
    2. 컴포넌트의 사용이 쉽게 되고, 공유가 쉽습니다.

▶실습 (itExpert 예제 4-2 p126)

# MyCalendar.java

package itexpert.chap04;

import java.util.*;
import java.text.*;

public class MyCalendar {
/*
* 년, 월, 일 사이의 구분자 기본값은 / 입니다.
*/
private String delimiter = "/";

/*
* 년, 월, 일 사이의 구분자를 설정합니다.
*/

public void setDelimiter(String delimiter){
this.delimiter = delimiter;
}

/*
* 오늘 날짜를 가져옵니다.
* 년,월,일 사이의 구분자는 setDelimiter()로 미리 설정합니다. 기본값 / 
* @return 오늘의 날짜/
*/


public String getToday(){
GregorianCalendar calendar = new GregorianCalendar();
StringBuffer today = new StringBuffer();

DecimalFormat df = new DecimalFormat("00");

today.append(calendar.get(Calendar.YEAR));
today.append(this.delimiter);
today.append(df.format(calendar.get(Calendar.MONTH)+1));
today.append(this.delimiter);
today.append(df.format(calendar.get(Calendar.DATE)));

return today.toString();
}
}

# myCalendar.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR" import = "itexpert.chap04.*"%>
<jsp:useBean id = "myCal" class="itexpert.chap04.MyCalendar" scope = "page"/>

<html>
<head>
<title>예제 4-2</title>
</head>

<body>
<center>
<h2>기본 출력 형태</h2>
<hr>
<table border=1>
<tr>

<td colspan = "2" bgcolor=yellow><font color=blue>기본 출력 형태</font></td>

</tr>

<tr>
<td><font size= 2>오늘 날짜는 </font></td><td><jsp:getProperty name="myCal" property="today"/></td>
</tr>

<tr>
<td colspan = 2 bgcolor="yellow"><font color=blue>구분자로 "-"를 주었을 때</font></td>
</tr>

<tr>
<jsp:setProperty name="myCal" property="delimiter" value="-"/>
<td><font size=2>오늘 날짜는 </font></td><td><jsp:getProperty name="myCal" property="today"/></td>
</tr>

<tr>
<td colspan=2 bgcolor="yellow"><font color=blue>구분자로 ""를 주었을 때</font></td>
</tr>

<tr>
<jsp:setProperty name="myCal" property="delimiter" value=""/>
<td><font size=2>오늘 날짜는 </font></td><td><jsp:getProperty name="myCal" property="today"/></td>
</tr>
</table>
</center>
</body>
</html>



------ Get/Set 이해가 되세요? ^ㅡ^

---------------------------------모르겠으면 댓글 ㅠ_ㅠ

JSP에서 자바 빈즈 사용하기


  • 자바 빈즈 설계 규약
    • 자바 빈즈 컴포넌트의 속성(Property)들은 읽기, 쓰기 중 적어도 하나 이상의 기능을 수행할 수 있어야 합니다.
    • 이러한 기능은 getXXX()와 setXXX(PropertyClass pro)형식의 메소드를 사용해서 가능하게 되는데, 읽기의 기능을 수행하기 위해서는 getXXX()를, 쓰기의 기능을 수행하기 위해서는 setXXX()를 사용합니다.
    • 그리고 속성을 다루는 메소드는 매우 간결하게 구성되어야 하는데, get은 파라미터를 받지 않는 형태이며, set은 하나의 매개 변수를 받는 메소드여야 합니다.
    • [정리하자면]
      1. 생성자는 파라미터가 없어야 합니다.
      2. 자바 빈즈 컴포넌트의 속성들은 읽기, 쓰기 중 적어도 하나 이상의 기능을 수행해야 합니다.
      3. getXXX()는 파라미터를 받지 않습니다.
      4. setXXX(.... xxx)는 반드시 하나의 파라미터를 받아야 합니다.



  • JSP에서 자바 빈즈를 사용하려면.
    • <jsp:useBean/>

<jsp:useBean id = "myInfo" class="chap04.MyInfo" scope="page"/>

    • 또는.

<jsp:useBean id = "myInfo" class="chap04.MyInfo" scope="page">

<jsp:setProperty name="myInfo" property="age"/>

</jsp:useBean>