본문 바로가기

개발/Java

[JAVA - WEB] JSP 액션 태그(Action Tag)

728x90
반응형
액션 태그

 

자바 코드는 디자이너들에게 너무 복잡하고 어려우므로 디자이너 입장에서 더 쉽고 편리하게 작업할 수 있는 태그 형태로 기능을 제공하게 되며 액션 태그들로 자바 코드를 대신하게 되었습니다.

 

액션 태그 형식 기능
인클루드 액션 태그 <jsp:include> 이미 있는 JSP 를 현재 JSP 에 포함하는 태그
포워드 액션 태그 <jsp:forward> 서블릿에서 RequestDispatcher 클래스의 포워딩 기능을 대신하는 태그
유즈빈 액션 태그 <jsp:useBean> 객체를 생성하기 위한 new 연산자를 대신하는 태그
셋프로퍼티 액션 태그 <jsp:setProperty> setter 를 대신하는 태그
겟프로퍼티 액션 태그 <jsp:getProperty> getter 를 대신하는 태그

 

 

 

인클루드 액션 태그(Include Action Tag)

 

인클루드 액션 태그는 인클루드 디렉티브 태그처럼 화면을 분할해서 관리할 때 사용합니다.
메뉴 화면과 카테고리 화면 등을 분할해서 사용할 수 있겠죠?

인클루드 액션 태그 형식

<jsp:include page = "페이지.jsp" flush = "true or false">
	...
</jsp:include>

 

page 는 포함할 JSP 페이지이고 flush 는 지정한 JSP 를 실행하기 전 출력 버퍼를 비울것인지를 설정합니다.

인클루드 액션태그와 인클루드 디렉티브 태그 비교

 

항목 인클루드 액션 태그 인클루드 디렉티브 태그
기능 JSP 레이아웃 모듈화 JSP 레이아웃 모듈화
처리 시간 요청 시간에 처리 JSP 를 자바 코드로 변환 시 처리
데이터 처리 방법 param 액션 태그를 이용해 동적 처리 가능 정적 처리만 가능
포함된 JSP 자바 파일 변환 여부 포함되는 JSP 가 각각 자바 파일로 생성 포함되는 JSP 가 포함하는 JSP 에 합쳐진 후 한개의 자바 파일로 생성

 

인클루드 액션 태그 예제

 

<!-- image_test.jsp -->
...
<%
	String name = request.getParameter("name");
	String fileName = request.getParameter("fileName");
%>

...

이미지 이름은 <%=name %> 입니다. <br>
<img src = "./image/<%=fileName %>" />
...

 

<!-- include1.jsp -->
...
<jsp:include page = "image_test.jsp" flush = "true" >
	<jsp:param name = "name" value = "이미지1" />
	<jsp:param name = "fileName" value = "image1.png" />
</jsp:include>
...

 

<!-- include2.jsp -->
...
<jsp:include page = "image_test.jsp" flush = "true" >
	<jsp:param name = "name" value = "이미지2" />
	<jsp:param name = "fileName" value = "image2.png" />
</jsp:include>
...

 

include1.jsp 와 include2.jsp 에 value 값을 다른 것으로 지정함으로써 다른 결과를 출력할 수 있습니다.
이처럼 인클루드 액션 태그는 포함되는 자식 JSP 에 데이터를 동적으로 전달하여 원하는 결과를 출력할 수 있습니다.

 

 

 

포워드 액션 태그(Forward Action Tag)

 

RequestDispatcher... 과 같은 자바 코드를 이용하지 않고 포워드 액션 태그를 이용해서 포워딩할 수 있습니다.

포워드 액션 태그 형식

<jsp:forward page = "페이지.jsp or servlet">
	...
</jsp:forward>

 

포워드 액션 태그 예제

 

// java
<%
/*
	RequestDispatcher dispatch = request.getRequestDispatcher("login.jsp");  
	dispatch.forward(request, response);
*/


%>
// forward action tag
<jsp:forward  page="login.jsp" />


