JSP文法介紹
來源:互聯網
上載者:User
js|文法 JSP頁面中的元素
一,釋:三種注釋,<!-- -->會列印到用戶端,剩下的兩種被JSP引擎忽略。
二,模板元素:指JSP中的靜態HTLM或者XML內容,它影響頁面的結構和美觀程度,但那是美工的事,與程式員無關。
三,指令碼元素:包括聲明(Declaration),運算式(Expression)和Scriptlets,除去一些微小的差異外,Scriptlets完全可以取代前兩種的功能。
四,指令元素:
JSP指令是JSP向JSP包容器發送的訊息。他們用來設定全域值,如類聲明,要實現的方法,輸出內容類型等,並不向客戶口產生任何輸出。它隻影響本JSP檔案。
1, age指令:用來定義和操作許多重要的頁面的屬性,這些屬性與JSP包容器進行通訊。在JSP的任何地方,以任何順序,一個頁面可以包含任意數量的page指令。但除了import指令外,其它的指令只能出現一次。幾個重要的page指令:
<% @ page import =”java.io.*,java.util.*”%>//匯入包
<% @ buffer=” ”%>//定義對客戶輸出資料流的緩衝模型。
<% @ info=” ”%>//可以使用servlet.getServletInfo()得到該字串
<% @ isErrorPage=” ”%>
<% @ errorPage=” ”%>
<% @ isThreadSafe=” ” %>//JSP檔案是否能多線程使用
2, include指令:ASP中用的很多了吧,後面再介紹。
3, taglib指令:詳見作者以前文章《Struts中的自訂標籤》。
五,動作元素
JSP動作元素是使用XML文法寫成的,它是在請求處理階段起作用的,它影響JSP運行時的行為和發送給客戶的應答。它們應當由所有的包容器提供,而不管它們的實現如何。
從效果上來說,一個標準動作是能夠嵌入到JSP頁面之中的一個標記。在頁面被編譯為servlet期間,當包容器遇到這個標記時,就用相應於請求的預定義的任務的JAVA代碼來代替它。
1,<jsp:param>:為其他標籤提供附加資訊。
<jsp:param name=”paramName” value=”paramValue”/>
它與<jsp:include>,<jsp:forward>,<jsp:plugin>一起使用。
2,<jsp:include>
如果包含是靜態檔案,那麼僅僅是把內容加到JSP檔案中去,這個檔案不會被JSP編譯器執行,如果是動態檔案,將會被JSP編譯器材執行。
理論上<% @ page include=””%>與<jsp:include>有所不同,我把它叫做自動重新整理,但實際上使用較高版本的tomcat時,他們的功能是一樣的。
下面是這一標記的範例程式碼:
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<html>
<body>
<%@ include file="static.html" %>
<%//只是把檔案包含進來%>
<a href="two.jsp">goto two--></a><br>
this examples show include works
<jsp:include page="two.jsp" flush="true">
<jsp:param name="a1" value="<%=request.getParameter("name")%>" />
<jsp:param name="a2" value="<%=request.getParameter("password")%>" />
</jsp:include>
</body>
</html>
ßthis is static.html>
<html>
<body>
<form method=post action="jsp_include.jsp">
<table>
<tr>
<td>please input your name:</td></tr>
<tr><td>
<input type=text name=name>
</td></tr>
<tr><td>input you password:</td>
<td>
<input type=text name=password>
</td>
</tr>
<tr>
<td>
<input type=submit value=login>
</td>
</tr>
</table>
</body>
</html>
ßthis is a two.jsp-->
<%@ page contentType="text/html; charset=gb2312" language="java" %>
舉例說明include的工作原理:
<br>
this is a1=<%=request.getParameter("a1")%>
<br>
this is a2=<%=request.getParameter("a2")%>
<br>
<% out.println("hello from two.jsp");%>
3,<jsp:forward> 是允許將請求轉寄到另一個JSP,Servlet,或者靜態資源檔案。當要根據不同的請求,轉換到不同的視圖時,這個動作特別有用。但請求被轉向到的資源必須位於同JSP發送請求相同的上下文環境中。
<jsp:forward page="url">
<jsp:param name="paramName" value="paramValue"/>
</jsp:forward>
4,<jsp:useBean> 它用來執行個體化JavaBean,或者定位一個已經存在的Bean執行個體,並且把它賦給一個變數名(或者id)。並給定一個具體的範圍來確定對象的生命週期。
<jsp:useBean id=”myclassname” scope=”page” class=”Class1” type=”Class2”/ >
等價於:Class2 myclassname=new Class1();
page:表示對象與到該頁面的特定的請求相關聯。
Request:表示對象與到該頁面的特定的客戶請求相聯絡。如果請求被使用<jsp:forward>標準動作發送到別的jsp,或者使用<jsp:include>動作包含了另外的JSP,則在所涉及的JSP中,該對象是有效。
Session:在當前會話中,在由同一個客戶發送的任何的請求中,該對象都是有效。
Application:在同一個web應用程式中,在任何的JSP頁面中,該對象都是有效。
5,<jsp:setProperty> 與<jsp:getProperty>
與useBean一起協作,用來設定Bean的簡單屬性和索引屬性,因為它的使用太頻繁了,那我就少說點吧,大家在具體代碼中學習。
<jsp:serproperty name=”beanname” BopertyDetails />
A, property=*;
B,property=”propertyName” param=”parameterName”
在Bean中的屬性名稱與Request中參數名不同時使用這個方法。
C,property=”propertyName”
Bean中的屬性與Request中的參數名必須相同。
D,property=”propertyName” value=”propertyValue”