[JSP] 07. 액션 태그(Action Tag)

Min's Study Note·2023년 11월 13일
0

JSP

목록 보기
9/16

▣ 액션 태그란..??

  • 액션 태그(Action Tag)는 JSP의 표준 태그
  • 페이지 사이에서 이동을 제어하거나 자바빈을 생성할 때 주로 사용
  • 특별한 선언 없이 <jsp:태그명 /> 형태로 사용
  • 태그처럼 사용하지만 JSP와 동일하므로 서버(WAS)에서 처리 된 후 결과만 출력
  • 특징
    - XML 문법을 따름
    - 반드시 종료 태그를 사용해야 함
    - 액션 태그 사이에 주석을 사용하면 에러 발생
    - 속성값 부여시 표현식 <%= %>을 사용할 수 있음

▣ 액션 태그의 종류

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

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

  • 현재 페이지에 다른 JSP파일을 포함시킬 때 사용
  • 2장에서 학습했던 include지시어와 비슷하지만 동작방식의 차이가 있음

▣ 차이점

▣ include 지시어의 동작 매커니즘

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

▣ 액션태그의 동작 매커니즘

  • 포함시킬 페이지로 요청의 흐름이 이동되어 컴파일을 진행한 후 결과물을 현재 페이지에 삽입
  • 컴파일 된 결괏값만 포함되는 형태이므로 포함시킬 페이지에서 생성한 변수는 사용할 수 없음
  • 다른 페이지로 인식하므로 page영역은 공유되지 않음
  • 하지만 같은 요청을 공유하므로 request 영역은 공유됨

▣ 포워드

  • 현재 페이지에 들어온 요청을 다음 페이지로 보내는 기능
  • RequestDispatcher 객체의 forward() 메서드와 동일한 기능의 액션태그
  • request 영역을 공유

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

  • 자바빈즈(JavaBeans)를 생성하거나 설정할 때 사용
  • 자바빈즈는 데이터를 저장하기 위한 멤버 변수(속성)와 게터/세터 메서드로만 이루어진 클래스
  • 자바빈즈 개발 규약
    - 자바빈즈는 기본(default) 패키지 이외의 패키지에 속해 있어야 함
    - 멤버 변수(속성, 프로퍼티)의 접근 지정자는 private으로 선언.
    - 기본 생성자가 있어야 함.
    - 멤버 변수에 접근할 수 있는 게터/세터 메서드가 있어야 함.
    - 게터/세터 메서드의 접근 지정자는 public으로 선언.

▣ 자바빈즈 생성

형식 : <jsp:useBean id="자바빈즈 이름" class="사용할 패키지와 클래스명" scope="저장될 영역" />

  • id : 자바빈즈 객체의 이름을 지정
  • class : 패키지명과 클래스명을 지정
  • scope : 자바빈즈가 저장될 내장 객체 영역 지정

▣ 멤버 변수 값 설정/추출

형식 : <jsp:setProperty name="자바빈즈 이름" property="속성명(멤버 변수)" value="설정할 값" />

  • name : <jsp:useBean>의 id 속성에 지정한 자바빈즈의 이름을 지정
  • property : 자바빈즈의 멤버 변수명을 지정합니다.
    - 만약 property=“*”라고 쓰면 form의 하위 요소와 일치하는 자바빈즈의 모든 속성에 사용자가전송한값이 설정
    - 이때는 value 속성 생략
  • value : 멤버 변수에 설정할 값 지정

형식 : <jsp:getProperty name="자바빈즈 이름" property="속성명(멤버 변수)" />

  • 자바빈즈의 값을 추출할때 사용

  • 속성은 <jsp:setProperty>와 동일함

  • name : <jsp:useBean>의 id 속성에 지정한 자바빈즈의 이름 지정

  • property : 자바빈즈의 멤버 변수명 지정

  • value : 멤버 변수에 설정할 값 지정

▣ 와일드카드로 폼값 한 번에 설정하기

  • 값을 설정시 property 속성에 와일드카드(*)를 사용
  • <form> 태그를 통해 전송되는 모든 폼값을 한 번에 자바빈즈에 입력할 수 있음
  • 폼값 전송시 <input>태그의 name속성에 지정한 이름을 통해 전송
  • name속성에 지정한 이름과 Person 클래스의 멤버변수명이 동일하므로 한꺼번에 저장 가능

▣ <jsp:param>

  • <jsp:include>나 <jsp:forward>를 사용시 다른 페이지에 값을 전달해줌
  • String만 전달할 수 있음
  • 다른 객체(자바빈즈)를 전달할때는 4가지 영역을 사용해야 함
  • 이번 예제에서는 include와 forward를 동시에 사용하여 구현

▣ 핵심요약

  • <jsp:include> 태그 : 특정 페이지를 현재 페이지에 포함시킬 때 사용합니다. include 지시어와비슷한기능이지만 동작 방식에 차이가 있으므로 사용에 주의
  • <jsp:forward> 태그 : 요청을 전달하는 포워드에 사용
    - <jsp:useBean>, <jsp:setProperty>, <jsp:getProperty> 태그
    자바빈즈를 생성하거나 값을 설정 및 출력할 때 사용.
    - 와일드카드인 *를 사용하면 전송되는 폼값을 한 번에 받을 수 있음
  • <jsp:param> 태그 : 인클루드나 포워드 시 매개변수를 넘길 때 사용

0개의 댓글

관련 채용 정보