Web Programming/JSP

[JSP] 자바빈즈

IT수정 2024. 10. 7. 12:12

지금까지 JSP 페이지 내에서 사용할 수 있는 여러 가지의 기술을 통해 쉽고 간단하게 JSP 프로그래밍을 할 수 있었다. 하지만 여기엔 단점이 몇 가지 있다. 첫 번째로 JSP 페이지에 HTML을 제외한 다른 많은 JSP 코드들이 있어 JSP 페이지를 이해하기 어렵다. 이런 경우 디자이너가 디자인하기에 복잡하고 어려울 수밖에 없다. 두 번째로는 JSP 페이지 내에 작성된 프로그램 코드는 다시 사용하기가 어렵다. 한마디로 코드 조각(snippet)에 불과하다. 

 

이렇게 JSP 페이지가 복잡한 자바코드로 구성되는 것을 피하고 쉽고 간단한 코드만을 구성하도록 하는 것이 자바빈즈의 목적이다. 자바빈즈는 JSP 안에 수많은 자바코드들이 담당했던 일들을 독립적으로 처리하기 위한 부품과도 같다. 이렇게 부품을 만들어 놓고서 JSP에서 간단히 호출해서 사용할 수 있다. 자바빈즈는 자바로 작성되어진 컴포넌트들을 일반적으로 일컫는 말이다. 이러한 컴포넌트들을 하나하나 개별적으로 부를 때는 그냥 빈이라고 부른다.

 

자바빈즈 만들기

빈 작성

  • 정보를 저장하는 변수는 모두 private로 선언
  • private로 선언된 변수의 값을 저장하는 메서드 생성. 메서드 형식은 setXxx()
  • private로 선언된 변수의 값을 가져오는 메서드 생성. 메서드 형식은 getXxx()
  • setXxx()와 getXxx()는 public으로 선언
public class MyBean {
...
...
}

private String name;
public void setName(String name){
	this.name=name;
	}
    
public void getName() {
	return name;
	}

 

빈을 이용한 간단한 JSP 프로그래밍

  1. [Java Resources]-[src/main/java]에 ch09 패키지 생성
  2. ch09 패키지에 클래스 생성

SimpleBean.java

package ch09;

public class SimpleBean {
	
	private String message = "";
	
	public String getMessage() {
		return message;
	}
	
	public void setMessage(String message) {
		this.message = message;
	}
}

 

빈을 이용하는 JSP 파일 작성

빈 관련 태그 내용
<jsp:useBean id=".." scope=".."/> 빈을 생성
<jsp:setProperty name=".." property=".." value=".."/> 빈에 값을 저장
<jsp:getProperty name=".." property=".."/> 빈의 값을 가져옴

 

simpleBean.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:useBean id="test" class="ch09.SimpleBean" scope="page"/>
<jsp:setProperty name="test" property="message" value="빈을 쉽게 정복하자"/>
<html>
<body>
<h1>간단한 빈 프로그래밍</h1>
<br/>
Message: <jsp:getProperty name="test" property="message"/>
</body>
</html>

 

출력 결과

 

빈을 이용한 회원가입 양식 작성하기

member.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>회원가입</title>
    <link href="style.css" rel="stylesheet" type="text/css">
    <script language="JavaScript" src="script.js"></script>
