JSP 페이지를 좀 더 개선해본다. JSP 페이지를 작성할 때, 가능한 자바 코드의 삽입을 최소화하는 것이 유지 보수에 좋다. 이를 위해 JSP에서는 다양한 JSP 전용 태그를 제공한다. JSP에서 기본으로 제공하는 태그들의 집합을 'JSP 액션(Action)'이라 한다.
JSP 액션을 사용하면 자바로 직접 코딩하는 것보다 빠르고 쉽게 원하는 기능을 작성할 수 있다. 다음은 JSP 2.2에서 제공하는 주요 액션들(Standard Actions) 이다. 각 액션 태그들이 어떤 자바 코드를 생성하는지 살펴본다(그림 1).
앞의 액션 태그 중에서 다른 페이지를 인클루딩하는 <jsp:include> 태그는 이미 사용해 봤다. 다른 서블릿(JSP)으로 포워딩하는 <jsp:forward> 태그의 사용법도 <jsp:include>와 같다.
1. JSP 액션 태그 - <jsp:useBean>
<jsp:useBean> 액션 태그는 application, session, request, page 보관소에 저장된 자바 객체를 꺼낼 수 있다. 만약 보관소에 저장된 객체가 없다면, 새로 생성하여 해당 보관소에 저장한다. <jsp:useBean> 태그의 문법은 다음과 같다.
<!-- jsp:useBean 문법 -->
<jsp:useBean id="이름"
scope="page|request|session|application"
class="클래스명"
type="타입명"/>
<!-- <jsp:useBean> 사용 예 -->
<jsp:useBean id="members"
scope="request"
class="java.util.ArrayList"
type="java.util.ArrayList<spms.vo.Member>"/>
앞의 <jsp:useBean> 액션 태그를 자바 코드로 바꾼다면 다음과 같다.
java.util.ArrayList<spms.vo.Member> members = (java.util.ArrayList<spms.vo.Member>)request.getAttribute("members");
if(members == null) {
members = new java.util.ArrayList();
request.setAttribute("members", members);
}
- id 속성
객체의 이름을 설정한다. 이 이름을 사용하여 보관소로부터 값을 꺼낸다. 또한, 꺼낸 개체의 참조 변수 이름으로 사용한다. 다음 그림은 id의 값이 자바 코드에서 어떻게 사용되는지 보여준다(그림 2).
id 값 "members"는 참조 변수의 이름과 request 객체에서 값을 찾을 때 사용된다. 객체를 생성할 경우, 그 객체를 보관소에 저장하는 키(Key)로 사용된다.
- scope 속성
기존의 객체를 조회하거나 새로 만든 객체를 저장할 보관소를 지정한다. 네 가지 보관소 중에서 하나를 지정할 수 있다. 'page'는 JspContext, 'request'는 ServletRequest, 'session'은 HttpSession, 'application'은 ServletContext 보관소를 의미한다. 다음은 scope 값이 사용되는 것을 표현한 그림이다(그림 3).
scope의 값은 객체 보관소를 지정한다. 앞의 코드처럼 scope 값이 request이면, request 보관소에서 객체를 찾는다. scope 속성을 지정하지 않으면 기본으로 'page'이다. 즉 JspContext 보관소를 가리킨다.
- class 속성
자바 객체를 생성할 때 사용할 클래스 이름을 지정한다. 따라서 클래스 이름은 반드시 패키지 이름을 포함(fully qualified name)해야 하고, 인터페이스 이름은 안된다. scope에 지정된 보관소에서 객체를 찾지 못한다면, 이 속성의 클래스 이름을 사용하여 객체를 생성한다. 물론 생성된 객체는 scope에 지정된 보관소에 자동 저장된다. 만약 이 속성이 없다면, 객체를 생성할 수 없다. 다음 그림은 class 속성이 자바 코드에서 어떻게 사용되는지 표현한 것이다(그림 4).
class 속성은 객체를 새로 생성할 때 사용된다. scope에서 지정한 보관소에서 객체를 찾지 못할 경우, class의 값을 사용하여 인스턴스를 생성한다. class 속성이 없으면 객체를 생성할 수 없다.
- type 속성
참조 변수를 선언할 때 사용할 타입의 이름이다. 클래스 이름 또는 인터페이스 이름이 올 수 있다. 클래스 이름과 인터페이스 이름은 반드시 패키지 이름을 포함해야 한다. 만약 이 속성의 값을 지정하지 않으면 class 속성의 값과 같다. 다음 그림은 type 속성이 자바 코드에서 어떻게 사용되는지 표현한 것이다(그림 5).
type의 값은 참조 변수를 선언할 때 사용한다. type 속성이 없으면 class의 값을 사용한다.
참고도서 : https://freelec.co.kr/book/1674/
[열혈강의] 자바 웹 개발 워크북
[열혈강의] 자바 웹 개발 워크북
freelec.co.kr
'교재 실습 > 자바 웹 개발 워크북' 카테고리의 다른 글
52. EL 사용하기 (1) (0) | 2022.06.23 |
---|---|
51. JSP 액션 태그의 사용 (2) (0) | 2022.06.22 |
49. 데이터 보관소 (5) (0) | 2022.06.20 |
48. 데이터 보관소 (4) (0) | 2022.06.19 |
47. 데이터 보관소 (3) (0) | 2022.06.18 |
댓글