// forward action tag with param
<jsp:forward  page="login.jsp" />
	<jsp:param name = "id" value = "<%=id %>" />
    <jsp:param name = "pwd" value = "<%=pwd %>" />
</jsp:forward>

 

 

 

useBean 액션 태그

 

자바 빈은 웹 프로그램, 즉 Java EE 프로그래밍 시 여러 객체를 거치면서 만들어지는 데이터를 저장하거나 전달하는데 사용합니다.
자바 빈을 만드는 방법은 VO(Value Onject) 클래스를 만드는 방법과 같으며 특징은 다음과 같습니다.

- 속성의 접근 제한자는 private 입니다.
- 각 속성은 getter/setter 를 가집니다.
- getter/setter 이름의 첫 글자는 반드시 소문자입니다.
- 인자 없는 생성자를 반드시 가지며 다른 생성자도 추가할 수 있습니다.

이렇게 자바 빈을 사용할 경우 화면이 복잡해진다는 단점이 있습니다. 
이러한 단점을 보완하기 위해 나온 것이 유즈빈 액션 태그입니다.

유즈빈 액션 태그 형식 

 

<jsp:useBean id = "빈(bean) 이름" class = "패키지 이름을 포함한 자바 빈 클래스" scope = "접근범위" />

<jsp:useBean id = "m" class = "member.memberVO" scope = "page" />

 

여기서 id 는 JSP 페이지에서 자바 빈 객체에 접근할 때 사용할 이름을 의미합니다. 
class 는 패키지 이름을 포함한 자바 빈 이름을, scope 는 자바 빈에 대한 접근 범위를 지정하는 역할을 합니다.
(scope 는 page, request, session, application 을 지정할 수 있으면 default 는 page 입니다)

 

 

 

setProperty / getProperty 액션 태그

 

앞에서 본 getter/setter 입니다.

 

태그 정의 형식
setProperty useBean 의 속성에 값을 설정하는 태그 <jsp:setproperty name = "자바 빈 이름" property = "속성 이름 " value = "값" />
name : <jsp:useBean> 액션 태그의 id 속성에 지정한 이름
property : 값을 설정할 속성 이름
value : 속성에 설정할 속성 값
getProperty useBean 의 속성 값을 얻는 태그 <jsp:getProperty name = "자바 빈 이름" property = "속성 이름" />
name : <jsp:useBean> 액션 태그의 id 속성에 지정한 이름
property : 값을 얻을 속성 이름

 

HTML 에서 memberVO 의 속성과 name 을 동일한 이름으로 설정하게 되면 useBean 의 속성에서 자동으로 값을 설정합니다.

 

<jsp:useBean id = "m" class = "member.memberVO" scope = "page" />

<jsp:setProperty name = "m" property = "id" param = "id" />
<jsp:setProperty name = "m" property = "pwd" param = "pwd" />
<jsp:setProperty name = "m" property = "name" param = "name" />
<jsp:setProperty name = "m" property = "email" param = "email" />

// 매개변수 이름이 일치할 때
<jsp:setProperty name = "m" property = "id" />
<jsp:setProperty name = "m" property = "pwd" />
<jsp:setProperty name = "m" property = "name" />
<jsp:setProperty name = "m" property = "email" />

 

property 속성에 * 를 지정하면 JSP 페이지에서 자동으로 매개변수 이름과 속성 이름을 비교한 후 같은 이름의 속성 이름에 전달된 값을 알아서 설정해 줍니다.

 

// set

<jsp:useBean id = "m" class = "member.memberVO" scope = "page" />
<jsp:setProperty name = "m" property = "*" />


// <jsp:getProperty> 로 값을 가져와서 알맞은 곳에 사용합니다.

// get
아이디 : <jsp:getProperty name = "m" property = "id" />
비밀번호 : <jsp:getProperty name = "m" property = "pwd" />
이름 : <jsp:getProperty name = "m" property = "name" />
이메일 : <jsp:getProperty name = "m" property = "email" />

 

 

여기까지 임미다.

728x90