JSP의 표준 액션 태그로 접근할 수 있는 자바 클래스로서 값을 가지는 속성(멤버변수)과 값을 설정하는 메소드(setter), 값을 추출하는 메소드(getter)로 이루어져 있다.
하나의 JSP 페이지에 종속적으로 사용되는 것이 아니라, 여러 JSP 페이지에서 사용될 수 있다.
장점
폼 데이터 처리 용이
클라이언트로 부터 입력을 받아 처리하기 위해서, 만약 50개의 질의 문자열이 있으면 50번의 request.getParameter( )를 통해 추출해야하므로 상당히 수고스럽다. 그렇지만 자바빈즈를 사용하면 액션 태그를 한 번만 사용해서 모든 질의 문자열의 값을 추출하여 객체에 저장할 수 있다.
자바빈즈 활용 범위 확장용이
웹에서 사용하는 HTTP 프로토콜의 무상태 특성 때문에 상태정보 유지 기술이 필요하다.
여러 페이지에서 사용해야 하는 데이터는 자바빈즈를 이용하여 쉽게 유지하여 여러 범위에서 사용할 수 있다.
컴포넌트 기반 구현 가능
JSP 페이지 내에서 필요한 비즈니스 로직을 컴포넌트로 만들어 활용하면 JSP 페이지의 크기는 작아지고, 각 JSP 페이지에서 필요로 하는 기능은 컴포넌트 재활용을 통해 구현되므로 웹 애플리케이션을 효과적으로 구현할 수 있다.
개발 규약
패키지화
JSP 페이지에서 자바빈즈를 사용할 때 기본 패키지에 있으면 인식이 안 된다. 반드시 패키지화가 되어 있어야 한다.
기본생성자 존재
자바빈즈의 객체 생성은 <jsp:useBean> 액션 태그로 생성하는데 객체가 생성될 때 기본 생성자를 이용하기 때문에 반드시 기본 생성자가 있어야 한다.
멤버변수의 접근자는 private로 선언
자바빈즈 객체의 속성 값은 외부에서 직접 접근할 수 없도록 private으로 선언한다. 자바빈즈 객체의 속성값은 메소드로만 접근하게 해야 한다.
getter 메소드
private로 선언한 멤버 변수의 값을 반환하는 메소드를 작성
메소드는 값을 반환하는 기능으로 구성되며, 메소드의 반환 타입은 반환하는 멤버변수의 타입으로 지정
setter 메소드
private로 선언한 멤버 변수의 값을 설정하는는 메소드를 작성
멤버변수 값을 수정하는 기능으로 구성되어야 하며, 값을 수정만 하므로 반환 값과 반환 타입은 지정할 필요가 없고 수정할 값을 처리하는 매개변수를 선언
getter와 setter 접근자는 public으로 선언
private으로 선언한 멤버변수의 값을 추출하는 getter 메소드와 setter 메소드의 접근자는 누구나 접근이 가능 하도록 public으로 선언
자바빈즈의 getter와 setter 메소드를 public으로 선언해야 JSP 페이지에서 이 메소드를 호출할 수 있다.
자바빈즈 사용하기
객체 생성
//자바 코드
HelloBean hello = new HelloBean();
//표준 액션 태그
<jsp:useBean class="job.study.bean.HelloBean" id="hello">
id 속성
주어진 페이지에서 자바빈즈 객체를 식별할 수 있는 유일한 명칭을 지정할 때 사용
class 속성
사용하려는 자바빈즈 객체의 실제 클래스명을 패키지명과 함께 지정
type 속성
자바빈즈 클래스의 객체에 접근할 때 어떠한 타입으로 접근할 것인지를 지정
속성이 생략되면 기본으로 주어진 자바빈즈 클래스의 타입으로 접근
scope 속성
page, request, session 그리고 application 중 하나를 지정
속성이 생략되면 기본값으로 page가 적용
- page : 하나의 JSP 페이지에서만 사용
- request : 요청이 처리되는 동안 forward, include 된 페이지 간에 사용
- session : 클라이언트 단위로 사용
- application : 웹 애플리케이션 단위로 사용
getter 메소드 호출
//자바 코드
hello.getName();
//표준 액션 태그
<jsp:getProperty property="name" name="hello">
<jsp:useBean> 액션 태그로 자바빈즈 객체를 생성한 후 속성 값을 추출할 때, 즉, getter 메소드를 호출하여 필요한 기능을 수행하고 그 결과를 주어진 위치에 출력할때 사용
name 속성
사용하려는 자바빈의 <jsp:useBean> 태그에서 정의해 놓은 id 속성값과 동일하게 지정
property 속성
property 속성에는 값을 추출하려는 자바빈즈 객체의 멤버변수 이름을 지정
setter 메소드 호출
//자바 코드
hello.setName("sunkoo");
//표준 액션 태그
<jsp:setProperty property="name" name="hello" value="sunkoo">
<jsp:useBean> 액션 태그로 자바빈즈 객체를 생성한 후 속성 값을 수정할 때, 즉, getter 메소드를 호출하는 표준 액션 태그
name 속성
사용하려는 자바빈의 <jsp:useBean> 태그에서 정의해 놓은 id 속성값과 동일하게 지정
property 속성
property 속성에는 값을 수정하려는 자바빈즈 객체의 멤버변수 이름을 지정
value 속성
자바빈즈 객체의 속성을 변경하려는 값을 지정
param 속성
질의 문자열에서 param 속성에 할당된 값과 같은 name의 값으로 자바빈의 속성값을 설정
//자바 코드
hello.setName(request.getParameter("irum"));
//표준 액션 태그
<jsp:setProperty property="name" name="hello" param="irum">
설정값 생략
값을 지정하지 않으면 질의문자열에서 멤버변수와 같은 name을 찾아서 자동으로 설정
//표준 액션 태그
<jsp:setProperty property="name" name="hello">
//자바 코드
hello.setName(request.getParameter("name"));
property = "*"
property 속성에 *(와일드카드)를 표기하는 방법은 자바빈 객체의 속성값들을 초기화하는 매우 강력한 방법
'JSP' 카테고리의 다른 글
JDBC 프로그래밍 (0) | 2023.03.14 |
---|---|
JSP - EL ( Expression Language ) (0) | 2023.03.14 |
JSP - 표준 액션 태그 (0) | 2023.03.14 |
JSP - 내장객체 (0) | 2023.03.14 |
예외 처리 (0) | 2023.03.14 |