본문 바로가기

#001 프로그래밍/JSP

JSP & Servlet -- Java Bean 기본 / 액션 태그 실습

Java Bean

데이터 저장소, 필요한 정보를 객체를 구성하는 멤버로 기술해 두고 한꺼번에 데이터에 접근해서 사용

객체 외부에서 데이터를 직접 다루면 데이터 손상 등의 문제가 발생할 수 있어 데이터 은닉(Data Hiding) 개념을 사용

데이터는 private 접근 제한자를 사용하고, public 접근 제한자로 공개된 메소드를 통해서만 데이터에 접근하도록 함

 

실습

 

MemberBean.java

package com.syslab.javabeans;

public class MemberBean {
	private String name;
	private String userid;
	private String nickname;
	private String pwd;
	private String email;
	private String phone;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getUserid() {
		return userid;
	}
	public void setUserid(String userid) {
		this.userid = userid;
	}
	public String getNickname() {
		return nickname;
	}
	public void setNickname(String nickname) {
		this.nickname = nickname;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
}

 

member 객체를 생성하는 코드
<%@ page import="com.syslab.javabeans.MemberBean" %>
<% MemberBean member = new MemberBean(); %>

위와 동일한 의미로 import 지시자를 사용하지 않고 사용하는 경우
<% com.syslab.javabeans.MemberBean member = new com.syslab.javabeans.MemberBean(); %>

이제 member 객체를 참조(reference) 변수로 접근할 수 있다.
<%= member.getName() %>
<%= member.getUserid() %>

Java Bean Action Tag 활용
<jsp:useBean> - 자바빈을 생성
<jsp:getProperty> - 자바빈에서 정보를 얻어오기
<jsp:setProperty> - 자바빈에서 정보를 저장하기

<jsp:useBean class="com.syslab.javabeans.MemberBean" id="memberParam" scope="page" />
scope는 page, request, session, application 중 하나의 유효범위를 목적에 맞게 사용해야 한다.
scope 속성을 생략하는 경우 page가 기본적으로 설정된다.

위와 동일한 의미는 아래와 같다.
<% 
com.syslab.javabeans.MemberBean member = new com.syslab.javabeans.MemberBean();
pageContext.setAttribute("memberParam", member);
%>

<jsp:useBean> 에서 id="memberParam" 부분이 객체에 접근하기 위한 참조변수와 동일한 역할을 하게 된다.

 

useBeanLab.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JavaBean Create</title>
</head>
<body>

<jsp:useBean id="memberParam" class="com.syslab.javabeans.MemberBean" />

JavaBean 객체 생성 후, 현재 저장된 정보 출력 <br><br>
이름 : <%= memberParam.getName() %>,
닉네임 : <%= memberParam.getNickname() %>
<br><hr>
JavaBean 객체 변경 후, 현재 저장된 정보 출력 <br><br>
<% 
memberParam.setName("홍길동");
memberParam.setNickname("syslab");
%>
이름 : <%= memberParam.getName() %>,
닉네임 : <%= memberParam.getNickname() %>

</body>
</html>

 



자바빈에서 정보를 얻어오는 <jsp:getProperty> 액션 태그 사용하기
<%= memberParam.getName() %>
위와 동일한 의미는 아래와 같다.
<jsp:getProperty name="memberParam" property="name">
name 속성에는 앞서 <jsp:useBean> 태그에서 명시했던 id와 반드시 일치해야 한다.
property 속성에 메소드 이름에서 get다음에 나오는 첫글자를 소문자로 바꾸어 property 속성값으로 적어야 한다. (매핑구조)

자바빈에서 정보를 설정하는 <jsp:setProperty> 액션 태그 사용하기
<% memberParam.setName("홍길동"); %>
위와 동일한 의미는 아래와 같다.
<jsp:setProperty name="memberParam" property="name" value="홍길동" />
name 속성에는 앞서 <jsp:useBean> 태그에서 명시했던 id와 반드시 일치해야 한다.
property 속성에 메소드 이름에서 set다음에 나오는 첫글자를 소문자로 바꾸어 property 속성값으로 적어야 한다. (매핑구조)

 

propertyLab.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JavaBean Create</title>
</head>
<body>

<jsp:useBean id="memberParam" class="com.syslab.javabeans.MemberBean" />

JavaBean 객체 생성 후, 현재 저장된 정보 출력 <br><br>
이름 : <jsp:getProperty name="memberParam" property="name" />,
닉네임 : <jsp:getProperty name="memberParam" property="nickname" />
<br><hr>

JavaBean 객체 변경 후, 현재 저장된 정보 출력 <br><br>
<jsp:setProperty name="memberParam" property="name" value="홍길동" />
<jsp:setProperty name="memberParam" property="nickname" value="syslab" />
이름 : <jsp:getProperty name="memberParam" property="name" />,
닉네임 : <jsp:getProperty name="memberParam" property="nickname" />

</body>
</html>