</head>
<body bgcolor="#996600">
    <table width="80%" align="center" border="0" cellspacing="0" cellpadding="5">
        <tr>
            <td align="center" valign="middle" bgcolor="#FFFFCC">
                <table width="90%" border="1" cellspacing="0" cellpadding="2" align="center">
                    <form name="regForm" method="post" action="memberProg.jsp">
                        <tr align="center" bgcolor="#996600">
                            <td colspan="3"><font color="#FFFFFF"><b>회원 가입</b></font></td>
                        </tr>
                        <tr>
                            <td width="100">아이디</td>
                            <td width="200"><input name="id" size="15" required></td>
                            <td width="200">아이디를 적어 주세요.</td>
                        </tr>
                        <tr>
                            <td>패스워드</td>
                            <td><input type="password" name="pwd" size="15" required></td>
                            <td>패스워드를 적어 주세요.</td>
                        </tr>
                        <tr>
                            <td>패스워드 확인</td>
                            <td><input type="password" name="repwd" size="15" required></td>
                            <td>패스워드를 확인합니다.</td>
                        </tr>
                        <tr>
                            <td>이름</td>
                            <td><input name="name" size="15" required></td>
                            <td>고객 실명을 적어주세요.</td>
                        </tr>
                        <tr>
                            <td>생년월일</td>
                            <td><input name="birthday" size="27" required></td>
                            <td>생년월일을 적어주세요.</td>
                        </tr>
                        <tr>
                            <td>이메일</td>
                            <td><input name="email" size="20" required></td>
                            <td>이메일을 적어주세요.</td>
                        </tr>
                        <tr>
                            <td colspan="3" align="center">
                                <input type="submit" value="회원가입">&nbsp;
                                <input type="reset" value="다시쓰기">
                            </td>
                        </tr>
                    </form>
                </table>
            </td>
        </tr>
    </table>
</body>
</html>

 

MemberBean.java

package ch09;

public class MemberBean {
	
	private String id;
	private String pwd;
	private String name;
	private String birthday;
	private String email;
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id=id;
	}
	
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd=pwd;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name=name;
	}
	
	public String getBirthday() {
		return birthday;
	}
	public void setBirthday(String birthday) {
		this.birthday=birthday;
	}
	
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email=email;
	}
}

 

memberProg.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="regBean" class="ch09.MemberBean" scope="page"/>
<jsp:setProperty name="regBean" property="*"/>
<html>
<head>
    <title>회원가입 확인</title>
    <link href="style.css" rel="stylesheet" type="text/css">
</head>
<body style="background-color: #996600;">
    <table width="80%" align="center" border="0" cellspacing="0" cellpadding="5">
        <tr>
            <td align="center" valign="middle" bgcolor="#FFFFCC">
                <table width="90%" border="1" cellspacing="0" cellpadding="2" align="center">
                    <form name="regForm" method="post" action="memberInsert.jsp">
                        <tr align="center" bgcolor="#996600">
                            <td colspan="2">
                                <font color="#FFFFFF"><b>
                                <jsp:getProperty name="regBean" property="name"/>
                                회원님이 작성하신 내용입니다. 확인해 주세요.</b></font>
                            </td>
                        </tr>
                        <tr>
                            <td width="24%">아이디</td>
                            <td width="41%"><jsp:getProperty name="regBean" property="id"/></td>
                        </tr>
                        <tr>
                            <td>패스워드</td>
                            <td><jsp:getProperty name="regBean" property="pwd"/></td>
                        </tr>
                        <tr>
                            <td>이름</td>
                            <td><jsp:getProperty name="regBean" property="name"/></td>
                        </tr>
                        <tr>
                            <td>생년월일</td>
                            <td><jsp:getProperty name="regBean" property="birthday"/></td>
                        </tr>
                        <tr>
                            <td>이메일</td>
                            <td><jsp:getProperty name="regBean" property="email"/></td>
                        </tr>
                        <tr>
                            <td colspan="2" align="center">
                                <input type="submit" value="확인완료">&nbsp;
                                <input type="button" value="다시쓰기" onClick="history.back()">
                            </td>
                        </tr>
                    </form>
                </table>
            </td>
        </tr>
    </table>
</body>
</html>

 

출력 결과

 

'Web Programming > JSP' 카테고리의 다른 글

[JSP] 데이터베이스 작성  (3) 2024.10.08
[JSP] 데이터베이스 설치  (0) 2024.10.08
[JSP] 서블릿에서 세션 사용하기  (0) 2024.10.07
[JSP] 서블릿의 요청 방식  (0) 2024.10.07
[JSP] 서블릿 기초 문법  (1) 2024.10.04