JSP動作控制底層servlet引擎的行為。
使用JSP動作,我們可以動態(tài)插入文件,重用JavaBeans組件或?qū)⒂脩艮D(zhuǎn)發(fā)到另一個頁面。
以下代碼是動作元素的語法:
<jsp:action_name attribute="value" />
我們可以使用以下JSP動作元素。
語法 | 目的 |
---|---|
jsp:include | 包括文件 |
jsp:useBean | 初始化JavaBean |
jsp:setProperty | 設(shè)置JavaBean的屬性 |
jsp:getProperty | 從JavaBean獲取屬性 |
jsp:forward | 將請求轉(zhuǎn)發(fā)到另一個頁面 |
jsp:plugin | 為Java插件生成OBJECT或EMBED標(biāo)記 |
jsp:element | 動態(tài)定義XML元素。 |
jsp:attribute | 定義XML元素的屬性。 |
jsp:body | 定義XML元素的主體。 |
jsp:text | 在JSP頁面和文檔中寫入模板文本。 |
所有Action元素有兩個常用屬性: id
屬性和 scope
屬性。
Id屬性唯一標(biāo)識Action元素。我們可以使用id來引用JSP頁面中的動作。
Scope屬性標(biāo)識Action元素的生命周期。 scope
屬性有四個可能的值:
jsp:include動作將文件插入JSP頁面。語法如下所示:
<jsp:include page="relative URL" flush="true" />
include
指令在JSP頁面被翻譯成servlet時包括一個文件,而jsp:include動作在請求頁面時插入文件。
下表列出了與包含動作相關(guān)聯(lián)的屬性。
屬性 | 描述 |
---|---|
page | 要包括的頁面的相對URL。 |
flush | boolean屬性確定包含的資源在包含之前是否應(yīng)使其緩沖區(qū)刷新。 |
以下代碼顯示如何使用include動作。
這里是data.jsp。
<p> Today"s date: <%= (new java.util.Date()).toLocaleString()%> </p>
這里是main.jsp文件的內(nèi)容:
<html> <body> <jsp:include page="date.jsp" flush="true" /> </body> </html>
useBean
動作首先使用 id
和 scope
屬性搜索現(xiàn)有對象。如果沒有找到對象,它將創(chuàng)建指定的對象。
加載bean的最簡單的方法如下:
<jsp:useBean id="name" class="java.lang.String" />
<jsp:useBean id="yourName" class="com.yourCom.YourClassName" />
一旦bean被加載,我們可以使用 jsp:setProperty
和 jsp:getProperty
動作來修改和檢索bean屬性。
下表列出了與useBean動作相關(guān)聯(lián)的屬性。
描述 | 描述 |
---|---|
class | 定義bean的完整包名稱。 |
type | 指定變量的類型。 |
beanName | 命名加載的bean。 |
setProperty
動作設(shè)置Bean的屬性。
我們可以在jsp:useBean元素之外使用 jsp:setProperty
,如下所示。
<jsp:useBean id="myName" ... /> <jsp:setProperty name="myName" property="someProperty" .../>
或者我們可以在jsp:useBean
元素的正文中包含jsp:setProperty
,如下所示。
<jsp:useBean id="myName" ... > ... <jsp:setProperty name="myName" property="someProperty" .../> </jsp:useBean>
在上面的代碼中,只有在實例化新對象時才執(zhí)行jsp:setProperty,而不是如果找到現(xiàn)有對象。
下表列出了與 setProperty
動作相關(guān)聯(lián)的屬性。
描述 | 描述 |
---|---|
name | 將設(shè)置其屬性的bean的名稱。 |
property | 要設(shè)置的屬性。 值“*"表示名稱與bean屬性名稱匹配的所有請求參數(shù)都將傳遞到相應(yīng)的setter方法。 |
value | 要設(shè)置為屬性的值。 |
param | param屬性是請求參數(shù)的名稱。 |
getProperty
動作檢索給定屬性的值并將其轉(zhuǎn)換為字符串,然后將其插入到輸出中。
getProperty動作有兩個屬性,如下所示:
<jsp:useBean id="myName" ... /> ... <jsp:getProperty name="myName" property="someProperty" .../>
以下是與getProperty動作相關(guān)聯(lián)的必需屬性的列表。
描述 | 描述 |
---|---|
name | 必須先前已定義的Bean的名稱。 |
property | Bean屬性的名稱。 |
創(chuàng)建JavaBean如下。
package action; public class TestBean { private String message = "No message specified"; public String getMessage() { return(message); } public void setMessage(String message) { this.message = message; } }
將上面的代碼編譯為TestBean.class文件,并將TestBean.class復(fù)制到C:\apache-tomcat\webapps\WEB-INF\classes\action文件夾。
將以下代碼保存到hello.jsp文件。
<html> <body> <jsp:useBean id="test" class="action.TestBean" /> <jsp:setProperty name="test" property="message" value="Hello JSP..." /> <jsp:getProperty name="test" property="message" /> </body> </html>
forward
動作將請求轉(zhuǎn)發(fā)到另一個靜態(tài)頁面,或另一個JSP頁面或Java Servlet。
此動作的簡單語法如下:
<jsp:forward page="relativeURL | <%= expression %>" />
下表列出了 forward
動作所需的屬性。
屬性 | 描述 |
---|---|
page | 其他資源的相對網(wǎng)址。 |
以下代碼顯示如何使用 forward 動作。
date.jsp文件:
<p> Today"s date: <%= (new java.util.Date()).toLocaleString()%> </p>
這里是main.jsp文件:
<html> <body> <jsp:forward page="date.jsp" /> </body> </html>
plugin
動作可以將包含在<object>或<embed>標(biāo)簽中的Java applet插入JSP頁面。
以下代碼列出了使用插件動作的典型語法。
<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> Unable to initialize Java Plugin </jsp:fallback> </jsp:plugin>
< jsp:element>,< jsp:attribute> 和< jsp:body> 動作定義XML元素。
以下代碼顯示了如何動態(tài)定義XML元素。
<%@page language="java" contentType="text/html"%> <html xmlns="http://www.w3c.org/1999/xhtml" xmlns:jsp="http://java.sun.com/JSP/Page"> <body> <jsp:element name="xmlElement"> <jsp:attribute name="xmlElementAttr"> Value </jsp:attribute> <jsp:body> Body </jsp:body> </jsp:element> </body> </html>
更多建議: