자바빈
회원가입 페이지에서 입력된 정보의 서버 전송 방법
1. 개별적으로 전송
2. 묶어서 전송
자바빈 : 정보의 덩어리 즉 데이터 저장소
프로그램에서 사용되는 정보를 객체를 구성하는 멤버로 기술해 두고 한꺼번에 데이터에 접근해서 사용
데이터를 저장하기 위한 필드와 데이터를 컨트롤하는 getter/setter 메소드를 하나의 쌍으로 가지고 있는 클래스
[OOP : 속성과 기능 / 자바 : 필드와 메소드]
[getter/setter : 자바 빈의 필드에 데이터를 저장하고 조회하는 작업]
<%
member.setName(request.getParameter("name"));
member.setUserid(request.getParameter("setUserid"));
member.setNickname(request.getParameter("setNickname"));
member.setPwd(request.getParameter("setPwd"));
member.setEmail(request.getParameter("setEmail"));
member.setPhone(request.getParameter("setPhone"));
%>
<jsp:setProperty property="*" name="member"/>
-> 액션태그를 사용해 데이터를 담기 위한 getter/setter/를 명시적 호출 하지 않고 자동 호출 가능
자바빈은 액션태그와 함께 사용해
코드의 양을 줄이고 쉽게 정보를 담아 옮길 수 있다.
자바빈 클래스 만들기
자바 빈은 필드와 getter/setter 메소드를 하나의 쌍으로 갖는 클래스.
자바 빈 클래스 정의하기
public class Memberbean{ //자바 빈 클래스 정의
}
패키지 선언 방법
패키지는 유사한 기능을 모은 클래스를 담은 라이브러리
동일한 이름의 클래스가 필요한 경우엔 패키지 이름을 다르게 동일한 이름의 클래스를 서로 다른 패키지에 사용
package 패키지이름;
패키지의 규칙
도메인이름.폴더이름.클래스이름 -> com.saeyan.javabeans.MemberBean -> 패키지 이름.클래스 이름
package com.saeyan.javabeans; //패키지명
public class MemberBean{ //자바 빈 클래스 정의
}
필드 선언하기
회원 정보 입력 폼
package com.saeyan.javabeans; //패키지명
public class MemberBean{ //자바 빈 클래스 정의
private String name;
private String userid;
private String nickname;
private String pwd;
private String email;
private String phone;
}
-> 제한자 설정해 외부에서 직접 접근을 막고 메소드를 이용하도록 지정
자바 빈 프로퍼티
property : public으로 지정된 메소드로 간접적으로 필드에 접근하는 방식
public class MemberBean{ //자바 빈 클래스 정의
private String name;
//getter(필드 값을 알려줌)
public String getName(){
return name; //회원의 이름을 알려줌
}
//setter(필드 값을 변경함)
public void setName(String name){
this.name=name; //회원의 이름을 전달받은 값으로 변경함
}
...
}
프로퍼티의 구성
private 필드와 public 메소드 (getXxx, setXxx)로 구성
필드 값을 읽어오기 위해선 get 다음에 첫 글자만 대문자로 지정해 메소드를 정의해야 한다. [name -> getName]
public String getName(){
return name;
}
getName은 내부에 저장된 값을 외부에 전달하는 용도로 파라미터는 없고 필드와 동일한 리턴형을 가짐
setName: 외부에서 필드에 값을 저장하기 위한 메소드. private 필드를 다루기 위해 public으로 선언
public void setName(String name){
this.name=name;
}
매개변수가 필드와 이름이 동일한 경우에는 필드 앞에 this를 붙여서 매개 변수와 구분한다.
this : 객체 자신을 참조할 수 있는 레퍼런스
MemberBean memberBean = new MemberBean(); // 객체 생성
memberBean.setName("전수빈"); //레퍼런스 변수로 메소드 참조
this 레퍼런스 변수의 특징
- 메소드 내부에서 선언 없이도 지역 변수처럼 사용
- 자기 자신만을 가리키는 레퍼런스
- 메소드 내부의 모든 필드와 메소드 앞에 암시적으로 사용
- 필요에 따라 명시적 사용 가능
·This의 암시적 사용 | ·This의 명시적 사용 |
String getName(){ return name; } |
String getName(){ return this.name; } |
·매개 변수의 이름이 필드와 다름 | ·매개 변수의 이름이 필드와 같음 |
void setName(String argName){ //필드에 매개 변수의 값을 저장 name=argName; } |
void setName(String name){ //매개 변수에 매개 변수의 값을 저장 this.name=name; } |
package javabeanspack;
public class JavaBeansClass {
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;
}
}
자바 빈 관련 액션태그
<jsp : useBean> : 생성한다.
<jsp : getProperty> : 정보를 얻어온다.
<jsp : setProperty> : 정보를 저장한다.
<jsp:usebean> 액션태그
JSP와 자바 빈을 연결하기 위한 자바 빈 백체를 생성
<%@ page import="com.saeyan.javabeans.MemberBean" %>
<%
MemberBean member=new MemberBean();
%>
-> 액션 태그에서 빈 객체를 생설할 경우엔 패키지를 포함한 형태의 클래스 이름을 적어야한다.
import 속성을 갖는page 지시자 추가
<%
com.saeyan.javabeans.MemberBean member=new com.saeyan.javabeans.MemberBean();
%>
->생성한 객체는 레버런스변수로 접근 가능하다.
레퍼런스 변수로 이름과 아이디를 얻어오는 getter 호출
<%=member.getName()%>
<%=member.getUserid()%>
레퍼런스변수로 이름과 아이디에 새로운 값 설정하는 setter 호출
<%
member.setName("전수빈");
member.setUserid("pinksubin");
%>
<jsp:useBean> 기본형식
<jsp:useBean class="클래스 풀 네임"
id="빈이름"
[scope="범위"] />
객체를 생성하기 위해서는 class 속성에 패키지 포함한 풀네임을 기술해야한다.
id속성은 자바 빈 객체의 이름을 기술하고 scope 속성에는 유효범위 지정[page, request, session, application]
<jsp:useBean class="com.sawyan.javabeans.MemberBean"
id="member"
scope="page" />
위 태그 실행시 다음 코드 자동생성
<%
com.saeyan.javabeans.MemberBean member=new com.saeyan.javabeans.MemberBean();
pageContext.setAttribute("member", member);
%>
class 속성 값은 자바에서 객체를 생성할 때 기술한 클래시 이름과 매핑된다.
id 속성 값은 자바에서 객체를 생성할 때 기술한 레퍼런스 변수와 매핑된다.
scope 속성 값은 생략한다면 page가 기본적으로 설정된다.
<jsp:property> 액션태그
정보를 얻어오는 액션태그
<%= member.getName() %>
<jsp:getProperty name="member" property="name" />
JSP에서 HTML태그와 자바코드를 혼용하지 않고 HTML과 함께 액션태그를 사용
getter를 호출하는 property 액션태그 형식
<jsp : getProperty name="빈이름"
property="프로퍼티이름"
/>
name 속성에는 <jsp:useBean>태그에서 id와 반드시 일치해야한다.
[usebean 액션태그의 id값과 일치하는 "member'를 getProperty태그의 name 속성값으로 기술해 정보를 얻어온다.]
property 속성은 자바 빈을 구성하는 여러개 필드값을 알려주기 위해 알맞은 getter를 호출한다.
->name 속성 값은 메소드 앞에 붙은 레퍼런스 변수인 member를 의미
->property 속성 값으로 "name"을 설정하면 getName()을 호출
<jsp:setproperty> 액션태그
새로운 값을 설정하는 액션태그
setter인 setName()을 호출해 name에 간접접근
<% member.setName("전수빈"); %>
setproperty의 형식
<jsp:setProperty name="자바빈이름" property="프로퍼티이름" value="값"
<jsp:setProperty name="자바빈이름" property="*""
-> *로 설정하면 모든 멤버변수를 가져온다.
<jsp:setProperty name="member"
property="name"
value="전수빈"
/>
setproperty의 속성
- name
- <jsp:useBean>태그에서 id로 설정한 값과 일치
- property
- 속성값 "name"의 첫글자를 대문자로 해 setName()이 setter가 된다
- value
- 변경할 값을 전달
- 새롭게 변경할 값을 value 속성에 기술
자바빈의 구현
- 데이터베이스 연동을 포함해서 데이터와 여러 기능을 함께 구현하는 방법 (DO, DAO클래스의 통합 형태)
- 데이터 매핑과 데이터베이스 처리를 분리해서 구현하는 방법(DO, DAO클래스의 분리 형태)
- 별도의 O-R 매핑 프레임워크를 사용하는 방법
'Application > JSP Server' 카테고리의 다른 글
[JSP] 6-2. 자바빈으로 프로퍼티 값 얻기와 변경하기 (0) | 2021.04.08 |
---|---|
[JSP] 6-1. 자바빈 객체 생성하기 (0) | 2021.04.08 |
[JSP] 3-2. 입력 폼에서 한글 읽어오기 (0) | 2021.04.08 |
[JSP] 액션 태그 (0) | 2021.04.01 |
[JSP] 3-1. 텍스트 박스에 입력된 값 얻어오기 (0) | 2021.03.31 |