JSP常用語法

weixin_34249678發表於2017-10-24

入門

  • 語法格式 <% 程式碼片段 %>
  • 中文編碼 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  • 宣告 <%! int a = 0; %>
  • 表示式 <%= (new java.util.Date()).toLocaleString()%> //今天的日期是: 2016-6-25 13:40:07
  • 註釋 <%-- 該部分註釋在網頁中不會被顯示--%>

JSP指令

<%@ directive attribute="value" %>

page

Page指令為容器提供當前頁面的使用說明。一個JSP頁面可以包含多個page指令。<%@ page attribute="value" %>

  • buffer 指定out物件使用緩衝區的大小
  • autoFlush 控制out物件的 快取區
  • contentType 指定當前JSP頁面的MIME型別和字元編碼
  • errorPage 指定當JSP頁面發生異常時需要轉向的錯誤處理頁面
  • isErrorPage 指定當前頁面是否可以作為另一個JSP頁面的錯誤處理頁面
  • extends 指定servlet從哪一個類繼承
  • import 匯入要使用的Java類
  • info 定義JSP頁面的描述資訊
  • isThreadSafe 指定對JSP頁面的訪問是否為執行緒安全
  • language 定義JSP頁面所用的指令碼語言,預設是Java
  • session 指定JSP頁面是否使用session
  • isELIgnored 指定是否執行EL表示式
  • isScriptingEnabled 確定指令碼元素能否被使用

include

JSP可以通過include指令來包含其他檔案。被包含的檔案可以是JSP檔案、HTML檔案或文字檔案。包含的檔案就好像是該JSP檔案的一部分,會被同時編譯執行。<%@ include file="檔案相對 url 地址" %>

taglib

JSP API允許使用者自定義標籤,一個自定義標籤庫就是自定義標籤的集合。
Taglib指令引入一個自定義標籤集合的定義,包括庫路徑、自定義標籤。
<%@ taglib uri="uri" prefix="prefixOfTag" %>

JSP ACTION

利用JSP動作可以動態地插入檔案、重用JavaBean元件、把使用者重定向到另外的頁面、為Java外掛生成HTML程式碼。
所有的動作要素都有兩個屬性

  • id屬性:
    id屬性是動作元素的唯一標識,可以在JSP頁面中引用。動作元素建立的id值可以通過PageContext來呼叫。
  • scope屬性:
    該屬性用於識別動作元素的生命週期。 id屬性和scope屬性有直接關係,scope屬性定義了相關聯id物件的壽命。 scope屬性有四個可能的值: (a) page, (b)request, (c)session, 和 (d) application。

jsp:include

用於在當前頁面中包含靜態或動態資源: <jsp:include page="相對 URL 地址" flush="true" />

  • page 包含在頁面中的相對URL地址。
  • flush 布林屬性,定義在包含資源前是否重新整理快取區。

jsp:useBean

用來載入一個將在JSP頁面中使用的JavaBean
<jsp:useBean id="name" class="package.class" />

  • class 指定Bean的完整包名。
  • type 指定將引用該物件變數的型別。
  • beanName 通過 java.beans.Beans 的 instantiate() 方法指定Bean的名字。
    在給出具體例項前,讓我們先來看下 jsp:setProperty 和 jsp:getProperty 動作元素

jsp:setProperty

jsp:setProperty用來設定已經例項化的Bean物件的屬性,有兩種用法。首先,你可以在jsp:useBean元素的外面(後面)使用jsp:setProperty,如下所示:

<jsp:useBean id="myName" ... />
<jsp:setProperty name="myName" property="someProperty" .../>

此時,不管jsp:useBean是找到了一個現有的Bean,還是新建立了一個Bean例項,jsp:setProperty都會執行。第二種用法是把jsp:setProperty放入jsp:useBean元素的內部,如下所示:

<jsp:useBean id="myName" ... >
   <jsp:setProperty name="myName" property="someProperty" .../>
</jsp:useBean>

