본문 바로가기
Spring/JSP

[JSP] 자바빈즈 (Java Beans)

by JJH0100 2022. 11. 22.
728x90
반응형

Java Beans = VO = DTO는 비슷한 기능을 한다.

데이터베이스와 연결하여 데이터를 관리하는 용도로 사용된다.

복잡하게 구성된 JSP 웹페이지에서 Java 소스 코드만 따로 뽑아 별도 작성함으로 JSP 웹페이지가 복잡해지는 것을 방지할 수 있다.

 

useBean 액션 태그 형식

<jsp:useBean id="객체명" scope="page|request|session|application" 
class="클래스명" type="타입명"></jsp:useBean>

 

객체명

id 속성을 사용하여 지정한 객체명의 사용 용도
꺼낸 객체의 참조 변수명으로 사용
getAttribute( )로 값을 꺼낼 때 사용하는 이름
객체를 생성할 경우 보관소에 저장하는 key 값의 이름으로 사용

 

scope 속성

보관소를 지정

  • page = JspContext(기본값)
  • request = ServletRequest
  • session = HttpSession
  • application = ServletContext

 

class 속성

Java 객체를 생성하기 위해 사용할 클래스 이름을 지정할 때 선언
new 연산자를 사용하므로 인터페이스는 올 수 없고 반드시 패키지 이름을 포함해야 함
scope 속성에서 지정한 보관소에서 객체를 찾지 못하였을 경우 class의 값을 사용하여 인스턴스를 생성
생성된 객체는 scope 보관소에 자동으로 저장되며 class 속성을 선언하지 않을 경우 객체를 생성할 수 없게 됨

 

class 패키지 명명법

도메인이름.폴더이름.클래스이름
ex) com.test.MemberBean

 

type 속성

type 속성은 참조 변수에서 사용할 타입(클래스 또는 인터페이스)을 지정할 때 선언
이 속성을 사용할 때는 반드시 패키지 이름을 포함해야 하며 type 속성을 지정하지 않으면 class 속성의 값이 사용됨

 

 


 

Ex)

경로

 

addMemberForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>회원 정보 입력 폼</h2>
<form action="addMember.jsp" method="post">
	<table>
		<tr>
			<td>이름</td>
			<td><input type="text" name="name" size="20"></td>
		</tr>
		<tr>
			<td>아이디</td>
			<td><input type="text" name="userid" size="20"></td>
		</tr>
		<tr>
			<td>별명</td>
			<td><input type="text" name="nickname" size="20"></td>
		</tr>
		<tr>
			<td>비밀번호</td>
			<td><input type="password" name="pwd" size="20"></td>
		</tr>
		<tr>
			<td>이메일</td>
			<td><input type="text" name="email" size="20"></td>
		</tr>
		<tr>
			<td>전화번호</td>
			<td><input type="text" name="phone" size="11"></td>
		</tr>
		<tr>
			<td><input type="submit" value="전송"></td>
			<td><input type="reset" value="취소"></td>
		</tr>
	</table>	
</form>
</body>
</html>

 

MemberBean.class

package com.test;

public class MemberBean {
	private String name;
	private String userid;
	private String nickname;
	private String pwd;
	private String email;
	private String phone;
	
	//값을 저장하기 위한 2가지 방법
	//2. 겟터세터
	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;
	}
	
	
}

DTO처럼 회원정보를 Class로 만들어 일일히 request.getParameter를 사용하지 않아도 class객체를 통해 값에 접근할 수 있다.

 

addMember.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
	request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="member" class="com.test.MemberBean"></jsp:useBean>
<jsp:setProperty property="*" name="member"/>

<h2>입력 완료된 회원 정보</h2>
<table>
	<tr>
		<td>이름</td>
		<td><jsp:getProperty property="name" name="member"/></td>
	</tr>
	<tr>
		<td>아이디</td>
		<td><jsp:getProperty property="userid" name="member"/></td>
	</tr>
	<tr>
		<td>별명</td>
		<td><jsp:getProperty property="nickname" name="member"/></td>
	</tr>
	<tr>
		<td>비밀번호</td>
		<td><jsp:getProperty property="pwd" name="member"/></td>
	</tr>
	<tr>
		<td>이메일</td>
		<td><jsp:getProperty property="email" name="member"/></td>
	</tr>
	<tr>
		<td>전화번호</td>
		<td><jsp:getProperty property="phone" name="member"/></td>
	</tr>
</table>
</body>
</html>

728x90
반응형

'Spring > JSP' 카테고리의 다른 글

[JSP] JDBC 데이터노출  (0) 2022.11.22
[JSP] mysql-connector-j-8.0.31 설치  (0) 2022.11.22
[JSP] 세션(Session)을 사용한 로그인과 로그아웃  (0) 2022.11.21
[JSP] 세션(Session)  (0) 2022.11.21
[JSP] 쿠키(Cookie)  (0) 2022.11.21

댓글