JSP actions 使用您可以動態的插入一個文件,重用JavaBeans組件,前進到另一個頁面,或為Java 插件生成一個HTML。可以使用的action 有:
(1) jsp:include --在頁面被請求時包含進一個文件。
(2) jsp:useBean--找到或實例化一個JavaBean。
(3) jsp:setProperty--設置一個JavaBean屬性。
(4) jsp:getProperty--將JavaBean的屬性插入到輸出。
(5) jsp:forward--讓請求者可以向前到一個新的頁面。
(6) jsp:plugin--用OBJECT或EMBED標簽為Java plugins生成特定的浏覽器的代碼。
1、jsp:include Action
這個action使您可以在即將生成的頁面上包含進一些文件:
<jsp:include page="relative URL" flush="true" />
與include directive不同,這個action是在頁面被請求時才將文件包含進來,而,include directive則是在JSP頁面被轉換為servlet時包含文件。為了提高效率,include action做了一點小小的犧牲,即,它不允許被包含的頁面含有一般的JSP代碼(例如,不可設置HTTP頭),但是,它具有顯著的靈活性,如下面的JSP 代碼,它實現將四個不同的片段插入如下的頁面。每一次當標題改變的時候,您僅需修改這四個文件而無須更改主要的JSP 頁面。
WhatsNew.jsp
<HTML>
<HEAD>
<TITLE> JSP教程</TITLE>
<BODY >
<CENTER>
<TABLE BORDER=5 BGCOLOR="#EF8429">
<TR><TH CLASS="TITLE"> What"s New at Chinese comic sites</TABLE>
</CENTER>
<P>
Here is a summary of our four most recent news stories:
<OL>
<LI><jsp:include page="news/Item1.html" flush="true"/>
<LI><jsp:include page="news/Item2.html" flush="true"/>
<LI><jsp:include page="news/Item3.html" flush="true"/>
<LI><jsp:include page="news/Item4.html" flush="true"/>
</OL>
</BODY>
</HTML>
當然您可以定義自己? ML文件,但有一點請注意:
您應該將文件放到您的JSP目錄下的news目錄內。
jsp:useBean Action 的使用
一、 語法:
<jsp:useBean
id="beanInstanceName"
scope="page|request|session|application"
{ class="package.class" |
type="package.class" |
class="package.class" type="package.class" |
beanName="{package.class | <%= expression %>}" type="package.class"
}
{ /> |
> 其他元素
</jsp:useBean>
}
這個action使您能將一個JavaBean裝入一個JSP頁面。這是一個非常有用的能力,因為它使您可以使用可重用的JAVA類而不需犧牲性能。最簡單的語法用於指定一個bean:
<jsp:useBean id="name" class="package.class" />
這通常意味著“實例化一個類的對象通過指定一個類,並將之與一個通過id指定名稱的變量綁定”。然而,就象我們看到的,您可以指定一個scope屬性來使得bean不僅僅與當前的頁面相聯系。在這種情形下,得到一個對已存在的bean的引用是非常有用的,而且,僅當沒有相同的id和scope的bean存在時才創建一個新的。現在,您已有了bean,您可以通過jsp:setProperty來修改它,或者,通過使用之前用id指定的名字來使用scriptlet或明確的調用方法。當您說“這個bean有一個稱為foo的X類型的屬性”,您真正的意思是“這個類有一個稱為getFoo的方法,它返回X類型的某類值,還有另一個方法稱為setFoo,它以X為參數。”這jsp:setProperty action 將在下一單元詳細的介紹,但是現在您既可以給出一個明確的值,給出一個屬性來說明此值是從request的參數繼承而來,也可以僅僅列出屬性來標志此值應該從與屬性名同名的參數繼承而來。您可以通過調用適用的getXxx方法,或更普遍的,使用jsp:getProperty action,來得到已存在的JSP表達式或scriptlet屬性。
請注意,為bean指定的類必須在服務器的規則的類路徑下,而不是用來保留當改變時自動裝載的類的路徑。例如,在Java Web Server上,它和它所用的類必須到類的目錄或在lib目錄下的一個jar文件內,而不是在servlets的目錄下。
下面讓我們來看一個非常簡單的例子,它裝載一個bean並且設置/得到一個簡單的串參數。
BeanTest.jsp
<HEAD>
<TITLE>Reusing JavaBeans in JSP</TITLE>
</HEAD>
<BODY>
<CENTER>
<TABLE BORDER=5>
<TR><TH CLASS="TITLE">
Reusing JavaBeans in JSP</TABLE>
</CENTER>
<P>
<jsp:useBean id="test" class="hall.SimpleBean" />
<jsp:setProperty name="test"
property="message"
value="Hello WWW" />
<H1>Message: <I>
<jsp:getProperty name="test" property="message" />
</I></H1>
</BODY>
SimpleBean.java
以下是bean的原代碼:
package hall;
public class SimpleBean {
private String message = "No message specified";
public String getMessage() {
return(message);
}
public void setMessage(String message) {
this.message = message;
}
}
運行結果為:頁面輸出: Reusing JavaBeans in JSP
Message:Hello WWW