JSP 지시문 요소와 달리 JSP 작업 요소는 요청 처리 단계에서 작동합니다. JSP 작업 요소는 XML 구문으로 작성됩니다.
JSP 작업을 사용하여 파일을 동적으로 삽입하고, JavaBean 구성 요소를 재사용하고, 사용자를 다른 페이지로 리디렉션하고, Java 플러그인용 HTML 코드를 생성합니다.
작업 요소에 대한 구문은 하나만 있으며 XML 표준을 따릅니다.
<jsp:action_name 속성="값" />
액션 요소는 기본적으로 사전 정의된 기능입니다. JSP 사양은 JSP를 접두사로 사용하는 일련의 표준 액션을 정의합니다.
| 문법 | 설명하다 |
|---|---|
| jsp:포함 | 페이지가 요청되면 파일을 가져옵니다. |
| jsp:useBean | JavaBean을 찾거나 인스턴스화합니다. |
| jsp:setProperty | JavaBean 속성을 설정합니다. |
| jsp:getProperty | JavaBean의 속성을 출력합니다. |
| jsp:앞으로 | 새 페이지로 요청을 보냅니다. |
| jsp:플러그인 | 브라우저 유형에 따라 Java 플러그인용 OBJECT 또는 EMBED 태그를 생성합니다. |
| jsp:요소 | 동적 XML 요소 정의 |
| jsp:속성 | 동적으로 정의된 XML 요소 속성을 설정합니다. |
| jsp:본문 | 동적으로 정의된 XML 요소의 콘텐츠를 설정합니다. |
| jsp:텍스트 | JSP 페이지 및 문서에 텍스트를 작성하는 템플릿 사용 |
모든 작업 요소에는 id 속성과 범위 속성이라는 두 가지 속성이 있습니다.
ID 속성:
id 속성은 action 요소의 고유 식별자이며 JSP 페이지에서 참조할 수 있습니다. action 요소에 의해 생성된 id 값은 PageContext를 통해 호출될 수 있습니다.
범위 속성:
이 속성은 작업 요소의 수명 주기를 식별하는 데 사용됩니다. id 속성은 범위 속성과 직접적으로 관련되어 있으며 범위 속성은 연관된 id 개체의 수명을 정의합니다. 범위 속성에는 (a) 페이지, (b) 요청, (c) 세션 및 (d) 애플리케이션의 네 가지 가능한 값이 있습니다.
<jsp:include> 작업 요소는 정적 및 동적 파일을 포함하는 데 사용됩니다. 이 작업은 생성 중인 페이지에 지정된 파일을 삽입합니다. 구문 형식은 다음과 같습니다.
<jsp:include page="상대 URL" 플러시="true" />
include 지시어는 이전에 소개된 적이 있는데, JSP 파일이 서블릿으로 변환될 때 파일을 삽입합니다. 여기에서 파일이 삽입되는 시점은 페이지가 요청되는 시점입니다.
다음은 포함 작업과 관련된 속성 목록입니다.
| 재산 | 설명하다 |
|---|---|
| 페이지 | 페이지에 포함된 상대 URL 주소입니다. |
| 플러시 | 리소스를 포함하기 전에 캐시를 플러시해야 하는지 여부를 정의하는 부울 속성입니다. |
아래에서는 date.jsp와 main.jsp라는 두 파일을 정의합니다. 코드는 다음과 같습니다.
date.jsp 파일 코드:
<p> 오늘 날짜: <%= (new java.util.Date()).toLocaleString()%></p>
main.jsp 파일 코드:
<html><head><title>포함 작업 예</title></head><body><center><h2>포함 작업 예</h2><jsp:include page="date.jsp" 플러시 ="true" /></center></body></html>
이제 위의 두 파일을 서버의 루트 디렉터리에 넣고 main.jsp 파일에 접근합니다. 표시되는 결과는 다음과 같습니다.
포함 작업 예시오늘 날짜: 2013년 9월 12일 14:54:22
jsp:useBean 액션은 JSP 페이지에서 사용될 JavaBean을 로드하는 데 사용됩니다.
이 기능은 JSP와 서블릿을 구별하는 편의성의 손실을 피하면서 Java 구성 요소 재사용을 활용할 수 있기 때문에 매우 유용합니다.
jsp:useBean 작업의 가장 간단한 구문은 다음과 같습니다.
<jsp:useBean id="이름" />
클래스가 로드된 후 jsp:setProperty 및 jsp:getProperty 작업을 통해 Bean의 속성을 수정하고 검색할 수 있습니다.
다음은 useBean Action과 관련된 속성 목록이다.
| 재산 | 설명하다 |
|---|---|
| 수업 | Bean의 전체 패키지 이름을 지정하십시오. |
| 유형 | 개체 변수를 참조할 형식을 지정합니다. |
| 콩이름 | java.beans.Beans의 instantiate() 메소드를 통해 Bean의 이름을 지정합니다. |
구체적인 예를 제시하기 전에 먼저 jsp:setProperty 및 jsp:getProperty 작업 요소를 살펴보겠습니다.
jsp:setProperty는 인스턴스화된 Bean 객체의 속성을 설정하는 데 사용됩니다. 이를 사용하는 방법에는 두 가지가 있습니다. 먼저, 다음과 같이 jsp:useBean 요소 외부(뒤)에서 jsp:setProperty를 사용할 수 있습니다.
<jsp:useBean id="myName" ... />...<jsp:setProperty name="myName" property="someProperty" .../>
이때 jsp:useBean이 기존 Bean을 찾거나 새로운 Bean 인스턴스를 생성하면 jsp:setProperty가 실행됩니다. 두 번째 사용법은 아래와 같이 jsp:useBean 요소 내에 jsp:setProperty를 넣는 것입니다.
<jsp:useBean id="myName" ... >... <jsp:setProperty name="myName" property="someProperty" .../></jsp:useBean>
이때 jsp:setProperty는 새로운 Bean 인스턴스를 생성할 때만 실행된다. 기존 인스턴스를 사용하는 경우 jsp:setProperty는 실행되지 않는다.
| 재산 | 설명하다 |
|---|---|
| 이름 | 이름 속성이 필요합니다. 이는 속성이 설정될 Bean을 나타냅니다. |
| 재산 | 속성 속성이 필요합니다. 설정할 속성을 나타냅니다. 특별한 사용법이 있습니다: 속성 값이 "*"인 경우 이름이 Bean 속성 이름과 일치하는 모든 요청 매개변수가 해당 속성 세트 메소드로 전달된다는 의미입니다. |
| 값 | 값 속성은 선택 사항입니다. 이 속성은 Bean 속성의 값을 지정하는 데 사용됩니다. 문자열 데이터는 대상 클래스의 표준 valueOf 메소드를 통해 자동으로 숫자, 부울, 부울, 바이트, 바이트, 문자 및 문자로 변환됩니다. 예를 들어, 부울 및 부울 유형 속성 값(예: "true")은 Boolean.valueOf에 의해 변환되고, int 및 Integer 유형 속성 값(예: "42")은 Integer.valueOf에 의해 변환됩니다. Value와 param은 동시에 사용할 수 없으며, 둘 중 하나만 사용할 수 있습니다. |
| 매개변수 | 매개변수는 선택사항입니다. Bean 속성의 값으로 사용되는 요청 매개변수를 지정합니다. 현재 요청에 매개변수가 없으면 아무 작업도 수행되지 않으며 시스템은 Bean 속성의 set 메서드에 null을 전달하지 않습니다. 따라서 Bean이 기본 속성 값 자체를 제공하도록 하고 요청 매개변수가 명시적으로 새 값을 지정할 때만 기본 속성 값을 수정할 수 있습니다. |
jsp:getProperty 작업은 지정된 Bean 속성의 값을 추출하고 이를 문자열로 변환한 후 출력합니다. 구문 형식은 다음과 같습니다.
<jsp:useBean id="myName" ... />...<jsp:getProperty name="myName" property="someProperty" .../>
다음 표는 getProperty와 관련된 속성입니다.
| 재산 | 설명하다 |
|---|---|
| 이름 | 검색할 Bean 속성의 이름입니다. Bean을 정의해야 합니다. |
| 재산 | Bean 속성의 값이 추출됨을 나타냅니다. |
다음 예에서는 Bean을 사용합니다.
/* 파일: TestBean.java */package action; public class TestBean { private String message = "지정된 메시지 없음"; public String getMessage() { return(message) } public void setMessage(String message); 메시지; }}위의 예제를 컴파일하고 TestBean.class 파일을 수정 후 자동으로 로드할 수 있는 클래스용으로 예약된 디렉터리(예: C:apache-tomcat)가 아닌 서버가 공식적으로 Java 클래스를 저장하는 디렉터리에 복사합니다. -7.0.2 webappsWEB-INFclassesaction 디렉터리, CLASSPATH 변수에 이 경로가 포함되어야 합니다. 예를 들어, Java Web Server의 경우 Bean과 Bean에서 사용하는 모든 클래스는 클래스 디렉터리에 배치하거나 jar 파일로 캡슐화하여 lib 디렉터리에 배치해야 하지만 서블릿 아래에 배치하면 안 됩니다. 다음은 Bean을 로드한 다음 해당 메시지 속성을 설정/읽는 기능을 하는 매우 간단한 예입니다.
이제 main.jsp 파일에서 Bean을 호출해 보겠습니다.
<html><head><title>JSP에서 JavaBeans 사용</title></head><body><center><h2>JSP에서 JavaBeans 사용</h2> <jsp:useBean id="test" /> < jsp:setProperty name="test" property="message" value="Hello JSP..." /> <p>메시지를 받았습니다....</p> <jsp:getProperty name="test" property="message " /> </center></body></html>
위 파일을 실행하면 다음과 같이 출력됩니다.
JSPGot 메시지에서 JavaBeans 사용하기....Hello JSP...
jsp:forward 작업은 요청을 다른 페이지로 전달합니다. jsp:forward 태그에는 페이지라는 하나의 속성만 있습니다. 구문 형식은 다음과 같습니다.
<jsp:forward page="상대 URL" />
다음은 전달과 관련된 속성입니다.
| 재산 | 설명하다 |
|---|---|
| 페이지 | 페이지 속성에는 상대 URL이 포함되어 있습니다. 페이지 값은 요청 중에 직접 제공되거나 동적으로 계산될 수 있습니다. 이는 JSP 페이지 또는 Java 서블릿일 수 있습니다. |
다음 예에서는 date.jsp와 main.jsp라는 두 개의 파일을 사용합니다.
date.jsp 파일 코드는 다음과 같습니다.
<p> 오늘 날짜: <%= (new java.util.Date()).toLocaleString()%></p>
main.jsp 파일 코드:
<html><head><title>전달 작업 예</title></head><body><center><h2>전달 작업 예</h2><jsp:forward page="date.jsp" / ></center></body>
이제 위의 두 파일을 서버의 루트 디렉터리에 넣고 main.jsp 파일에 접근합니다. 표시되는 결과는 다음과 같습니다.
오늘 날짜: 2010년 9월 12일 14:54:22
jsp:plugin 작업은 브라우저 유형에 따라 Java 플러그인을 통해 Java 애플릿을 실행하는 데 필요한 OBJECT 또는 EMBED 요소를 삽입하는 데 사용됩니다.
필요한 플러그인이 없으면 플러그인을 다운로드한 후 Java 구성요소를 실행합니다. Java 구성요소는 애플릿 또는 JavaBean일 수 있습니다.
플러그인 작업에는 Java 구성 요소 형식을 지정하는 데 사용되는 HTML 요소에 해당하는 여러 속성이 있습니다. param 요소는 Applet이나 Bean에 매개변수를 전달하는 데 사용될 수 있습니다.
다음은 플러그인 액션 요소를 사용하는 일반적인 예입니다.
<jsp:plugin type="applet" codebase="dirname" code="MyApplet.class" > <jsp:param name="fontcolor" value="red" /> <jsp:param name="Background" value=" black" /> <jsp:fallback> Java 플러그인을 초기화할 수 없습니다. </jsp:fallback> </jsp:plugin>
관심이 있는 경우 애플릿을 사용하여 jsp:plugin 작업 요소를 테스트해 볼 수 있습니다. <fallback> 요소는 구성 요소가 실패하면 사용자에게 오류 메시지가 전송됩니다.
<jsp:element>, <jsp:attribute>, <jsp:body> 액션 요소는 XML 요소를 동적으로 정의합니다. 동적은 매우 중요합니다. 즉, XML 요소가 정적이 아닌 컴파일 타임에 동적으로 생성된다는 의미입니다.
다음 예에서는 XML 요소를 동적으로 정의합니다.
<%@page 언어="java" contentType="text/html"%><html xmlns="http://www.w3c.org/1999/xhtml" xmlns:jsp="http://java.sun. com/JSP/Page"><head><title>XML 요소 생성</title></head><body><jsp:element name="xmlElement"><jsp:attribute name="xmlElementAttr"> 값 속성</jsp:attribute><jsp:body> XML 요소의 본문</jsp:body></jsp:element></body></html>
실행 시 생성되는 HTML 코드는 다음과 같습니다.
<html xmlns="http://www.w3c.org/1999/xhtml" xmlns:jsp="http://java.sun.com/JSP/Page"> <head><title>XML 요소 생성</ title></head><body><xmlElement xmlElementAttr="속성의 값"> XML 요소의 본문</xmlElement></body></html>
<jsp:text> 작업 요소를 사용하면 JSP 페이지 및 문서에 텍스트를 작성하기 위한 템플릿을 사용할 수 있습니다. 구문 형식은 다음과 같습니다.
<jsp:text>템플릿 데이터</jsp:text>
위의 텍스트 템플릿은 다른 요소를 포함할 수 없지만 텍스트와 EL 표현식만 포함할 수 있습니다(참고: EL 표현식은 후속 장에서 소개됩니다). > 기호는 불법이므로 XML 파일에서는 ${whatever > 0}와 같은 표현식을 사용할 수 없습니다. ${whatever gt 0} 표현식이나 CDATA 섹션에 포함된 값을 사용할 수 있습니다.
<jsp:텍스트><![CDATA[<br>]]></jsp:text>
XHTML에서 DOCTYPE을 선언해야 하는 경우 <jsp:text> 작업 요소를 사용해야 합니다. 예는 다음과 같습니다.
<jsp:text><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">]]></jsp:text>< head><title>jsp:text 액션</title></head><body><books><book><jsp:text> JSP에 오신 것을 환영합니다. 프로그래밍</jsp:text></book></books></body></html>
위의 예시를 통해 <jsp:text>를 사용한 실행 결과와 이 액션 요소를 사용하지 않은 실행 결과의 차이를 확인할 수 있습니다.