JavaBean 의 개념과 구조, JSP 에서 사용하는 방법

JavaBean 의 개념과 구조, JSP 에서 사용하는 방법

JavaBean

JavaBean 이란 특정한 일을 독립적으로 수행하는 컴포넌트를 의미한다. Java 에서 쉽게 말해 “Class” 개념이다.

JSP 에서 JavaBean 을 사용하는 이유는 제목에서 볼 수 있듯이 HTML 코드와 Java 코드를 분리하기 위함이다. 예전 스프링 프레임워크를 잠깐 할 때 Model 1 과 Model 2 를 잠깐 설명한 적이 있다.

또한 JSP 에서 Beans를 사용하게 되면 데이터 처리와 공용화된 기능을 제공하기 때문에 잘 활용만 한다면 프로그램의 중복을 줄이고 더욱 원할하게 유지·보수를 할 수 있다.

Model 2
Model 2

위 그림은 MVC 패턴을 적용한 형태이다. 자세한 설명은 아래 링크에 첨부되어 있으니 이전 포스팅을 보는 것이 좋을 것 같다.

Enterprise Java Beans 는 보안을 중시하고 규모가 크다. 즉 금융기관, 증권사, 이동통신사 등의 업무 시스템들이 사용하는 Beans 이다. (크고 무겁고 사용하려면 구매해야 한다.)

 

Beans Class 구조

일반적인 Beans Class 는 다음과 같은 구성을 취한다.

class xxxBean {
    private String xxx;

    public String getXxx() {
        return xxx;
    }
    public Strint setXxx(String xxx) {
        this.xxx = xxx;
    }
}

첫 번째로 멤버변수가 온다. 만약 데이터베이스와 연동하는 빈즈라면 데이터베이스 테이블의 컬럼 이름과 매칭이 된다.

두 번째로 getter와 setter가 온다. 임의의 메서드를 만들 수도 있지만 JSP 액션과의 연동을 위해 getXxx, setXxx와 같은 이름을 사용해야 한다. (이클립스에서 generate getter setter .. 을 이용한다.) 또한 Bean 내부에 들어갈 속성 이름의 첫 글자가 대문자로 해야하는 규칙이 있다.

 

JSP 에서 Beans 선언

JSP 에서 Beans 사용을 선언하는 방법은 다음과 같다.

<jsp:useBean id="mybean" scope="request" class="MyBean" />

useBean 액션을 선언한 문장이다. 여기서 id 는 Beans Class 의 인스턴스 이름으로 사용할 변수 이름이다. scope 는 Beans Class 의 범위이고 범위는 page, request, session, application 이 올 수 있다. 마지막으로 class 는 Beans Class 의 클래스 이름이고 반드시 패키지를 포함하여야 한다.

이렇게 선언된 Beans 는 다음과 같은 자바 코드의 의미를 갖는다.

MyBean mybean = (MyBean)request.getAttribute("mybean");
if(mybean == null) {
    mybean = new MyBean();
    request.setAttribute("mybean", mybean);
}

 

JSP 에서 Beans 속성 설정

JSP 에서 Beans 를 먼저 선언한 다음 setProperty 와 getProperty 액션을 통해 값을 설정하고 가져올 수 있게 된다.

<jsp:setProperty name="mybean" property="userid" />
<jsp:setProperty name="mybean" property="userpasswd" />

<jsp:getProperty name="mybean" property="username" />
<jsp:getProperty name="mybean" property="userpasswd" />

name 은 Beans Class 의 인스턴스 이름이며 id 값에 설정했던 변수 이름이다. property 는 속성 값으로 Beans Class 의 setXxx, getXxx 메서드와 매칭될 속성 값이다.

 

간단한 예제 소스 “Login”

이클립스에서 간단하게 login 폼을 만들고 Beans Class 를 만들어서 값을 받고 ID 와 PW 가 맞는지 체크하는 간단한 예제를 볼 것이다.

New Project "login"
New Project “login”

우선 새로운 프로젝트를 만든다. 필자는 프로젝트 이름을 간단하게 “login”이라 했다. 그리고 예제에서 로그인 흐름은 다음과 같다.

Login UI (HTML 문서로 작성할 것) → JSP Beans Action (Beans Class 를 이용해 Beans 를 만든 후 ID 와 PW 를 저장할 것)

먼저 Login UI 인 HTML 문서는 다음과 같이 아주 단순하게 작성했다.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form method='post' action='jspbean.jsp'>
        <input type="text" name="userid" /><br>
        <input type="password" name="userpw" />
        <input type="submit" />
    </form>
</body>
</html>

Beans Class 는 다음과 같이 만들었다. 여기서 중요한 것은 Beans 는 default package 를 허용하지 않는다. 반드시 패키지를 만들어서 사용해야 한다.

New Java Class "login"
New Java Class “login”

 

package login;

public class login {
    private String userid;
    private String userpw;
    
    public String getUserid() {
        return userid;
    }
    public void setUserid(String userid) {
        this.userid = userid;
    }
    public String getUserpw() {
        return userpw;
    }
    public void setUserpw(String userpw) {
        this.userpw = userpw;
    }
    
    public boolean checkLogin() {
        String id = "abc";
        String pw = "1234";
        if( this.userid.equals(id) && this.userpw.equals(pw)) 
            return true;
        else 
            return false;
    }
}

ID 와 PW 를 받을 두 개의 멤버변수와 Getter 와 Setter, 정보가 맞는지 체크하는 메서드 checkLogin() 이 있는 Beans Class 를 만들었다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
 <jsp:useBean

id=”user”
 class="login.login" />
 <jsp:setProperty name="

user
" property="*" />
 
<!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>Insert title here</title>
</head>
<body>
이 페이지를 띄울 때 받은 변수 userid : <%= request.getParameter("userid") %> <br>
이 페이지를 띄울 때 받은 변수 userpw : <%= request.getParameter("userpw") %> <br>

Beans Class 를 활용해 Beans 를 만들고 그 객체 user에 있는 변수 userid : <jsp:getProperty name="user" property="userid" /> <br>
Beans Class 를 활용해 Beans 를 만들고 그 객체 user에 있는 변수 userpw : <jsp:getProperty name="user" property="userpw" /> <br>

로그인 체크 메서드 : <%=

user
.checkLogin() %>
</body>
</html>

JSP 에 이해를 돕기위해 위와 같이 작성했다. 맨 처음 HTML 에서 POST 방식으로 변수를 전달했다. 그 것은 request.getParameter() 메서드가 잡는다.

맨 위에 useBean 액션을 통해 “user”라는 이름을 갖는 객체를 생성했다. 이 객체는 JSP 안에서 <% %>(JSP 스크립트릿) 을 통해 객체로 사용될 수 있다.

예제 Submit 1
예제 Submit 1
예제 Submit 2
예제 Submit 2

 

참고자료

프로젝트로 배우는 자바 웹 프로그래밍 – 한빛아카데미

[JSP] Servlet 이란?

[WEB] MVC (Model, View, Controller) 의 개념

%d 블로거가 이것을 좋아합니다: