JSP元素
(1) 指令元素
發生時間:在編譯時間被編譯執行
(2) 指令碼元素
(3) 動作元素
發生時間:每次有用戶端請求時都會被執行一次
• 動作是特殊的標記,通過一個動作標記可以實現多行Java代碼實現的效果。可以動態插入檔案、重用JavaBean組件、導向另一個頁面等。
• 動作元素和指令元素不同,動作元素是在用戶端請求時動態執行的,每次有用戶端請求時可能都會被執行一次,而指令元素是在編譯時間被編譯執行,它只會被編譯一次
動作元素分類:
1、<jsp:useBean>————jsp是首碼,useBean是名字
功能:建立或者返回一個實體Bean組件的實體物件
JavaBean需要的兩個條件:
(1) 類是公有的,有一個預設的無參構造方法
(2) 在類中可以定義若干個私人屬性,但是需要通過公有的getter/setter方法對這些屬性進行賦值和取值,並且getter/setter方法不能重載
注意:
• 在編寫上,JavaBean的類必須使用package語句;
• public、無參構造方法;
• getter/setter方法必須是public的,分別以set及get開頭,方法命名上遵循Java的命名規範。
• 當屬性類型為boolean類型的時候,getter方法的get可以用is代替。
JavaBean包含的一些其它方法:
(1)<jsp:useBean>
– useBean動作用於建立引用,並將現有的Bean組件嵌入JSP 。
– useBean的文法:
<jsp:useBean id="BeanName" class="BeanClass" scope="page|request|session|application"/>
例子:
<!-- 作用:
Book book=(Book)session.getAttribute("book");
if(book!=null){
Book book=new Book();
Session.setAttribute(“book”,book);
}
return book;
通過getAttribute方法擷取book對象,如果book是空的則建立該對象,並且將該對象
設定到session的 範圍範圍之內,如果不為空白,從session中擷取了引用,所有return -->
<jsp:useBean id="book" class=cn.csdn.beans.Book" scope="session"></jsp:useBean>
(2)<jsp:setProperty>
– setProperty動作用於設定useBean中指定的Bean的屬性的值。setProperty動作指定JavaBean的名稱、屬性名稱、屬性值和參數,用於賦給Bean的屬性。
– setProperty的文法:
<jsp:setProperty name="BeanAlias"
property="PropertyName" value="Value"
param="Parameter“
<jsp:setProperty property="bean對象的屬性名稱" name="bean對象的名字" value="bean對象的值"/>
執行個體:
<jsp:setProperty name=“book” property=“name” value=“Java SE程式設計精講”/>
等價於<%book.setName(“Java SE程式設計精講”);%>
(3)<jsp:getProperty>
– getProperty動作用於擷取Bean中指定的屬性中的值。系統先將收到的值轉換為字串,然後再將其作為輸出結果發送。
– getProperty的文法:
<jsp:getProperty name="BeanAlias" property="PropertyName"/>
<jsp:getProperty property="bean對象的屬性名稱" name="bean對象的名字"/>
Out.println(bean對象.getxxx());//具有輸出的功能
例如,<jsp:getProperty name=“book” property=“name” />
等價於:<%= book.getName() %>
使用JavaBean的好處
– JavaBean技術更有利於Web開發的代碼複用。因為寫在JSP頁面中的Java程式碼片段重用性要差一些,而JavaBean是一個Java類,更方便在其他Web應用中複用。
– JavaBean技術還有利於開發項目的角色分工,讓頁面設計人員和程式編寫人員更容易地修改JSP頁面中自己所管轄的內容,而不必互相干擾。
2、<jsp:include>
– include動作用於將其他HTML頁面或JSP頁面中的內容合并到當前頁面,或將其中的檔案插入到當前頁面。
– 不帶參數的include動作:
<jsp:include page="weburl" flush="true"/>
– 帶參數的include動作:
<jsp:include page="weburl" flush="true">
<jsp:param name="ParamName" value="ParamValue"/>
【使用include動作的JSP頁面,通過request.getParameter(“name”)獲得被包含檔案傳遞的參數值。】
<jsp:include>
include指令和<jsp:include>動作的區別
– include指令讀入指定頁面的內容並把這些內容和原來的頁面融合到一起。這個過程發生在JSP轉化成Servlet的階段,最終所合成的JSP檔案被Servlet容器轉化成Servlet。如果一個JSP頁面使用include指令包含了另一個JSP頁面,最終也只產生一個Servlet的Java源檔案和一個class檔案。相當於兵合一處,將打一方。
– 使用<jsp:include>動作包含其他JSP頁面,本質是調用了被包含檔案所轉化的Servlet對象的jspService()方法。即所被包含的JSP檔案也對應有產生的Servlet源檔案和class檔案。如果一個JSP頁面使用include動作包含了另一個JSP頁面,會產生兩個Servlet源檔案和兩個class檔案。
這兩種包含都可以包含jsp頁面和html頁面
動作元素包含:
<jsp:include page=”被包含的檔案的URL地址”>包含動作會執行多次,每一個用戶端提交請求的時候,會有兩個servlet產生
指令元素包含:
<%@include file=” 被包含的檔案的URL地址”> 發生在轉換階段,只做一次,只會有一個servlet產生
3、<jsp:forward>
– forward動作用來把當前的JSP頁面重新導向到另一個頁面(同一個Web應用中的HTML檔案、JSP頁面、Servlet)。
– 地址還是當前頁面的地址。內容則是另一個頁的內容。
– 不帶參數的forward動作:<jsp:forward page="url"/>
– 帶參數的include動作:
<jsp:forward page="url">
<jsp:param name="ParamName" value="ParamValue"/>
</jsp:forward>
使用<jsp:forward>動作轉向,和Servlet中的重新導向代碼完全等同。
4、<jsp:param>
– param提供其他JSP動作的名稱/值資訊。
– param文法:
<jsp:param name="ParamName" value="ParamValue"/>
5、<jsp:plugin>
– 用於串連用戶端的Applet和Bean外掛程式。在處理這個動作的時候,根據用戶端瀏覽器的不同,JSP在執行以後將分別輸出為OBJECT或EMBED這兩個不同的HTML元素。
JSP有三種注釋方式
1、 HTML注釋(輸出注釋):指在用戶端查看原始碼時能看見注釋。例如,
<!-- this is an html comment.it will show up int the response. -->
2、 JSP頁注釋(隱藏注釋):指注釋雖然寫在JSP程式中,但不會發送給客戶,因此在用戶端查看原始碼時不能看見注釋。這樣的注釋在JSP編譯時間被忽略掉。
<%--this is a JSP comment.it will only be seen in jsp code--%>
3、 Java注釋:只能出現在Java代碼區中,不允許直接出現在頁面中。//單行注釋 /*多行注釋*/