JavaBean
목차
JavaBean 이란 특정한 일을 독립적으로 수행하는 컴포넌트를 의미한다. Java 에서 쉽게 말해 “Class” 개념이다.
JSP 에서 JavaBean 을 사용하는 이유는 제목에서 볼 수 있듯이 HTML 코드와 Java 코드를 분리하기 위함이다. 예전 스프링 프레임워크를 잠깐 할 때 Model 1 과 Model 2 를 잠깐 설명한 적이 있다.
또한 JSP 에서 Beans를 사용하게 되면 데이터 처리와 공용화된 기능을 제공하기 때문에 잘 활용만 한다면 프로그램의 중복을 줄이고 더욱 원할하게 유지·보수를 할 수 있다.

위 그림은 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 가 맞는지 체크하는 간단한 예제를 볼 것이다.

우선 새로운 프로젝트를 만든다. 필자는 프로젝트 이름을 간단하게 “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 를 허용하지 않는다. 반드시 패키지를 만들어서 사용해야 한다.

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 스크립트릿) 을 통해 객체로 사용될 수 있다.


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