1. 자바빈(JavaBean)

- 데이터를 표현하는 것을 목적으로하는 클래스이다.

- 데이터를 저장하는 필드, 데이터를 읽어올 때 사용하는 메서드, 값을 저장할 때 사용하는 메서드로 구성된다.


2. 자바빈 프로퍼티

- 프로퍼티는 자바빈에 저장되어 있는 값을 나타낸다.

- 메서드 이름을 사용해서 프로퍼티의 이름을 결정한다.

- 값을 설정하는 메서드는 프로퍼티 이름의 첫 글자를 대문자로 변환한 문자열 앞에 set을 붙인다.

- 값을 읽어오는 메서드는 프로퍼티 이름의 첫 글자를 대문자로 변환한 문자열 앞에 get을 붙인다.

- 프로퍼티의 타입이 boolean일 경우 get 대신에 is를 앞에 붙일 수도 있다.

package com.tistory.gangzzang;

public class Board {
	private String id;
	private String password;
	private String title;
	private String content;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

} // Board


3. <jsp:useBean> 액션 태그

- <jsp:useBean id="빈이름" class="자바빈클래스이름" scope="범위"/>

- id : JSP 페이지에서 자바빈 객체에 접글할 때 사용할 이름을 명시한다.

- class : 패키지이름을 포함한 자바빈 클래스의 완전한 이름을 입력한다.

- scope : 자바빈 객체가 저장될 영역을 지정한다. (page, request, session, application 중 하나, 기본값은 page)

- JSP 페이지에서 사용할 자바빈 객체를 생성하고 지정한 영역에 저장을 한다.

- 지정한 영역에 이미 id 속성에서 지정한이름의 속성 값이 존재할 경우 객체를 새로 생성하지 않고 기존에 존재하는 객체를 그대로 사용한다.

- 각 scope의 영역별로 공유할 데이터를 쉽게 저장할 수 있다.


<!-- board.jsp --> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <jsp:useBean id="b" scope="request" class="com.tistory.gangzzang.Board"/> <% b.setId("gz"); b.setPassword("1234"); b.setTitle("제목"); b.setContent("내용"); %> <jsp:forward page="boardUse.jsp"/>


<!-- boardUse.jsp --> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <jsp:useBean id="b" scope="request" class="com.tistory.gangzzang.Board"/> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>게시판</title> </head> <body> 아이디 : <%= b.getId() %><br> 비밀번호 : <%= b.getPassword() %><br> 제목 : <%= b.getTitle() %><br> 내용 : <%= b.getContent() %><br> </body> </html> <!-- 실행결과 아이디 : gz 비밀번호 : 1234 제목 : 제목 내용 : 내용 -->



4. <jsp:setProperty> 액션 태그

- <jsp:useBean> 액션 태그를 사용해서 객체를 생성하면 <jsp:setProperty>액션 태그를 사용하여 자바빈 프로퍼티를 변경할 수 있다.

- <jsp:setProperty name="자바빈" property="이름" value="값" (parm="파라미터 값")/>

- name : 프로퍼티의 값을 변경할 자바빈 객체의 이름, <jsp:useBean> 액션 태그의 id 속성에서 지정한 값을 사용한다.

- property : 값을 지정할 프로퍼티 이름

- value : 프로퍼티의 값, 표현식을 사용할 수 있다.

- param : 파라미터의 값을 프로퍼티의 값으로 지정할 때 사용한다.

- property 속성의 값을 '*'로 지정하면 각각의 프로퍼티의 값을 같은 이름을 갖는 파라미터의 값을 설정한다. (폼에 입력한 값을 자바빈 객체에 담을 때 유용하다)


5. <jsp:getProperty> 액션 태그

- <jsp:useBean> 액션 태그를 사용해서 객체를 생성하면 <jsp:getProperty>액션 태그를 사용하여 자바빈 프로퍼티를 읽어올 수 있다.

- <jsp:getProperty name="자바빈이름" property="프로퍼티이름" />

- name : <jsp:useBean> 의 id 속성에서 지정한 자바빈 객체의 이름

- property : 출력할 프로퍼티의 이름


<!-- boardForm.jsp -->

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>게시판 입력 폼</title>
</head>
<body>
	<form action="boardproc.jsp" method="post">
		<table border="1" cellpadding="0" cellspacing="0">
			<tr>
				<th>
					아이디
				</th>
				<td>
					<input type="text" name="id" maxlength="12">
				</td>
			</tr>
			<tr>
				<th>
					비밀번호
				</th>
				<td>
					<input type="password" name="pwd" maxlength="15">
				</td>
			</tr>
			<tr>
				<th>
					제목
				</th>
				<td>
					<input type="text" name="title" maxlength="20">
				</td>
			</tr>
			<tr>
				<th>
					내용
				</th>
				<td>
					<textarea rows="25" cols="50" name="content"></textarea>
				</td>
			</tr>
			<tr>
				<td colspan="2" align="center">
					<input type="submit" value="등록">
					<input type="reset" value="취소">
				</td>
			</tr>
		</table>
	</form>
</body>
</html>


<!-- boardProc.jsp --> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("UTF-8"); %> <jsp:useBean id="b" class="com.tistory.gangzzang.Board"/> <jsp:setProperty name="b" property="*" /> <jsp:setProperty name="b" property="password" value="<%= b.getId() %>"/><!-- 비밀번호 숨기기위해서 아이디로 바꿔준다. --> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>게시판</title> </head> <body> <table border="1" cellpadding="0" cellspacing="0"> <tr> <th> 아이디 </th> <td> <jsp:getProperty name="b" property="id"/> </td> </tr> <tr> <th> 비밀번호 </th> <td> <jsp:getProperty name="b" property="password"/> </td> </tr> <tr> <th> 제목 </th> <td> <jsp:getProperty name="b" property="title"/> </td> </tr> <tr> <th> 내용 </th> <td> <jsp:getProperty name="b" property="content"/> </td> </tr> </table> </body> </html>




7. 자바빈 프로퍼티 타입에 따른 값 매핑

 프로퍼티의 타입

 변환 방법 

 기본 값 

 bolean 또는 Boolean

 Boolean.valueOf(String)을 값으로 갖는다.

 false

 byte 또는 Byte

 Byte.valueOf(String)을 값으로 갖는다.

 (byte) 0

 short 또는 Short

 Short.valueOf(String)을 값으로 갖는다.

 (short) 0

 char 또는 Character

 입력한 값의 첫번째 글자를 값으로 갖는다.

 (char) 0

 int 또는 Integer

 Integer.valueOf(String)을 값으로 갖는다.

 0

 long 또는 Long

 Long.valueOf(String)을 값으로 갖는다.

 0L

 double 또는 Double

 Double.valueOf(String)을 값으로 갖는다.

 0.0

 float 또는 Float

 Float.valueOf(String)을 값으로 갖는다.

 0.0f



8. <jsp:useBean> 액션 태그의 사용 감소 이유

- MVC 구조에서는 로직을 자바 클래스에서 처리하고 결과를 JSP에서 보여주게 된다.

- 클래스에서는 <jsp:useBean> 액션 태그를 사용할 수 없기 때문에 사용할 일이 많지 않다.

- 또한 2.0 버전부터 표현 언어(Expression Language)가 추가되었는데 더 간결한 코드를 이용해서 프로퍼티 값을 읽어올 수 있다.

- 프레임워크와 같은 도입과 표현언어의 적용 등으로 사용 빈도가 저점 낮아지고 있다.

+ Recent posts