ksouth9

액션 태그(Action Tag) 본문

Web/JSP

액션 태그(Action Tag)

ksouth9 2022. 5. 11. 00:27

액션 태그(Action Tag)


  • <jsp:include> 태그 : 특정 페이지를 현재 페이지에 포함시킬 때 사용한다.
  • <jsp:forward> 태그 : 현재 페이지에 들어온 요청다음 페이지로 보낼 때 사용한다.
  • <jsp:useBean>,<jsp:setProperty>,<jsp:getProperty> 태그 : 자바빈즈를 생성하거나 값을 설정 및 출력할 때 사용된다. 특히 와일드카드 * 를 사용하면 전송되는 폼값을 한 번에 받을 수 있다.
  • <jsp:param> 태그 : 인클루드나 포워드 시 매개변수를 넘길 때 사용한다.

 

액션 태그는 JSP 표준 태그로, 페이지 사이에서 이동을 제어하거나 자바빈을 생성할 때 주로 사용된다.

<jsp:태그명 /> 형태로 사용하며, 태그처럼 사용하지만 그 뒤에서는 JSP가 수행된다. 즉, JSP 코드와 마찬가지로 웹 애플리케이션 서버(WAS)에서 처리된 후 결과만 출력되어 웹 브라우저에서 소스 보기를 해도 액션 태그는 보이지 않는다.

 

액션 태그 특징

  • XML 문법을 따른다.
  • 반드시 종료 태그를 사용해야 한다.
  • 액션 태그 사이에 주석을 사용하면 에러가 발생한다.
  • 액션 태그에 속성값을 부여할 때는 표현식 <%= %>을 사용할 수 있다.

사용방법

<jsp:태그명 />

  • <jsp:include> : 외부 파일을 현재 파일에 포함시킨다.
  • <jsp:forward> : 다른 페이지로 요청을 넘긴다.
  • <jsp:useBean>,<jsp:setProperty>,<jsp:getProperty> : 자바빈즈를 생성하고 값을 설정/추출한다.
  • <jsp:param> : 다른 페이지로 매개변수를 전달한다. <jsp:include>,<jsp:forward> 액션 태그와 함께 사용한다.

<jsp:include>


<jsp:include> 액션 태그는 외부 JSP 파일을 현재 JSP 파일로 포함시키는 기능

 

include 지시어와 <jsp:include> 액션 태그 차이점

  지시어 액션태그
형식 <%@ include file = "포함할 파일의 경로" %> <jsp:include page = "포함할 파일의 경로" />
표현식 표현식 사용 불가 표현식 사용 가능
포함 방식 페이지 자체를 현재 페이지에 포함시킨 후 컴파일 진행 실행의 흐름을 포함시킬 페이지로 이동시킨 후 실행한 결과를 현재 페이지에 포함시킴
변수 포함시킨 파일에서 생성한 변수 사용 가능 포함시킨 파일에서 생성한 변수 사용 불가
page 영역 공유됨 공유되지 않음
request 영역 공유됨 공유됨

 

include 지시어 동작 메커니즘

  • 지시어를 통한 인클루드는 페이지를 원본 그대로 현재 페이지에 먼저 포함시킨 후 컴파일한다.
  • JSP 코드만 서로 다른 페이지로 모듈화(부붐화)하는 것이다. 그러므로 동일한 페이지로 인식한다.

<jsp:include> 액션 태그 동작 메커니즘

  • 액션 태그를 사용하면 포함시킬 페이지로 요청의 흐름이 이동되어 컴파일을 진행한다.
  • 컴파일된 결과물을 현재 페이지에 삽입한다.
  • 웹 서버에서 컴파일된 JSP 코드는 모두 단순한 HTML 형태로 변환된다. 그러므로 포함시킬 페이지에서 생성한 변수는 현재 페이지에서 사용할 수 없다.
  • 다른 페이지로 인식하므로 page 영역 또한 공유되지 않는다.

사용방법

<jsp:include page="이동할 JSP 페이지" />

표현식을 통해서 지정할 수도 있다.

<jsp:include page="include.jsp" />
<%
	String url = "include.jsp"
%>
<jsp:include page="<%= url %>" />

<jsp:forward>


<jsp:forward>는 현재 페이지에 들어온 요청을 다음 페이지로 보내는 기능

  • 포워드는 다음 페이지로 요청을 전달하는 것이 목적이다.
  • 이동된 페이지와 request 영역을 공유한다.
  • URL이 변경되지 않는다.
  • 포워드된 페이지는 이전 페이지와는 서로 다른 페이지이므로, 페이지별로 생성되는 page 영역은 공유되지 않는다.
  • page 영역페이지별로 고유하게 만들어진다.
  • request 영역하나의 요청을 공유하는 모든 페이지에 공유된다.

