본문 바로가기

JSP

action tag

액션 태그는 서버나 클라이언트에게 어떤 행동을 하도록 명령하는 태그로 스크립트 태그, 주석, 디렉티브 태그와 함께 JSP 페이지를 구성하는 태그이다. 액션 태그는 JSP 페이지에서 페이지와 페이지 사이를 제어하거나, 다른 페이지의 실행 결과 내용을 현재 페이지에 포함하거나, 자바빈즈(JAvaBeans)등의 다양한 기능을 제공한다.
액션 태그에는 다양한 종류가 있으며, <% %>와 같은 스크립트 태그의 형식을 따르지 않고 XML 형식 <jsp:.../>를 사용한다. 액션 태그는 반드시 끝나는 태그/>로 마무리해야한다.

액션 태그의 종류


forward 액션 태크
-현재 JSP페이지에서 다른 페이지로 이동하는 태그
-JSP 컨테이너는 현재 JSP 페이지에서 forward 액션 태그를 만나면
 1)그 전까지 출력 버퍼에 저장되어 있던 내용을 모두 삭제하고
 2)forward 액션 태그에 설정된 페이지로 프로그램의 제어가 이동

page 속성 값
-현재 JSP 페이지에서 이동할 페이지의 외부 파일명
-외부 파일은 현재 JSP페이지와 같은 디렉터리에 있으면 파일명만 설정하고, 그렇지 않으면 전체 URL(또는 상대 경로)을 설정해야 함.

앞부분의 코드를 실행하다가 <jsp:forward page="파일명.jsp"/> 액션태그를 만나면 지금가지 저장된 출력 버퍼의 내용을 모두 삭제하고 프로그램의 제어를 page의 속성값인 파일명.jsp페이지로 바로 이동한다.(포워딩) jsp컨테이너는 파일명.jsp를 실행한 결과를 웹 브라우저에 응답으로 보낸다. 단일태그로만 사용한다면 태그가 끝날 때 반드시 끝나는 태그인 /가 있어야 한다.

include 액션 태그
include 액션 태그는 include 디렉티브 태그처럼 현재 jsp페이지의 특정 영역에 외부 파일의 내용을 포함하는 태그로 앞부분의 코드가 실행되다가 include 액션 태그를 만나면 page속성값인 해당 파일명 페이지로 이동해서 해당 페이지를 실행 후 다시 원래 페이지로 제어를 반환한다.

flush 속성값은 디폴트값이 false이고 외부 파일로 제어가 이동할 때 현재 jsp페이지가 지금까지 출력 버퍼에 저장한 결과를 처리한다. 그런데 이것을 true로 설정하면 외부 파일로 제어가 이동할 때 현재 페이지가 지금까지 출력 버퍼에 저장한 내용을 웹브라우저에 출력하고나서 출력 버퍼를 비우게 된다. 그리고나서 출력 버퍼를 웹 브라우저에 전송하는데 이 때 헤더 정보도 같이 전송된다. 헤더 정보가 웹 브라우저에 전송되고나면 헤더 정보를 추후에 추가해도 결과가 반영되지 않기 때문에 일반적으로 flush 속성은 false로 지정하는 것이 좋다.

include 액션태그와 include 디렉티브 태그의 차이점


param 액션태그
-현재 JSP 페이지에서 다른 페이지에 정보를 전달하는 태그
-단독으로 사용할수 없으면 forward나 include 태그 내부에 사용
-다른 페이지에 여러개의 정보를 전송해야 할 때는 다중의 param 액션 태그 사용

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

자바빈즈를 작성할 때 규칙
-자바 클래스는 java.io.Serializable 인터페이스를 구현해야함
-인수가 없는 기본 생성자가 있어야 함
-모든 멤버 변수인 프로퍼티는 private 접근 지정자로 설정해야 함
-모든 멤버 변수인 프로퍼는 getter/setter() 메소드가 존재해야 함

useBean 액션 태그
-JSP 페이지에서 자바빈즈를 사용하기 위해 실제 자바 클래스를 선언하고 초기화하는 태그
-id 속성과 scope 속성을 바탕으로 자바빈즈의 객체를 검색하고, 객체가 발견되지 않으면 빈 객체를 생성

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

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

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

getProperty 액션 태그
-useBean 액션 태그와 함께 자바빈즈의 getter() 메소드에 접근하여 자바빈즈의 멤버 변수인 프로퍼티의 값을 저장하는 태그

'JSP' 카테고리의 다른 글

파일 업로드  (0) 2023.06.29
내장 객체 폼  (0) 2023.06.28
jsp 문법  (0) 2023.06.26
example) taglib을 이용한 디렉티브 태그  (0) 2023.06.26
example) include tag  (0) 2023.06.26