▣ 액션 태그란..??
- 액션 태그(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> 태그 : 인클루드나 포워드 시 매개변수를 넘길 때 사용