此時,jsp:setProperty只有在新建Bean例項時才會執行,如果是使用現有例項則不執行jsp:setProperty。
jsp:setProperty動作有下面四個屬性,如下表:

  • name name屬性是必需的。它表示要設定屬性的是哪個Bean。
  • property property屬性是必需的。它表示要設定哪個屬性。有一個特殊用法:如果property的值是"*",表示所有名字和Bean屬性名字匹配的請求引數都將被傳遞給相應的屬性set方法。
  • value value 屬性是可選的。該屬性用來指定Bean屬性的值。字串資料會在目標類中通過標準的valueOf方法自動轉換成數字、boolean、Boolean、 byte、Byte、char、Character。例如,boolean和Boolean型別的屬性值(比如"true")通過 Boolean.valueOf轉換,int和Integer型別的屬性值(比如"42")通過Integer.valueOf轉換。   value和param不能同時使用,但可以使用其中任意一個。
  • param param 是可選的。它指定用哪個請求引數作為Bean屬性的值。如果當前請求沒有引數,則什麼事情也不做,系統不會把null傳遞給Bean屬性的set方法。因此,你可以讓Bean自己提供預設屬性值,只有當請求引數明確指定了新值時才修改預設屬性值。

jsp:getProperty

jsp:getProperty動作提取指定Bean屬性的值,轉換成字串,然後輸出。語法格式如下:

<jsp:useBean id="myName" ... />
<jsp:getProperty name="myName" property="someProperty" .../>

下表是與getProperty相關聯的屬性:

  • name 要檢索的Bean屬性名稱。Bean必須已定義。
  • property 表示要提取Bean屬性的值

jsp:forward

從一個JSP檔案向另一個檔案傳遞一個包含使用者請求的request物件
<jsp:forward page="相對 URL 地址" />

  • page page屬性包含的是一個相對URL。page的值既可以直接給出,也可以在請求的時候動態計算,可以是一個JSP頁面或者一個 Java Servlet.

jsp:plugin

用來根據瀏覽器的型別,插入通過Java外掛 執行Java Applet所必需的OBJECT或EMBED元素。如果需要的外掛不存在,它會下載外掛,然後執行Java元件。 Java元件可以是一個applet或一個JavaBean。plugin動作有多個對應HTML元素的屬性用於格式化Java 元件。param元素可用於向Applet 或 Bean 傳遞引數。
以下是使用plugin 動作元素的典型例項:

<jsp:plugin type="applet" codebase="dirname" code="MyApplet.class"
                           width="60" height="80">
   <jsp:param name="fontcolor" value="red" />
   <jsp:param name="background" value="black" />
 
   <jsp:fallback>
      Unable to initialize Java Plugin
   </jsp:fallback>
 
</jsp:plugin>

jsp:element jsp:attribute jsp:body

<jsp:element> 、 <jsp:attribute>、 <jsp:body>動作元素動態定義XML元素。動態是非常重要的,這就意味著XML元素在編譯時是動態生成的而非靜態。
以下例項動態定義了XML元素:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鳥教程(runoob.com)</title>
</head>
<body>
<jsp:element name="xmlElement">
<jsp:attribute name="xmlElementAttr">
   屬性值
</jsp:attribute>
<jsp:body>
   XML 元素的主體
</jsp:body>
</jsp:element>
</body>
</html>

jsp:text

<jsp:text>動作元素允許在JSP頁面和文件中使用寫入文字的模板,語法格式如下:
<jsp:text>模板資料</jsp:text>

JSP內建物件

  • request HttpServletRequest類的例項
  • response HttpServletResponse類的例項
  • out PrintWriter類的例項,用於把結果輸出至網頁上
  • session HttpSession類的例項
  • application ServletContext類的例項,與應用上下文有關
  • config ServletConfig類的例項
  • pageContext PageContext類的例項,提供對JSP頁面所有物件以及名稱空間的訪問
  • page 類似於Java類中的this關鍵字
  • Exception Exception類的物件,代表發生錯誤的JSP頁面中對應的異常物件

控制流

IF

<% if (day == 1 | day == 7) { %>
      <p>今天是週末</p>
<% } else { %>
      <p>今天不是週末</p>
<% } %>

switch

<% 
switch(day) {
case 0:
   out.println("星期天");
   break;
case 1:
   out.println("星期一");
   break;
case 2:
   out.println("星期二");
   break;
case 3:
   out.println("星期三");
   break;
case 4:
   out.println("星期四");
   break;
case 5:
   out.println("星期五");
   break;
default:
   out.println("星期六");
}
%>

迴圈語句

for

<%for ( fontSize = 1; fontSize <= 3; fontSize++){ %>
   <font color="green" size="<%= fontSize %>">
    菜鳥教程
   </font><br />
<%}%>

while

<%while ( fontSize <= 3){ %>
   <font color="green" size="<%= fontSize %>">
    菜鳥教程
   </font><br />
<%fontSize++;%>
<%}%>