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 |