1. 程式人生 > >JSP基本語法

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一起看。