JSP

[JSP] 3. 액션 태그

myeongju 2024. 7. 21. 16:26
반응형

액션 태그

  • 서버나 클라이언트에게 어떤 행동을 하도록 명령하는 태그
  • JSP 페이지에서 페이지와 페이지 사이 제어
  • 다른 페이지의 실행 결과 내용을 현재 페이지에 포함
  • 자바 빈즈 등의 다양한 기능 제공
  • XML 형식 <jsp: … /> 사용

 

종류

 

 

include 액션 태그

  • 현재 JSP 페이지의 특정 영역에 외부 파일의 내용을 포함하는 태그
    • JSP 페이지에 포함할 수 있는 외부 파일 : HTML, JSP, 서블릿 페이지 등
<jsp:include page="파일명" flush="false" />


page 속성 값

  • 현재 JSP 페이지 내에 포함할 내용을 가진 외부 파일명
  • 외부 파일은 현재 JSP 페이지와 같은 디렉터리에 있으면 파일명만 설정하고, 그렇지 않으면 전체 URL(또는 상대 경로)를 설정해야 함

 

flush 속성 값

  • 설정한 외부 파일로 제어가 이동할 때 현재 JSP 페이지가 지금까지 출력 버퍼에 저장한 결과를 처리(기본 값: false)
  • true로 설정하면 외부 파일로 제어가 이동할 때 현재 JSP페이지가 지금까지 출력 버퍼에 저장된 내용을 웹 브라우저에 출력하고 출력 버퍼를 비움

 

include 태그와의 차이점 ?
include 액션 태그는 먼저 독립적으로 실행 후 실행 결과만 받아온다.
include 태그는 기존 페이지에 복사 붙여넣기 하고 실행한다고 생각하면 된다.

 

구분 include 액션 태그 include 디렉티브 태그
처리 시간 요청 시 자원을 포함 번역 시 자원을 포함
기능 별도의 파일로 요청 처리 흐름을 이동 현재 페이지에 삽입
데이터 전달 방법 request 기본 내장 객체나 param 액션 태그를 이용하여 파라미터를 전달 페이지 내의 변수를 선언한 후 변수에 값을 저장
용도 화면 레이아웃의 일부분을 모듈화할 때 주로 사용 다수의 JSP 웹 페이지에서 공통으로 사용되는 코드나 저작권과 같은 문장을 포함하는 경후에 사용
기타 동적 페이지 정적 페이지

 

서버 부하가 살짝 더 높지만, 근본적인 문제를 발생시키지 않는다.

 

 

Param 액션 태그

  • 현재 JSP 페이지에서 다른 페이지에 정보를 전달하는 태그
  • 단독으로 사용 X. jsp:forward or jsp:include 태그 내부에 사용
  • 다른 페이지에 여러 개의 정보를 전송해야할 때는 다중의 param 액션 태그 사용
<jsp:forward page="파일명">
    <jsp:param name="매개변수명1" value="매개변수값1" />

</jsp:forward>

 

 

useBean 액션 태그

  • JSP 페이지에서 자바빈즈를 사용하기 위해 실제 자바 클래스를 선언하고, 초기화하는 태그
  • id속성과 scope속성을 바탕으로 자바빈즈의 객체를 검색함
  • 객체가 발견되지 않으면 빈 객체를 생성
<jsp:useBean id="자바빈즈 식별이름" class="자바빈즈 이름" scope="범위" />

 

useBean 액션 태그의 속성

속성 설명
id 자바빈즈를 식별하기 위한 이름
class 패키지 이름을 포함한 자바빈즈 이름이다. 자바빈즈는 인수가 없는 기존 생성자가 있어야 하며, 추상 클래스를 사용X
scope 자바빈즈가 저장되는 영역을 설정한다. page(기본값), request, session, application 중 하나의 값을 사용

 

자바빈즈

  • 동적 콘텐츠 개발을 위해 자바 코드를 사용하여 자바 클래스로 로직을 작성하는 방법
  • JSP페이지에서 화면을 표현하기 위한 계산식이나 자료의 처리를 담당하는 자바코드를 따로 분리하여 작성하는 것
  • JSP페이지가 HTML과 같이 쉽고 간단한 코드만으로 구성

 

자바빈즈를 작성할 때 규칙

  • 자바 클래스는 java.io.Serializable 인터페이스를 구현해야 함
  • 인수가 없는 기본 생성자가 있어야 함
  • 모든 멤버 변수인 프로퍼티는 private 접근 지정자로 설정해야 함
  • 모든 멤버 변수인 프로퍼티는 getter/setter( ) 메소드가 존재해야 함
  • Serializable를 사용해야지만, 객체 직렬화가 가능하다.
  • 객체 직렬화를 하는 이유 ? 게임이나 작업의 화면을 종료된 상태에서 다시 시작할 수 있도록 할 수 있다.

 

 

setProperty 액션 태그

  • useBean 액션 태그와 함께 자바빈즈의 setter( ) 메소드에 접근하여 자바빈즈의 멤버 변수인 프로퍼티의 값을 저장하는 태그
  • 폼 페이지로 부터 전달되는 요청 파라미터의 값을 직접 저장하거나 자바빈즈의 프로퍼티로 변경하여 값을 저장할 수 있음
  • 모든 자바빈즈 프로퍼티 이름과 동일하게 요청 파라미터를 설정할 수 있음
<jsp:setProperty name="자바빈즈 식별이름: property="프로퍼티 이름" " value="값" />

 

속성 설명
name useBean 태그에 id 속성 값으로 설정된 자바빈즈를 식별하기 위한 이름
property 자바빈즈의 프로퍼티 이름, 만약 프로퍼티 이름에 '*'를 사용하면 모든 요청 파라미터가 자바빈즈 프로퍼티으 Setter( ) 메소드에 전달됨을 의미
value 변경할 자바빈즈의 프로퍼티 값이다. 만약 프로퍼티 값이 nulld이거나 존재하지 않는 요청 파라미터인 경우에는 SetProperty 액션 태그가 무시된다.
param 자바빈즈의 프로퍼티 값을 전달하는 요청 파라미터의 이름, param과 value를 동시에 모두 사용할 수 없으며 하나를 선택하여 사용하는 것은 가능.

 

 

getProperty 액션 태그

  • useBean 액션 태그와 함께 자바빈즈의 getter( ) 메소드에 접근하여 자바빈즈의 멤버 변수인 프로퍼티의 값을 가져오는 태그
<jsp:getProperty name="자바빈즈 식별이름" property="프로퍼티 이름" />

 

속성 설명
name useBean 태그에서 id 속성 값으로 설정된 자바빈즈를 식별하기 위한 이름
property 자바빈즈의 프로퍼티 이름, 만약 프로퍼티 이름에 '*'를 사용하면 모든 요청 파라미터가 자바빈즈 프로퍼티의 Getter ( ) 메소드에 전달됨을 의미한다.
반응형