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)가 추가되었는데 더 간결한 코드를 이용해서 프로퍼티 값을 읽어올 수 있다.
- 프레임워크와 같은 도입과 표현언어의 적용 등으로 사용 빈도가 저점 낮아지고 있다.
'Java > Java EE' 카테고리의 다른 글
JSP JSTL(JSP Standard Tag Library) 1.2 라이브러리 추가 (0) | 2013.09.23 |
---|---|
JSP Expression Language(표현 언어 또는 익스프레션 언어) (2) | 2013.09.23 |
JSP 기본(내장) 객체 - 세션(session) (0) | 2013.09.22 |
JSP 쿠키(Cookie) (5) | 2013.09.22 |
JSP 에러 처리(익셉션 처리) (0) | 2013.09.21 |