English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
JSP 지시 요소와 달리, JSP 액션 요소는 요청 처리 단계에서 작용합니다. JSP 액션 요소는 XML 문법으로 작성되었습니다.
JSP 작업을 사용하여 파일을 동적으로 삽입하고, JavaBean 컴포넌트를 재사용하고, 사용자를 다른 페이지로 리디렉션하고, Java 플러그인에 HTML 코드를 생성할 수 있습니다.
작업 요소는 하나의 문법을 가지며, XML 표준에 일치합니다:
<jsp:action_name attribute="value"> />
작업 요소는 주로 предопределенные функции로, JSP 규범은 JSP로 접두사를 사용한 일련의 표준 작업을 정의합니다. 사용할 수 있는 표준 작업 요소는 다음과 같습니다:
문법 | 描述 |
---|---|
jsp:include | 페이지가 요청될 때 파일을 포함시킵니다. |
jsp:useBean | JavaBean을 찾거나 인스턴스화합니다. |
jsp:setProperty | JavaBean의 속성을 설정합니다. |
jsp:getProperty | JavaBean의 속성을 출력합니다. |
jsp:forward | 요청을 새로운 페이지로 전달합니다. |
jsp:plugin | 브라우저 유형에 따라 Java 플러그인을 OBJECT 또는 EMBED 태그로 생성. |
jsp:element | 동적 XML 요소를 정의합니다. |
jsp:attribute | XML 요소의 속성을 동적으로 정의합니다. |
jsp:body | XML 요소의 내용을 동적으로 정의합니다. |
jsp:text | 텍스트를 기록하는 템플릿을 JSP 페이지와 문서에서 사용. |
모든 작업 요소는 두 가지 속성을 가지고 있습니다: id 속성과 scope 속성.
id 속성:
id 속성은 작업 요소의 유일한 식별자로, JSP 페이지에서 참조할 수 있습니다. PageContext를 통해 작업 요소가 생성한 id 값을 호출할 수 있습니다.
scope 속성:
이 속성은 작업 요소의 생명 주기를 인식합니다. id 속성과 scope 속성은 직접 관련이 있으며, scope 속성은 관련 id 객체의 수명을 정의합니다. scope 속성은 네 가지 가능한 값이 있습니다: (a) page, (b) request, (c) session, 및 (d) application.
<jsp:include> 작업 요소는 정적과 동적 파일을 포함하는 데 사용됩니다. 이 작업은 지정된 파일을 생성 중인 페이지에 삽입합니다. 문법 형식은 다음과 같습니다:
<jsp:include page="상대 URL 주소" flush="true"> />
이전에 소개한 include 지시문은 JSP 파일이 Servlet로 변환될 때 파일을 포함시키는 지시문이며, 여기서의 jsp:include 작업은 페이지가 요청될 때 파일을 포함시키는 작업입니다.
아래는 include 작업과 관련된 속성 목록입니다.
属性 | 描述 |
---|---|
page | 페이지에 포함된 상대 경로 URL 주소. |
flush | 자원을 포함하기 전에 캐시 메모리를 새로 고칠지 여부를 정의하는 부울 속성. |
다음은 두 개의 파일을 정의했습니다. date.jsp 와 main.jsp아래와 같이 코드가 있습니다:
date.jsp 파일 코드:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <p> 今天的日期是: <%= (new java.util.Date()).toLocaleString()%> </p>
main.jsp文件代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> !DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>기본 가이드 웹(oldtoolbag.com)</title> </head> <body> <h2>include 액션 예제</h2> <jsp:include page="date.jsp" flush="true" /> </body> </html>
现在将以上两个文件放在服务器的根目录下,访问main.jsp文件。显示结果如下:
include 액션 예제 今天的日期是: 2016-6-25 14:08:17
jsp:useBean 이 액션은 JSP 페이지에서 사용할 JavaBean를 로드하는 데 사용됩니다.
이 기능은 매우 유용합니다. 왜냐하면 Java 컴포넌트 재사용의 장점을 발휘할 수 있기 때문입니다.
jsp:useBean 액션의 가장 간단한 문법은 다음과 같습니다:
<jsp:useBean id="name" />
클래스가 로드된 후, jsp:setProperty와 jsp:getProperty 액션을 통해 bean의 속성을 수정하고 검색할 수 있습니다.
이하 useBean 액션과 관련된 속성 목록입니다.
属性 | 描述 |
---|---|
class | Bean의 전체 패키지 이름을 지정합니다. |
type | 이 객체 변수를 참조할 타입을 지정합니다. |
beanName | 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:setProperty를 jsp:useBean 요소 내부에 넣는 것입니다. 다음과 같이 보입니다:
<jsp:useBean id="myName" ...> ... <jsp:setProperty name="myName" property="someProperty" ...>/> </jsp:useBean>
이 시점에서, jsp:setProperty는 Bean 예제를 새로 생성할 때만 실행되며, 이미 있는 예제를 사용할 때는 jsp:setProperty를 실행하지 않습니다.
jsp:setProperty 액션은 다음과 같은 네 가지 속성을 가지고 있습니다. 다음 표를 참조하세요:
属性 | 描述 |
---|---|
name | name 속성은 필수입니다. 설정하려는 속성이哪个Bean인지를 나타냅니다. |
property | property 속성은 필수입니다. 이는 설정할 속성을 나타냅니다. 특별한 사용법이 있습니다: property의 값이 ""라면*),이는 모든 이름과 Bean 속성 이름이 일치하는 요청 파라미터가 해당 속성의 set 메서드에 전달될 것을 의미합니다. |
value | value 속성은 선택 사항입니다. 이 속성은 Bean 속성 값을 지정합니다. 문자 데이터는 목표 클래스에서 표준 valueOf 메서드를 통해 자동으로 숫자, boolean, Boolean, byte, Byte, char, Character로 변환됩니다. 예를 들어, boolean과 Boolean 타입의 속성 값(예 "true")은 Boolean.valueOf로 변환되고, int와 Integer 타입의 속성 값(예 "42)는 Integer.valueOf로 변환됩니다. value와 param은 동시에 사용할 수 없지만, 그 중 하나를 사용할 수 있습니다. |
param | param은 선택 사항입니다. 이는 Bean 속성 값으로 사용할哪个请求参数을 지정합니다. 현재 요청에 파라미터가 없으면, 시스템은 null을 Bean 속성의 set 메서드에 전달하지 않습니다. 따라서, Bean이 자체로 기본 속성 값을 제공할 수 있으며, 요청 파라미터가 명확하게 새 값을 지정하지 않으면 기본 속성 값을 변경하지 않을 수 있습니다. |
jsp:getProperty 액션은 지정된 Bean 속성 값을 추출하고 문자열로 변환하여 출력합니다. 문법 형식은 다음과 같습니다:
<jsp:useBean id="myName" ... /> ... <jsp:getProperty name="myName" property="someProperty" .../>
getProperty와 관련된 속성 목록은 다음과 같습니다:
属性 | 描述 |
---|---|
name | 검색할 Bean 속성 이름입니다. Bean이 이미 정의되어 있어야 합니다. |
property | Bean의 속성 값을 추출하려면 사용합니다 |
이 예제에서는 Bean을 사용했습니다:
package com.w3codebox.main; public class TestBean { private String message = "기본教程網"; public String getMessage() { return(message); } public void setMessage(String message) { this.message = message; } }
위 예제 파일 TestBean.java를 컴파일합니다:
$ javac TestBean.java
编译完成后会在当前目录下生成一个 TestBean.class 文件, 将该文件拷贝至当前 JSP 项目的 WebContent/WEB-INF/classes/com/w3codebox/main下( com/w3codebox/main包路径,没有需要手动创建)。
下面是一个 Eclipse 中目录结构图:
下面是一个很简单的实例,它的功能是装载一个Bean,然后设置/读取它的message属性。
现在让我们在main.jsp文件中调用该Bean:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> !DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>기본 가이드 웹(oldtoolbag.com)</title> </head> <body> <h2>Jsp使用JavaBean示例</h2> <jsp:useBean id="test" /> <jsp:setProperty name="test" property="message" value="基础教程..." /> <p>输出信息....</p> <jsp:getProperty name="test" property="message" /> </body> </html>
浏览器访问,执行以上文件,输出如下所示:
jsp:forward动作把请求转到另外的页面。jsp:forward标记只有一个属性page。语法格式如下所示:
<jsp:forward page="相对URL地址" />
以下是forward相关联的属性:
属性 | 描述 |
---|---|
page | page属性包含的是一个相对URL。page的值既可以直接给出,也可以在请求的时候动态计算,可以是一个JSP页面或者一个 Java Servlet。 |
以下示例我们使用了两个文件,分别是: date.jsp 和 main.jsp。
date.jsp 文件代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <p> 今天的日期是: <%= (new java.util.Date()).toLocaleString()%> </p>
main.jsp文件代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> !DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>기본 가이드 웹(oldtoolbag.com)</title> </head> <body> <h2>forward动作示例</h2> <jsp:forward page="date.jsp" /> </body> </html>
现在将以上两个文件放在服务器的根目录下,访问main.jsp文件。显示结果如下:
今天的日期是: 2016-6-25 14:37:25
jsp:plugin动作用于根据浏览器的类型,插入通过Java插件运行Java Applet所必需的OBJECT或EMBED元素。
필요한 플러그인이 없으면 플러그인을 다운로드한 후 Java 컴포넌트를 실행합니다. Java 컴포넌트는 applet 또는 JavaBean일 수 있습니다.
plugin 액션은 여러 HTML 요소의 속성을 가지며 Java 컴포넌트를 포맷합니다. param 요소는 Applet 또는 Bean에 파라미터를 전달할 수 있습니다.
plugin 액션 요소를 사용하는 표준 예제는 다음과 같습니다:
<jsp:plugin type="applet" codebase="dirname" code="MyApplet.class" width="60" height="80"> <jsp:param name="fontcolor" value="red" /> <jsp:param name="background" value="black" /> <jsp:fallback> Java 플러그인을 초기화할 수 없음 </jsp:fallback> </jsp:plugin>
jsp:plugin 액션 요소를 테스트하고 싶다면 applet를 사용해보세요. <fallback> 요소는 새로운 요소로, 컴포넌트가 故障된 경우 사용자에게 오류 정보를 전달합니다.
<jsp:element> 、 <jsp:attribute>、 <jsp:body>작업 요소가 동적으로 XML 요소를 정의합니다. 동적은 매우 중요합니다. 이는 XML 요소가 컴파일 시 동적으로 생성되며 정적이지 않다는 것을 의미합니다.
다음 예제는 XML 요소를 동적으로 정의한 것입니다:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> !DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>기본 가이드 웹(oldtoolbag.com)</title> </head> <body> <jsp:element name="xmlElement"> <jsp:attribute name="xmlElementAttr"> 속성 값 </jsp:attribute> <jsp:body> XML 요소의 주체 </jsp:body> </jsp:element> </body> </html>
브라우저가 다음 페이지에 접근하여 다음과 같은 결과를 출력합니다:
jsp:text 액션 요소는 JSP 페이지와 문서에서 텍스트를 쓰는 템플릿을 사용할 수 있게 합니다. 문법 형식은 다음과 같습니다:
jsp:text 템플릿 데이터/jsp:text
위 텍스트 템플릿은 중복 요소를 포함할 수 없으며, 텍스트와 EL 표현식(비고: EL 표현식은 나중 장에서 설명됩니다)만 포함할 수 있습니다. 주의하세요, XML 파일에서 ${whatever > 0}와 같은 표현식을 사용할 수 없습니다. > 기호는 불법입니다. ${whatever gt 0} 표현식이나 CDATA 부분에 포함된 값을 사용할 수 있습니다.
<jsp:text><![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 action</title></head> <body> <books><book><jsp:text> Welcome to JSP Programming </jsp:text></book></books> </body> </html>
위 예제를 <jsp:text>와 이 액션 요소를 사용하지 않은 경우의 차이를 시도해 보세요.