-
[JSP/Servlet] 표준 액션(2/2) - <jsp:useBean>, <jsp:getProperty>, <jsp:setProperty>IT/Spring-JSP&Servlet 2020. 11. 6. 01:17
■ 들어가기
- 뇌를 자극하는 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>
'IT > Spring-JSP&Servlet' 카테고리의 다른 글
[JSP/Servlet] JSTL - 코어 라이브러리 (0) 2020.11.13 [JSP/Servlet] JSTL (0) 2020.11.13 [JSP/Servlet] 표준 액션(1/2) - <jsp:include>, <jsp:forward> (0) 2020.11.04 [JSP/Servlet] 익스프레션 언어(EL식) (0) 2020.11.01 [JSP/Servlet] 서블릿 라이프 사이클 - init(), service(), doGet(), destroy() (1) 2020.10.29