본문 바로가기

JSP

useBean 액션 태그와 setProperty, getProperty 액션 태그

○ JavaBeans

자바 빈즈는 자바 프로그램에서 특정한 작업인 비즈니스 로직을 독립적으로 수행하는 하나의 프로그램 단위이다


JSP 자바 빈즈는 JSP의 표준 액션 태그로 접근할 수 있는 자바 클래스로서 값을 가지는 속성(멤버변수)과
값을 설정하는 메소드(setter), 값을 추출하는 메소드(getter)로 이루어져 있다


자바 빈즈는 하나의 JSP 페이지에 종속적으로 사용되는 것이 아니라, 여러 JSP 페이지에서 사용될 수 있다
자바 빈즈는 다른 자바 클래스와 마찬가지로 자바 객체이다


자바 뿐만 아니라 일반 프로그래밍 분야 중 큰 프로그램에서 독립적으로 수행되는 하나의 작은 프로그램을 Component라고 부른다
그러므로 자바 빈즈는 자바 프로그램에서 컴포넌트이며, 넓은 의미로 자바의 모든 클래스를 의미할 수도 있다


이러한 자바 빈즈를 활용한다면 한 번 작성된 자바 빈즈는 여러 응용 프로그램에서
재사용하여 프로그램 개발 시간을 단축할 수 있는 장점이 있다




■ 자바 빈즈의 장점
  • 폼 데이터 처리가 용이 : 자바 빈즈를 사용하면 액션 태그를 한 번만 사용해서 모든 값을 추출하여 객체에 저장할 수 있다
  • 자바 빈즈 활용 범위 확장 용이 : 웹에서 사용하는 HTTP 프로토콜의 무상태 특성 때문에 상태 정보 유지 기술이 필요하다
    여러 페이지에서 사용해야 하는 데이터는 자바 빈즈를 이용하여 쉽게 유지하여 여러 범위에서 사용할 수 있다
  • 컴포넌트 기반 구현 가능 : JSP 페이지 내에서 필요한 비즈니스 로직을 컴포넌트로 만들어 활용하면 JSP 페이지의 크기는 작아지고,
    각 JSP 페이지에서 필요로 하는 기능은 컴포넌트 재활용을 통해 구현되므로 웹 애플리케이션을 효과적으로 구현할 수 있다

 

JSP 페이지 내에서 자바 빈의 활용은 표준 액션 태그로 수행한다

<jsp:useBean>, <jsp:setProperty>, <jsp:getProperty> 가 JSP 자바 빈즈를 활용할 때 사용하는 표준 액션 태그이다





useBean Action Tag

Bean 클래스를 찾거나 인스턴스화하는 데 사용한다


Bean 클래스의 Bean 오브젝트가 이미 작성된 경우 범위에 따라 Bean을 작성하지 않는다
Bean의 오브젝트가 작성되지 않으면 Bean을 인스턴스화한다



■ 형식

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




■ 속성
  • id : JSP 페이지에서 자바 빈 객체에 접근할 때 사용하는 이름이다. 주어진 페이지에서 자바 빈즈 객체를 식별할 수 있는 유일한 명칭
    (자바로 따지면 객체 변수명)
  • class : 사용하려는 자바 빈즈 객체의 실제 클래스명을 패키지명과 함께 지정한다
  • scope : useBean을 이용해서 만든 자바 빈 객체의 범위를 지정하는 속성이다
    (page, request, session, application 중 하나를 값으로 갖는다. 기본값은 page)

 

scope 속성의 값
  • page : 하나의 JSP 페이지에서만 사용
  • request : jsp:forward에 의해 request객체를 받은 page 모두에 적용
    (요청이 처리되는 동안 forward, include된 페이지 간에 사용
  • session : 링크에 의해 이동하는 page 모두에 적용(클릭을 통해서 이동하는 모든 page)
    (클라이언트 단위로 사용)
  • application : 응용 프로그램이 종료되는 시점까지 모든 page에 적용됨
    (웹 어플리케이션 단위로 사용)

받는 페이지에서는 useBean을 사용하여 주는 page와 동일한 scope 속성을 사용해야 자바 코드를 사용할 수 있다
하지만 Expressoin Language로 단순히 출력하기 위해서라면 useBean을 사용하지 않아도 객체에 접근할 수 있다




■ useBean 액션 태그의 사용

<jsp:useBean id="test" class="ClassName"/>
      (=)
<% ClassName test = new ClassName();%>
(useBean 액션 태그를 자바 코드로 나타낸 것이다)



ex)

