다연이네

[days05] 자바 빈즈(Java Beans) 본문

JSP

[days05] 자바 빈즈(Java Beans)

 다연  2020. 12. 29. 20:27
반응형

1. 자바빈즈(Java Beans) - JSP 기반 웹 어플리케이션에서 정보를 표현하기 위한 객체 
    ( POJO - Spring 기반 (같은건데 스프링에서는 pojo라고 함) )
2. 자바빈 규약 ==  DTO == VO
   ㄱ. 직렬화
   ㄴ. private 필드 선언
   ㄷ. getter, setter
3. 자바빈(즈) : days05.MemberInfo 클래스 선언

 

days05.MemberInfo

package days05;

import java.io.Serializable;
import java.util.Date;

//Java Beans		얘만 붙히면 직렬화 가능해짐
public class MemberInfo implements Serializable{
	
	//private 필드 선언
	private String id;
	private String passwd;
	private String name;
	private Date registerDate;
	private String email;
	

	//getter, setter
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPasswd() {
		return passwd;
	}
	public void setPasswd(String passwd) {
		this.passwd = passwd;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Date getRegisterDate() {
		return registerDate;
	}
	public void setRegisterDate(Date registerDate) {
		this.registerDate = registerDate;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	
	
}

 

<%@page import="java.util.Date"%>
<%@page import="days05.MemberInfo"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="">
<style>
</style>
<script>
   $(document).ready(function (){     
   });
</script>
</head>
<body>

<%
	MemberInfo info = new MemberInfo();
	info.setId("admin");
	info.setName("관리자");
	info.setPasswd("1234");
	info.setRegisterDate(new Date());
	info.setEmail("admin@ss.com");
%>

<h3>멤버 정보 출력</h3>
아이디 : <%=info.getId() %><br>
이름 : <%=info.getName() %><br>
비밀번호 : <%=info.getPasswd() %><br>
등록일 : <%=info.getRegisterDate() %><br>
이메일 : <%=info.getEmail() %><br>
</body>
</html>

 

 자바빈즈를 사용하는 액션태그를 사용해 출력해보자

<jsp:useBean id="" class="패키지명.클래스명" scope="page"></jsp:useBean>

<body>
						<!--기본:페이지, 현재 페이지에서만 사용 가능  -->
<jsp:useBean id="info" class="days05.MemberInfo" scope="page"></jsp:useBean>
<jsp:setProperty value="admin" property="id" name="info"/>
<jsp:setProperty value="관리자" property="name" name="info"/>
<jsp:setProperty value="1234" property="passwd" name="info"/>
<jsp:setProperty value="<%=new Date() %>" property="registerDate" name="info"/>
<jsp:setProperty value="admin@ss.com" property="email" name="info"/>
<!-- setProperty value 속성값 : 값, 표현식, EL -->


<h3>멤버 정보 출력</h3>
아이디 : <jsp:getProperty property="id" name="info"/><br>
이름 : <jsp:getProperty property="name" name="info"/><br>
비밀번호 : <jsp:getProperty property="passwd" name="info"/><br>
등록일 : <jsp:getProperty property="registerDate" name="info"/><br>
이메일 : <jsp:getProperty property="email" name="info"/><br>
</body>

똑같은 결과로 출력된다.

그런데 왜 어렵게  jsp:useBean, jsp:setProperty, jsp:getProperty  액션태그를 사용하는걸까?

그 이유는 밑에 있다.

 

 

위와 같이 회원 정보(?)를 입력해 제출하는 폼이 있다. 

(해당 폼의 코드)

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="">
<style>
</style>
<script>
   $(document).ready(function (){     
   });
</script>
</head>
<body>

<!-- 꼭 기억해야할 사항 : 모든 입력태그의 name 속성값은 자바빈즈의 필드명과 동일하게 선언 -->
<form action="ex07_03.jsp">
<table border="1" style="width:400px">
   <tr>
      <td>아이디</td>
      <td><input type="text" name="id" value="admin" /></td>
   </tr>
   <tr>
      <td>이름</td>
      <td><input type="text" name="name" value="관리자" /></td>
   </tr>
   <tr>
      <td>비밀번호</td>
      <td><input type="password" name="passwd" value="1234" /></td>
   </tr>
   <tr>
      <td>이메일</td>
      <td><input type="text" name="email" value="admin@naver.com " /></td>
   </tr> 
   <tr>
      <td colspan="2">
         <input type="submit" />
         <input type="reset" />
      </td>
   </tr>
</table>
</form>
</body>
</html>

 

자바빈즈 액션태그를 사용하지 않는다면,

해당 폼이 제출되는 페이지에서는 매개변수를 통해 하나하나 값을 넘겨받아야 할 것이다.

<%@page import="java.util.Date"%>
<%@page import="days05.MemberInfo"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="">
<style>
</style>
<script>
   $(document).ready(function (){     
   });
</script>
</head>
<body>

<%
	String id = request.getParameter("id");	
	String name = request.getParameter("name");	
	String passwd = request.getParameter("passwd");		
	String email = request.getParameter("email");	

	MemberInfo info = new MemberInfo();
	info.setId(id);
	info.setName(name);
	info.setPasswd(passwd);
	info.setRegisterDate(new Date()); //등록일은 받아오지 않고 현재로
	info.setEmail(email);
%>

<h3>멤버 정보 출력</h3>
아이디 : <%=info.getId() %><br>
이름 : <%=info.getName() %><br>
비밀번호 : <%=info.getPasswd() %><br>
등록일 : <%=info.getRegisterDate() %><br>
이메일 : <%=info.getEmail() %><br>
</body>
</html>

그러나 자바빈즈 액션태그를 사용하면 훨씬 간편해진다.

<jsp:setProperty property="*" name="info"/> 를 사용해 한 번에 속성 설정이 가능하다.

<%@page import="java.util.Date"%>
<%@page import="days05.MemberInfo"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="">
<style>
</style>
<script>
   $(document).ready(function (){     
   });
</script>
</head>
<body>

<jsp:useBean id="info" class="days05.MemberInfo" scope="page"></jsp:useBean>
<jsp:setProperty property="*" name="info"/>
<jsp:setProperty value="<%=new Date() %>" property="registerDate" name="info"/>
<!-- date는 입력폼에 없어서 null 나오니까 따로 주기 -->
<h3>멤버 정보 출력</h3>
아이디 : <jsp:getProperty property="id" name="info"/><br>
이름 : <jsp:getProperty property="name" name="info"/><br>
비밀번호 : <jsp:getProperty property="passwd" name="info"/><br>
등록일 : <jsp:getProperty property="registerDate" name="info"/><br>
이메일 : <jsp:getProperty property="email" name="info"/><br>
</body>
</html>
반응형
Comments