자바빈은 JSP 페이지의 디자인 부분과 비즈니스 로직 부분을 분리함으로써 복잡한 JSP 코드들을 줄이고, 프로그램의 재사용성을 증가시킨다.
자바빈의 설계 규약
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>
<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>
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>