<jsp:useBean id="score" class="javabean.GradeBean" scope="page" />
      (=)
<% javabean.GradeBean score = new javabean.GradeBean(); %>
(useBean 액션 태그를 자바 코드로 나타낸 것이다)



<jsp:useBean id="test" class="ClassName" scope="application" />
<jsp:setProperty name="test" property="name" value="Tony" />

//useBean의 id값과 setProperty의 name값이 같아야 연결된다

 


<jsp:setProperty name="test" property="name" param="userName" />
//name이 'userName'인 태그의 값을 읽어와 Bean 객체인 test의 name 값을 지정한다
//자바 빈 클래스의 setName() 메소드와 자동 연동된다
//즉 프로퍼티 name은 자바 빈 클래스의 name 프로퍼티를 의미한다

=>   <% test.setName(request.getParameter("userName")); %>
(useBean 액션 태그를 자바 코드로 나타낸 것이다)

 


<jsp:useBean id="test" class="ClassName" scope="application" />
<jsp:getProperty name="test" property="name" />

=>   <%= test.getName() %>
(useBean 액션 태그를 자바 코드로 나타낸 것이다)






setProperty Action Tag

생성된 자바 빈 객체에 프로퍼티 값을 지정하는 기능을 한다



■ 속성
  • name : 프로퍼티 값을 변경할 자바 빈 객체의 이름을 지정한다. jsp:useBean 액션 태그의 id 속성에서 지정한 값을 사용(필수)
  • property : 값을 지정할 프로퍼티의 이름을 지정한다
  • value : 프로퍼티에 저장할 값을 기술한다(생략 가능. 표현식 사용 가능)
  • param : param 속성에 할당된 값과 같은 name을 가진 태그의 값으로 자바 빈의 속성값을 설정한다


Property 속성값을 ' * '로 주면 모든 프로퍼티 값이 세팅된다 그러나 <form>으로부터 넘어오는 파라미터의 이름과 개수가 프로퍼티의 이름과 개수와 일치해야 한다

<jsp:useBean id="testBean" class="ClassName" scope="page">
 <jsp:setProperty name="testBean" property="*" />
</jsp:useBean>




폼으로부터 넘어온 파라미터 명과 자바빈의 프로퍼티가 일치하지 않는 경우 param 속성을 기술해야 한다

<jsp:useBean id="testBean" class="ClassName" scope="page">
 <jsp:setProperty name="testBean" property="name" param="userName" />
</jsp:useBean>






getProperty Action Tag

자바 빈 객체에서 저장된 프로퍼티 값을 사용하기 위해 사용된다



■ 속성
  • name : 프로퍼티 값을 불러올 자바 빈 객체의 이름을 지정한다. jsp:useBean 액션 태그의 id 속성에서 지정한 값을 사용(필수)
  • property : 값을 불러올 프로퍼티 명을 기술한다(필수)

<jsp:useBean id="testBean" class="com.bean.testBean" scope="page" />
<jsp:getProperty name="testBean" property="name" />


useBean으로 생성한 testBean의 name 속성을 가져온다




실행 코드(Bean 파일)

 

실행 코드(html 파일)

 

실행 코드(jsp 파일)



실행 결과

'JSP' 카테고리의 다른 글

config와 application 내장 객체  (0) 2020.07.03
out과 exception 내장 객체  (0) 2020.07.03
forward 액션 태그와 include 액션 태그  (0) 2020.06.30
JSP의 Action Tag  (0) 2020.06.29
JSP의 request와 response  (0) 2020.06.28