ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JSP/Servlet] 표준 액션(2/2) - <jsp:useBean>, <jsp:getProperty>, <jsp:setProperty>
    IT/Spring-JSP&Servlet 2020. 11. 6. 01:17

    출처 : unsplash

     

    ■ 들어가기

    - 뇌를 자극하는 JSP&Servlet (김윤명/한빛미디어). 을 공부하며 정리하는 블로그


    ■ 목차

    1. 자바빈의 호출에 사용되는 표준 액션

    2. 그 밖에 유용한 표준 액션들

     

    1. 자바빈의 호출에 사용되는 표준 액션

    - 자바빈 : 자바빈 규격서에 따라 만들어진 클래스이며,

      이 클래스의 내부 데이터는 get- 메서드와 set- 메서드를 통해서만 접근 가능

    - get/set 메서드를 통해 읽고 쓸 수 있는 값을 자바빈의 프로퍼티(property) 라고 한다

    - <jsp:useBean> : 새로운 자바빈 객체를 생성하거나 기존의 자바빈 객체를 가져오기 위해 사용하는 표준 액션

    - <jsp:setProperty> : 자바빈 프로퍼티의 값을 설정하는 표준 액션

    - <jsp:getProperty> : 자바빈 프로퍼티의 값을 가져다가 출력하는 표준 액션

     

    1-1. 자바빈 관련 표준 액션의 기초 사용 방법

    - 자바 클래스를 사용하기 위해서는 해당 클래스의 객체를 생성해야 하며, 자바빈 클래스의 경우에도 동일

    package mall ;
    public class PersonalInfo {
    	private String name ; // 이름
        public void setName(String name) {	// set메서드
        	this.name = name ;	
        }
        public String getName() {	// get메서드
        	return name ;
        }
    }

    1) 객체 생성

    - 위의 예제에서 자바빈 클래스의 객체는 다음의 코드로 생성 가능

    ProductInfo obj = new ProductInfo() ;

    - 위의 자바 코드는 다음의 <jsp:useBean> 표준 액션을 통해 사용 가능     >> id, class 2개의 애트리뷰터 사용 필요!

    <jsp:useBean id="obj" class="mall.PersonalInfo" />

    → <jsp:useBean> 표준 액션에는 2개의 애트리뷰트를 사용해야 함

    → id : 생성된 자바빈 객체를 대입할 변수 이름을 지정

    → class : 자바빈 클래스의 풀네임(패키지 이름을 포함한 전체 이름)을 지정

     

    2) 프로퍼티 설정

    - 자바 코드에서는 set메서드 사용

    obj.setName("KIM") ;

    → obj : 변수 이름

    → setName : 메서드 이름

    → "KIM" : 프로퍼티 값

    - <jsp:setProperty> 표준 액션 사용     >> name, property, value 3개의 애트리뷰트 사용 필요!

    <jsp:setProperty name="obj" property="name" value="KIM" />

    → name : 자바빈 객체가 들어 있는 변수 이름을 지정

    → property : 프로퍼티의 이름 지정

    → value : 프로퍼티의 값 지정

     

    3) 프로퍼티 사용

    - 자바 코드에서는 get메서드 사용

    String name = obj.getName() ;

    - <jsp:getProperty> 표준 액션 사용     >> name, property 2개의 애트리뷰트 사용 필요!

    <jsp:getProperty name="obj" property="name" />

    → name : 자바빈 객체가 들어 있는 변수의 이름 기재

    → property : 프로퍼티의 이름 기재

     

    [잠깐]

    <jsp:useBean> 액션은 해당 표준 액션이 포함된 JSP 페이지 내에서만 유효하며,

    forward 메서드 (혹은 <jsp:forward> 액션을 통해) 호출된 JSP 페이지에서는 자바빈 객체 사용 불가!

     

    1-2. 웹 브라우저로부터 입력된 데이터를 자바빈 프로퍼티로 설정하는 방법

    - 자바빈 프로퍼티에 직접 상수 값을 대입하는 것 외에

    - 외부로부터 입력된 값을 자바빈 프로퍼티에 대입하는 방법 확인

    - <jsp:setProperty> 액션에 param 이라는 애트리뷰트를 사용하여 입력 데이터의 값을 자바빈 프로퍼티 값으로 설정

      ( 단, param 애트리뷰트와 value 애트리뷰트는 동시에 사용 불가! )

      ex. <jsp:setProperty name="pinfo" property="age" param="AGE"  />

    - param 이나 value 애트리뷰트를 사용하지 않고, property 애트리뷰트 값으로 "*"를 지정하면,

      동일한 이름을 갖는 자바빈 프로퍼티에 데이터가 설정됨.

      ex. <jsp:setProperty name="pinfo" property="*" />

     

    1-3. 자바빈의 다형성을 활용하는 방법

    - 객체지향 프로그래밍 기술의 대표적인 특성 중 하나인 "다형성"이 자바빈 클래스에도 적용됨

    - 클래스 A를 클래스 B, C각 각각 상속 받는 경우를 가정하면,

       슈퍼 클래스 : A

       서브 클래스 : B, C

    - 서브 클래스의 객체를 슈퍼 클래스 타입의 변수에 대입 가능함

       ex. A a = new B() ;

       ex. A a = new C() ;

    - 서브 클래스 B, C 객체가 대입된 변수 a 에 대해 슈퍼 클래스의 메서드 호출 시 해당 메서드 호출되어 실행 가능!

       ex. int price = a.getPrice() ;

    - 단, 슈퍼 클래스가 '추상 클래스'인 경우 다형성 사용 불가

      <jsp:useBean> 의 class 애트리뷰트에는 추상 클래스나 인터페이스 타입 지정 불가 규칙이 있음

    - 만일 추상 클래스를 사용하고자 한다면 type 애트리뷰트 사용!

      ( type 애트리뷰트는 class 애트리뷰트와 비슷한 역할하지만 추상 클래스 이름 지정 가능! )

      ex. <jsp:useBean type="mall.ProductInfo" id="pinfo" scope="request" />

     

    2. 그 밖에 유용한 표준 액션들

    - <jsp:plugin> : HTML 문서에 애플릿 포함시킬 때 사용

    - <jsp:scriptlet> : 스크립팅 요소를 대신해서 사용 시

    - <jsp:expression>, <jsp:declaration>, ...

     

    2-1. 애플릿을 불러오는 태그를 만드는 표준 액션 : 현재는 사용되지 않는 기술

    - 애플릿 : 웹 서버로부터 웹 브라우저로 다운로드 되어서 실행되는 자바 클래스의 일종

    - 애플릿 클래스 작성 시 반드시, 

      java.applet.Applet 클래스 나 java.swing.JApplet 클래스를 상속받아야 함!

    - 가장 처음 실행되어야 할 코드는 애플릿 클래스의 init 메서드 안에 기재!

     

    2-2. 스크립팅 요소를 대신하는 표준 액션

    - 접두어 jsp: 를 사용하는 XML 기반 태그

    - <jsp:scriptlet>, <jsp:expression>, <jsp:declaration>

    댓글

Designed by Tistory.