자바빈 (D-94)

최우정·2022년 5월 18일
0

100일

목록 보기
7/17
post-thumbnail

📒 1. 자바빈의 개요

자바빈은 JSP 페이지의 디자인 부분과 비즈니스 로직 부분을 분리함으로써 복잡한 JSP 코드들을 줄이고, 프로그램의 재사용성을 증가시킨다.

자바빈의 설계 규약

  1. 멤버 변수마다 별도의 get/set 메소드가 존재해야 한다.
  2. get 메소드는 파라미터가 존재하지 않아야 한다.
  3. get 메소드는 반드시 하나 이상의 파라미터가 존재해야 한다.
  4. 빈즈 컴포넌트의 속성은 반드시 읽기 또는 쓰기가 가능해야 한다. 즉, get 메소드와 set 메소드를 구현해야 한다. 단 읽기 전용인 경우 get 메소드만 정의할 수 있다.
  5. 생성자는 파라미터가 존재하지 않아야 한다. 인자 없는 생성자가 반드시 있어야 한다.
  6. 멤버 변수의 접근 제어자는 private이며, 각 set/get 메소드의 접근 제어자는 public으로 정의되어야 하며 클래스의 접근 제어자는 public으로 정의한다.

BeanTest.java


package test;

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

beanTest1.jsp

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

<jsp:useBean id="beantest" class="test.BeanTest" scope="page" />
<html>
<head>
<title>JavaBean Test</title>
</head>
<body>
	<b>자바빈 사용 예제</b>
	<h3><%=beantest.getName() %></h3>
</body>
</html>

📒 2. JSP에서 자바빈 사용하기

<jsp:useBean/> 자바빈 객체를 생성하기 위한 액션 태그이다.
<jsp:setProperty/> 자바빈 클래스의 속성 값을 설정하기 위한 태그이다.

beanTest2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:useBean id="beantest" class="test.BeanTest" scope="page"/>
<jsp:setProperty name="beantest" property="name" value="BeanTest!"/>
<html>
<head>
<title>JavaBean Test</title>
</head>
<body>
	<b>자바빈 사용 예제</b>
	<h3><%=beantest.getName() %></h3>
</body>
</html>

beanTest.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="beanTest3.jsp">
		이름: <input type="text" name="name"/>
		<br/>
		<input type="submit" value="전송"/>
	</form>
</body>
</html>

beanTest3.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:useBean id="beantest" class="test.BeanTest" scope="page"/>
<jsp:setProperty name="beantest" property="name" param="name"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaBean Test</title>
</head>
<body>
	<b>자바빈 사용 예제</b>
	<h3><%=beantest.getName()  %></h3>
</body>
</html>

BeanTest2.java

package test;

public class BeanTest2 {
	private String name;
	private String addr;
	private String email;
	private String birthday;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAddr() {
		return addr;
	}
	public void setAddr(String addr) {
		this.addr = addr;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getBirthday() {
		return birthday;
	}
	public void setBirthday(String birthday) {
		this.birthday = birthday;
	}
}

beanTest2.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
	#formArea{
		margin : auto;
		width: 400px;
		border: 1px solid black;
	}
	h1, filedset {
		text-align: center;
	}
</style>
</head>
<body>
	<section id = "formArea">
		<h1>property="*"테스트</h1>
		<form action = "beanTest4.jsp" method = "POST">
			<fieldset>
				<label for = "name"> 이름: </label><input type = "text" name = "name" id = "name"/><br>
				<label for = "addr"> 주소: </label><input type = "text" name = "addr" id = "addr"/><br>
				<label for = "email"> 이메일 주소: </label><input type = "email" name = "email" id = "email"/><br>
				<label for = "birthday"> 생년월일: </label><input type = "date" name = "birthday" id = "birthday"/><br>
				<input type = "submit" value = "전송">
			</fieldset>
		</form>
	</section>
</body>
</html>

