포스트

Action Tag

Action Tag

Action Tag

  • JSP의 표준 태그로, 페이지 사이에서 이동을 제어하거나 자바빈을 생성할 때 주로 사용
  • 특별한 선언 없이 형태로 사용
  • 태그처럼 사용하지만 그 뒤에서는 JSP가 수행
  • JSP 코드와 마찬가지로 웹 애플리케이션 서버(WAS)에서 처리된 후 결과만 출력되어 웹 브라우저에서 소스 보기를 해도 액션 태그는 보이지 않음

액션 태그 특징

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

액션 태그 용도

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

<jsp:include>

  • 외부 JSP 파일을 현재 JSP 파일로 포함시킨느 기능
  • include 지시어와 비슷한 역할을 하지만 동작 방식에 차이가 있음

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

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

지시어의 동작 매커니즘

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

액션 태그의 동작 매커니즘

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

<jsp:forward>

  • 현재 페이지에 들어온 요청을 다음 페이지로 보내는 기능
1
2
3
4
5
// RequestDispatcher 객체의 forward() 메서드 이용 --> <jsp:forward>와 같은 기능 수행
RequestDispatcher requestDispatcher = request.getRequestDispatcher("포워드할 파일의 경로");
requestDispatcher.

forward(request, response);
  • <jsp:forward> 액션 태그를 만나기까지의 모든 출력을 제거하고 포워드할 페이지로 요청을 전달
  • 포워드는 버퍼와 밀접
  • 만약 해당 페이지 지시어 부분에 buffer=”none”으로 설정해 버퍼를 사용하지 않도록 했다면 포워드는 사용 불가
  • 포워드는 다음 페이지로 요청을 전달하는 것이 목적이므로 이동된 페이지와 request영역을 공유
  • URL이 변경되지 않는 특징

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

  • <jsp:useBean> 액션 태그는 자바빈즈를 생성하거나 설정할 때 사용
  • 자바빈즈는 데이터를 저장하기 위한 멤버 변수(속성)와 게터/세터 메서드로만 이루어진 클래스

자바빈즈 개발 규약

  1. 자바빈즈는 기본(default)패키지 이외의 패키지에 속해 있어야 함
  2. 멤버 변수(속성, 프로퍼티)의 접근 지정자는 private로 선언
  3. 기본 생성자가 있어야 함
  4. 멤버 변수에 접근할 수 있는 게터/세터 메서드가 있어야 함
  5. 게터/세터 메서드의 접근 지정자는 public으로 선언

자바빈즈 생성

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

멤버 변수 값 설정/추출

  • 생성된 자바빈즈에 <jsp:setProperty>로 멤버 변수의 값을 설정
1
2
3
<jsp:
setProperty name = "자바빈즈 이름"
property="속성명(멤버 변수)"value="설정할 값"/>
속성의미
name* <jsp:useBean>의 id 속성에 지정한 자바빈즈의 이름을 지정
* 즉 인스턴스 변수를 지정하는 것과 동일
property* 자바빈즈의 멤버 변수명을 지정
* 이름을 명시하는 대신 property=”*“라고 쓰면 form의 하위 요소와 일치하는 자바빈즈의 모든 속성에 사용자가 전송한 값이 설정
* 이 때 value 속성 생략 가능
value* 멤버 변수에 설정할 값을 지정

<jsp:param>

  • <jsp:include>나 <jsp:forward>를 사용할 때 다른 페이지에 값을 전달
  • 전달할 수 있는 값은 String 만 가능
  • 다른 타입의 객체를 전달할 때는 내장 객체의 영역을 이용
이 기사는 저작권자의 CC BY-NC 4.0 라이센스를 따릅니다.