JSP基本語法
在建立了第一個JSP程式後我們對JSP的語法有一個歸納總結。
JSP註釋
JSP註釋有兩種型別,一種註釋將會發送到客戶端瀏覽器,語法格式如下:
<!--comment-->
如:
<!--這是一個註釋,該註釋可以在客戶端看到-->
該註釋可以在瀏覽器中通過檢視HTML原始碼的方式看到,該類註釋類似於普通的HTML註釋。不同點在於,註釋中可以加入JSP表示式,來傳遞無法靜態顯示的資訊,如:
<!--現在時間是 <%= (new java.util.Date()).toLocalString() %>-->
另外一種是不會在客戶端瀏覽器顯示的註釋,語法格式如下:
<%--comment--%>
用法同上,這是這種註釋不能再客戶端瀏覽器檢視。
JSP宣告
用來定義JSP程式中需要使用的變數,方法等。語法格式如下:
<%!declaration%>
例如:
<%! int i; String c; %>
<%! int i = 2; %>
<%! public int sum(); %>
JSP表示式
語法格式如下:
<%=expression%>
例如:
圓周率: <%= Math.PI %> 當前時間: <%= (new java.util.Date()).toLocalString() %>
JSP程式段
Java程式段被包含在程式段內,其中也可以進行變數、方法等的宣告。格式如下:
<% code fragment %>
例如我們第一個JSP程式中的
<%
String name = request.getParameter("NAME");
String sex = request.getParameter("SEX");
%>
JSP指令
page指令
page指令通常用於JSP頁面頂端,用來定義JSP頁面的全域性屬性,如編碼,錯誤頁面等。語法示例:
<%@ page language="java" import="java.util.*" contentType=text/html;charst=gb2312" %>
常用的設定屬性如下:
- language=”java”,用於宣告指令碼語言的種類,通常都是”java”。
- import=” “,用於宣告JSP頁面中需要匯入的包,其作用等同於Java程式中的import。注:該指令可以單條同時匯入多個包,中間用逗號隔開。<%@ page import=”java.io.* ,java.util.*” %>。也可以分成多條包含。
- session=”true|false”,用於指明session物件是否可用(session是JSP的一個內建物件),預設為true。
- buffer=”none|8kb|sizekb”,用於指定輸出緩衝。該值不為none時,意為需要輸出緩衝,此時伺服器不會直接輸出內容到瀏覽器,而是等待快取滿或者指令碼執行完畢才會輸出顯示。該設定預設值為8kb。
- antoflush=”true|false”,指明快取是否自動清除。預設為true,若手動設定為false,快取溢位會丟擲異常。
- errorPage=”URL”,用於指定當前頁面產生異常後,重定向的頁面。
- isErrorPage=”true|false”,用於指定當前頁面可否用作其他頁面的錯誤處理頁面。預設值為false。
include指令
該指令用於在當前JSP頁面包含一個檔案,從而和當前頁面組成一個整體檔案。include中包含的檔案會在頁面編譯時被引入。並且,被包含頁面的任何一個部分發生變動,整個JSP頁面都會重新編譯。語法格式如下:
<%@ include file=" " %>
例如:
date.jsp
<%
Date date = new Date();
%>
<%=
date.toString()
%>
include.jsp
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%>
<html>
<head><title>JSP-welcome</title></head>
<body>
現在是:<%@ include file="date.jsp" %>
</body>
</html>
需要注意的是,原始檔和被包含檔案中的變數和方法名不能發生衝突,因為它們最終是會生成同一個檔案的,這樣將會導致編譯錯誤!
JSP動作指令
JSP動作指令可用來控制JSP容器的動作,可以動態插入檔案,重用javaBean元件,導向另一個頁面等。
JSP中有7種標準動作元素:
- jsp:include
- jsp:forward
- jsp:plugin
- jsp:param
- jsp:useBean
- jsp:getProperty
- jsp:setProperty
jsp:include
格式用法:
<jsp:include page=" " />
例如:
<%@ page language="java" import="java.util.*" contentType="text/html; charset=gb2312" %>
<html>
<head>
<title>Include動作指令示例</title>
</head>
<body>
<font size=2>
現在是:<jsp:include page="date.jsp" />
</font>
</body>
</html>
date.jsp:
<%@ page language="java" import="java.util.*" contentType="text/html; charset=gb2312" %>
<%
Date date = new Date();
%>
<%=
date.toString()
%>
上面說的include指令和這裡的include動作指令的作用都是包含一個檔案到當前頁面。他們的區別是什麼?
include指令包含的資源為靜態的。被包含的資源和當前JSP頁面是一個整體,資源相對路徑的解析發生在當前頁面被請求轉換為Servlet時。
include動作指令可以對動態資源進行包含。當前頁面和被包含的資源是兩個獨立的實體,在資源解析時,當前頁面會對被包含的JSP頁面傳送請求,被包含的JSP頁面對該請求物件進行處理,然後將處理結果返回。
jsp:forwrd
用來把當前頁面重定向到另一個頁面。將當前頁面的請求轉發給其他Web資源,同時使用者看到的地址是當前頁面地址,內容為重定向頁面的內容。其語法格式如下:
<jsp:forward page="URL" />
其中URL也可以是一個表示式<%=expression%>。
例如:
<%@ page language="java" contentType="text/html;charset=gb2312"%>
<html>
<head><title>JSP-welcome</title></head>
<body>
<jsp:forward page="login.jsp"/>
</body>
</html>
將當前頁面重定向到登入頁面。
jsp:param
該動作指令可以作為其他動作指令的子標籤,用來傳遞引數。語法格式如下:
<jsp:param name="" value="" />
比如配合<jsp:forward>
使用如下,首先在forpage.jsp中將頁面重定向到forpage1.jsp,並傳入一個引數para1 = hello;
然後再在forpage1中將頁面重定向到forpage2,再傳入引數para2 = world:
forpage.jsp
<html>
<head>
<title>forward配合param示例1</title>
</head>
<body>
<jsp:forward page="forpage1.jsp">
<jsp:param name="para1" value="hello" />
</jsp:forward>
</body>
</html>
forpage1.jsp
<html>
<head>
<title>forward配合param示例2</title>
</head>
<body>
<jsp:forward page="forpage2.jsp">
<jsp:param name="para2" value="world" />
</jsp:forward>
</body>
</html>
forpage2.jsp:
<html>
<head>
<title>forward配合param示例3</title>
</head>
<body>
para1 : <%=request.getParameter("para1")%><br>
para2 : <%=request.getParameter("para2")%>
</body>
</html>
這樣在forpage2中就得到了前面兩次傳過來的引數para1和para2,頁面將列印:
para1 : hello
para2 : world
jsp:plugin
下載一個外掛到客戶端,以便執行applet或bean。
jsp:useBean
jsp:getProperty
jsp:setProperty
以上三種通常都是和JavaBean配合使用的,後面結合JavaBean一起看。