beanTest4.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="beantest" class="test.BeanTest2" scope="page"/>
<jsp:setProperty name="beantest" property="*"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaBean Test</title>
</head>
<body>
	<h1>자바빈 속성 출력</h1>
	<b>이름: </b> <%=beantest.getName() %><br>
	<b>주소: </b> <%=beantest.getAddr() %><br>
	<b>이메일 주소: </b> <%=beantest.getEmail() %><br>
	<b>생년월일: </b> <%=beantest.getBirthday() %><br>
</body>
</html>

beanTest5.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:useBean id="beantest" class="test.BeanTest" scope="page"/>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaBean Test</title>
</head>
<body>
	<b>자바빈 사용 예제</b>
	<h3><%=beantest.getName() %></h3>
	<h3><jsp:getProperty property="name" name="beantest"/></h3>
</body>
</html>

📒 3. 자바빈을 이용한 회원 가입 폼 작성

JoinBean.java

package join;

public class JoinBean {
	private String id;
	private String pass;
	private String name;
	private int sex;
	private int age;
	private String email;
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPass() {
		return pass;
	}
	public void setPass(String pass) {
		this.pass = pass;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getSex() {
		return sex;
	}
	public void setSex(int sex) {
		this.sex = sex;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
}

joinForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 가입 폼</title>
<style>
	#formArea {
		margin: auto;
		width: 400px;
		border: 1px solid gray;
		text-align: center;
	}
	h1 {
		text-align: center;
	}
	table {
		width: 380px;
		margin: auto;
		text-align: center;
	}
</style>
</head>
<body>
	<section id= "formArea">
		<h1>회원정보 입력</h1>
		<form action="joinChk.jsp" method="post">
			<table>
				<tr>
					<td><label for="id">아이디 : </label></td>
					<td><input type="text" name="id" id="id"></td>
				</tr>
				<tr>
					<td><label for="pass">비밀번호 : </label></td>
					<td><input type="password" name="pass" id="pass"></td>
				</tr>
				<tr>
					<td><label for="name">이름 : </label></td>
					<td><input type="text" name="name" id="name"></td>
				</tr>
				<tr>
					<td><label for="sex">성별 : </label></td>
					<td><input type="radio" name="sex" value="1" id="sex" checked><input type="radio" name="sex" value="2"></td>
				</tr>
				<tr>
					<td><label for="age">나이 : </label></td>
					<td><input type="text" name="age" id="age"></td>
				</tr>
				<tr>
					<td><label for="email">이메일주소 : </label></td>
					<td><input type="text" name="email" id="email"></td>
				</tr>
				<tr>
					<td colspan="2">
						<input type="submit" value="가입">
						<input type="reset" value="다시 작성">
					</td>
				</tr>
			</table>
		</form>
	</section>
</body>
</html>

joinChk.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%request.setCharacterEncoding("UTF-8"); %>
<jsp:useBean id="join" class="join.JoinBean"/>
<jsp:setProperty name="join" property="*"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 가입 입력 정보 확인 페이지</title>
<style type="text/css">
	table{
		width: 400px;
	}
	h1 {
		text-align: center;
	}
</style>
</head>
<body>
	<table>
		<tr>
			<td><b>아이디 : </b></td>
			<td><jsp:getProperty property="id" name="join"/></td>
		</tr>
		<tr>
			<td><b>비밀번호 : </b></td>
			<td><jsp:getProperty property="pass" name="join"/></td>
		</tr>
		<tr>
			<td><b>이름 : </b></td>
			<td><jsp:getProperty property="name" name="join"/></td>
		</tr>
		<tr>
			<td><b>성별 : </b></td>
			<td><jsp:getProperty property="sex" name="join"/></td>
		</tr>
		<tr>
			<td><b>나이 : </b></td>
			<td><jsp:getProperty property="age" name="join"/></td>
		</tr>
		<tr>
			<td><b>이메일주소 : </b></td>
			<td><jsp:getProperty property="email" name="join"/></td>
		</tr>
	</table>
</body>
</html>

profile
비전공자 Java, JavaScript, Html, Css, C++ 공부중

0개의 댓글