JSP

[JSP] (8)JSP 파일에서 자바빈 사용하기

EunaSon 2022. 5. 11. 09:43

JSP 파일에서 우리가 작성한 자바빈을 호출하려면 어떻게 해야할까?

스크립트릿 안에서 

<%

   MyBeans myBean = new MyBeans();

%>

와 같이 사용할 수도 있지만, 이는 html 코드와 jsp 코드가 혼용되어 복잡해진다.

대부분의 경우 jsp 페이지 내에서 빈을 액세스할 때는 빈 태그를 이용한다.

빈 태그를 사용해 접근하면 객체를 명시적으로 생성하지 않아도 빈을 사용할 수 있으며, html 페이지에서 넘어오는 request 정보에 대한 것들을 손쉽게 빈에 담을 수 있다.

또한 빈 태그를 이용해 작성된 빈은 다른 페이지, 혹은 같은 세션에서 계속 공유할 수 있다는 장점이 있다.

빈 태그를 사용한 예는 아래와 같다.

 

<jsp:useBean id="login" class="LoginBean" />

빈, 클래스를 쓰겠다    jsp에서 그 클래스를 지칭하는 id, name명은 "login"이다   사용할 클래스는 "LoginBean"이다

=LoginBean이라는 클래스의 객체를 생성해서 login이라는 name명으로 저장해서 사용하겠다

<jsp:setProperty name="login" property="*" />

login이라는 이름을 사용하면 LoginBean 클래스가 사용되는 것,

login으로 호출해서 사용하는 객체(=LoginBean)의 프로퍼티(멤버변수들)와 똑같은 이름(*)으로 값들을 받아서 setting 하겠다

 

우리가 빈 태그로 만들어낸 객체를 application, session, request, page 객체 각각의 객체범위에 포함시키게 되면 그 영역 안에서 우리가 만든 빈 객체를 재사용 할 수 있다.

 

JSP에서 빈을 액세스 할 수 있는 태그는 아래의 세 개 뿐이다.

<jsp:useBean ...... /> : 빈의 인스턴스와 빈의 수명을 제어할 때 사용하는 태그, 어떤 클래스를 어떤 이름으로 사용할지..

<jsp:setProperty ...... /> : <jsp:useBean> 태그로 생성된 빈의 프로퍼티에 값을 대입할 때 사용하는 태그, 멤버변수 값 세팅

<jsp:getProperty ....../> : <jsp:useBean> 태그로 생성된 빈의 프로퍼티에서 값을 가져올 때 사용하는 태그, 멤버변수에 기억된 값 가져오기

 

- <jsp:useBean> 태그

이 태그는 jsp 페이지에서 사용할 빈 클래스를 찾아서 객체를 생성해주고 객체에 대한 레퍼런스를 선언한다.

일반적으로 객체를 생성할 때는 new 연산자를 이용하지만, 이 태그를 이용하면 정적인 클래스 로딩을 해주게 된다.

이때 자바 객체는 인자가 없는 생성자를 필요로 하게 된다.

<jsp:usebean> 태그를 이용해 객체를 생성할 때 객체의 사용범위(scope)를 지정할 수 있다.

이를 이용해 다른 페이지에서 미리 생성된 객체를 참조할 수 있게 된다.

 

* 동적 로딩 (예 : 자바. 웹과 같은 유동적이고 가변적인 프로그램)

 : 프로그램 실행시, 필요할 때마다 동적으로 메모리를 생성하고 필요없는 메모리는 메모리에서 소멸시킴.

 작은 메모리에서도 큰 프로그램을 실행할 수 있는 장점이 있지만, 프로그램의 실행속도가 느려질 수 있으므로 static 키워드를 사용해 정적 로딩처럼 바로 메모리에 올릴 수 있게 해준다.

* 정적 로딩 (예 : C언어. 자주 변하지 않는 소프트웨어 등)

 : 프로그램 실행시, 모든 실행 파일이 메모리에 로딩됨. 모든 기능이 메모리에 존재하므로 cpu가 필요로 하는 기능을 빠르게 메모리에서 가져와 사용할 수 있지만, 메모리를 많이 차지하는 단점이 있다.

 

이 태그의 문법은 다음과 같다.

 

<jsp:useBean id="인스턴트이름" scope="page | request | session | application" typeSpec />

 

typeSpec 에 들어갈 수 있는 문법은 다음과 같다.

 

class="className" type="typeName" | beanName="beanName" type="beanName"

 

- <jsp:useBean> 태그의 속성

id : 빈 객체를 구별하기 위한 클래스의 인스턴스 이름. 이곳에서 인스턴스 이름을 지정하게 되면 일반 스크립트릿에서도 참조 가능하다.

scope : 생성된 빈이 존재하게 될 범위를 지정. page, request, session, application 중 하나의 값만 지정할 수 있다.

class : 빈 객체를 생성하게 될 클래스의 이름을 지정. 생성자는 반드시 public으로 선언되어야 하며 파라미터(=매개변수)를 갖지 않는 비어있는(empty) 생성자여야 한다.

beanName : 빈의 이름을 정의

type : id 속성에서 정의된 객체의 레퍼런스 타입을 설정. type이 명시되지 않으면 class에 정의된 클래스 타입으로 간주한다. 즉 리턴 타입을 지정한다고 볼 수 있다. 

 

* 매개변수(Parameter, 파라미터)

 : 함수/메서드 안에서 정의 및 사용에 나열되어 있는 변수(variable)

* 전달인자(Argument)

 : 함수/메서드를 호출할 때 전달되는 실제 값(value)


- <jsp:setProperty> 태그

위의 방식으로 생성한 빈의 프로퍼티에 값을 할당할 때 아래와 같은 형태의 태그를 사용하면 된다.

 

<jsp:setProperty name="Bean Instance Name" property="properties Name" value="Value" />

 

자세한 문법은 아래와 같다. 옵션 중 필요한 것 하나를 사용하면 된다.

<jsp:setProperty name="beanName"

      property="*" |

      property="propertyName" |

      property="propertyName" param="parameterName" |

      property="propertyName" value="propertyValue"   />

 

- <jsp:setProperty> 태그의 속성

name : <jsp:useBean> 태그에서 지정한 빈의 id값을 가리킴. 반드시 둘은 동일해야한다.

property : 설정할 프로퍼티 속성의 이름을 지정.

param : 빈이 가지고 있는 속성과 웹페이지의 Form이 갖는 속성의 이름이 다를 때 사용함. param 속성이 생략되면 빈의 속성명과 웹페이지의 폼 이름이 동일하다고 간주

 

* Form 태그

 : 입력된 데이터를 한번에 서버로 전송함. 전송된 데이터는 웹서버가 처리하고, 결과에 따른 또다른 웹페이지를 보여줌.

 

'JSP' 카테고리의 다른 글

[JSP] (7)Java Beans 컴포넌트  (0) 2022.05.09
[JSP] (6)쿠키와 세션  (0) 2022.05.08
[JSP] (5)JSP Action 태그  (0) 2022.05.08
[JSP] (4)JSP 내장객체  (0) 2022.05.02
[JSP] (3)JSP의 이해  (0) 2022.04.27