사용방법

<jsp:forward page="이동할 JSP 페이지" />

include 액션 태그처럼 페이지를 그대로 지정하거나 표현식을 통해 지정할 수 있다.

<jsp:forward page="forward.jsp" />
<%
	String url = "forward.jsp"
%>
<jsp:forward page="<%= url %>" />

<jsp:useBean>,<jsp:setProperty>,<jsp:getProperty>


 

<jsp:useBean> 

<jsp:useBean> 액션 태그는 자바빈즈(JavaBeans)를 생성하거나 설정할 때 사용한다.

※자바빈즈 : 데이터를 저장하기 위한 멤버 변수(속성)와 getter/setter 메서드로만 이루어진 클래스

 

사용방법

<jsp:useBean id="자바빈즈 이름" class="사용할 패키지와 클래스명" scope="저장될 영역" />
  • id : 자바빈즈 객체의 이름을 설정한다. 같은 id로 이미 생성된 객체가 있다면 해당 객체를 사용하고, 없다면 새로 생성한다.
  • class : 사용하려는 자바빈즈 객체의 실제 패키지명과 클래스명을 지정합니다. 자바에서는 다른 패키지에 있는 클래스를 사용하려면 먼저 import를 해야 하는데, 이와 같다.
  • scope : 자바빈즈가 저장될 내장 객체 영역을 지정합니다. 생략한다면 기본값인 page 영역이 지정된다. 액션 태그로 생성한 자바빈즈는 4가지 영역(page, request, session, application) 중 한 곳에 저장된다.

 

<jsp:setProperty>

<jsp:useBean> 액션 태그로 생성한 자바빈즈 객체의 속성값을 수정할 때 사용한다. setter 메소드를 호출하는 표준 액션 태그

 

 사용방법

<jsp:setProperty name="자바빈즈 이름" property="속성명(멤버 변수)" value="설정할 값" />
  • name : <jsp:useBean>의 id 속성에 지정한 자바빈즈의 이름을 지정한다. 즉, 인스턴스 변수를 지정하는 것과 동일하다.
  • property : 자바빈즈의 멤버변수명을 지정한다. 이름을 명시하는 대신 property="*" 라고 쓰면 form의 하위 요소와 일치하는 자바빈즈의 모든 속성에 사용자가 전송한 값이 설정된다. 이때는 value 속성을 생략할 수 있다.
  • value : 멤버변수에 설정할 값을 지정한다.
<jsp:setProperty property="자바빈즈 이름" name="속성명(멤버 변수)" param="파라미터이름" />
  • param : 질의 문자열에서 param 속성에 할당된 값과 같은 name의 값으로 자바빈의 속성값을 설정한다.

<jsp:getProperty>

<jsp:useBean> 액션 태그로 객체를 생성한 후 자바빈즈의 속성값을 추출할 때 사용한다. getter 메소드를 호출하여 필요한 기능을 수행하고 그 결과를 주어진 위치에 출력할 때 사용하는 태그

 

사용방법

<jsp:getProperty nam="자바빈즈 이름" property="속성명(멤버 변수)" />
  • name : <jsp:useBean> 태그에서 정의해 놓은 id 속성값과 동일하게 지정한다. 자바빈을 참조한다.
  • property : 값을 추출하려는 자바빈즈 객체의 멤버변수 이름을 지정한다.

<jsp:param>

<jsp:param>은 <jsp:include>나 <jsp:forward>를 사용할 때 다른 페이지에 값을 전달해주는 액션 태그이다.

전달할 수 있는 값은 String뿐이다. 다른 타입의 객체를 전달할 때는 내장 객체의 영역을 이용해야 한다.

 

사용방법

<jsp:include page="이동시킬 JSP 페이지">
	<jsp:param name="파라미터" value="값" />
</jsp:include>

<jsp:forward page="이동시킬 JSP 페이지">
	<jsp:param name="파라미터" value="값" />
</jsp:forward>

<jsp:forward>에서는 request 객체를 이용하여 값을 얻을 수 있다.

 

전달 방식과 상관없이 매개변수들이 모두 request 영역에 생성되어 항상 request.getParameter()메서드로 값을 가져온다. request 영역이란 하나의 요청을 처리하는 과정에서 거쳐가는 모든 페이지에서 공유하는 공간이다. 페이지 사이의 매개변수는 모두 request 영역에 생성된다.

'Web > JSP' 카테고리의 다른 글

Redirect VS Forward 차이점  (0) 2022.06.12
표현 언어(EL : Expression Language)  (0) 2022.05.16
세션(Session)  (0) 2022.05.09
쿠키(Cookie)  (0) 2022.05.08
내장 객체의 영역 - page, request, session, application  (0) 2022.05.07