入門
- 語法格式
<% 代碼片段 %>
- 中文編碼
<%@ 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
- 注釋
<%-- 該部分注釋在網(wǎng)頁中不會被顯示--%>
JSP指令
<%@ directive attribute="value" %>
page
Page指令為容器提供當前頁面的使用說明。一個JSP頁面可以包含多個page指令妆艘。<%@ page attribute="value" %>
- buffer 指定out對象使用緩沖區(qū)的大小
- autoFlush 控制out對象的 緩存區(qū)
- contentType 指定當前JSP頁面的MIME類型和字符編碼
- errorPage 指定當JSP頁面發(fā)生異常時需要轉(zhuǎn)向的錯誤處理頁面
- isErrorPage 指定當前頁面是否可以作為另一個JSP頁面的錯誤處理頁面
- extends 指定servlet從哪一個類繼承
- import 導(dǎo)入要使用的Java類
- info 定義JSP頁面的描述信息
- isThreadSafe 指定對JSP頁面的訪問是否為線程安全
- language 定義JSP頁面所用的腳本語言,默認是Java
- session 指定JSP頁面是否使用session
- isELIgnored 指定是否執(zhí)行EL表達式
- isScriptingEnabled 確定腳本元素能否被使用
include
JSP可以通過include指令來包含其他文件像云。被包含的文件可以是JSP文件冯乘、HTML文件或文本文件毕贼。包含的文件就好像是該JSP文件的一部分,會被同時編譯執(zhí)行畅蹂。<%@ include file="文件相對 url 地址" %>
taglib
JSP API允許用戶自定義標簽,一個自定義標簽庫就是自定義標簽的集合旬迹。
Taglib指令引入一個自定義標簽集合的定義火惊,包括庫路徑、自定義標簽奔垦。
<%@ taglib uri="uri" prefix="prefixOfTag" %>
JSP ACTION
利用JSP動作可以動態(tài)地插入文件屹耐、重用JavaBean組件、把用戶重定向到另外的頁面椿猎、為Java插件生成HTML代碼惶岭。
所有的動作要素都有兩個屬性
- id屬性:
id屬性是動作元素的唯一標識,可以在JSP頁面中引用犯眠。動作元素創(chuàng)建的id值可以通過PageContext來調(diào)用俗他。 - scope屬性:
該屬性用于識別動作元素的生命周期。 id屬性和scope屬性有直接關(guān)系阔逼,scope屬性定義了相關(guān)聯(lián)id對象的壽命兆衅。 scope屬性有四個可能的值: (a) page, (b)request, (c)session, 和 (d) application。
jsp:include
用于在當前頁面中包含靜態(tài)或動態(tài)資源: <jsp:include page="相對 URL 地址" flush="true" />
-
page
包含在頁面中的相對URL地址嗜浮。 -
flush
布爾屬性羡亩,定義在包含資源前是否刷新緩存區(qū)。
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用來設(shè)置已經(jīng)實例化的Bean對象的屬性辞居,有兩種用法。首先蛋勺,你可以在jsp:useBean元素的外面(后面)使用jsp:setProperty瓦灶,如下所示:
<jsp:useBean id="myName" ... />
<jsp:setProperty name="myName" property="someProperty" .../>
此時,不管jsp:useBean是找到了一個現(xiàn)有的Bean抱完,還是新創(chuàng)建了一個Bean實例贼陶,jsp:setProperty都會執(zhí)行。第二種用法是把jsp:setProperty放入jsp:useBean元素的內(nèi)部巧娱,如下所示:
<jsp:useBean id="myName" ... >
<jsp:setProperty name="myName" property="someProperty" .../>
</jsp:useBean>
此時碉怔,jsp:setProperty只有在新建Bean實例時才會執(zhí)行,如果是使用現(xiàn)有實例則不執(zhí)行jsp:setProperty禁添。
jsp:setProperty動作有下面四個屬性,如下表:
-
name
name屬性是必需的撮胧。它表示要設(shè)置屬性的是哪個Bean。 -
property
property屬性是必需的老翘。它表示要設(shè)置哪個屬性芹啥。有一個特殊用法:如果property的值是"*"锻离,表示所有名字和Bean屬性名字匹配的請求參數(shù)都將被傳遞給相應(yīng)的屬性set方法。 -
value
value 屬性是可選的叁征。該屬性用來指定Bean屬性的值纳账。字符串數(shù)據(jù)會在目標類中通過標準的valueOf方法自動轉(zhuǎn)換成數(shù)字逛薇、boolean捺疼、Boolean、 byte永罚、Byte啤呼、char、Character呢袱。例如官扣,boolean和Boolean類型的屬性值(比如"true")通過 Boolean.valueOf轉(zhuǎn)換,int和Integer類型的屬性值(比如"42")通過Integer.valueOf轉(zhuǎn)換羞福。 value和param不能同時使用惕蹄,但可以使用其中任意一個。 -
param
param 是可選的治专。它指定用哪個請求參數(shù)作為Bean屬性的值卖陵。如果當前請求沒有參數(shù),則什么事情也不做张峰,系統(tǒng)不會把null傳遞給Bean屬性的set方法泪蔫。因此,你可以讓Bean自己提供默認屬性值喘批,只有當請求參數(shù)明確指定了新值時才修改默認屬性值撩荣。
jsp:getProperty
jsp:getProperty動作提取指定Bean屬性的值,轉(zhuǎn)換成字符串饶深,然后輸出餐曹。語法格式如下:
<jsp:useBean id="myName" ... />
<jsp:getProperty name="myName" property="someProperty" .../>
下表是與getProperty相關(guān)聯(lián)的屬性:
-
name
要檢索的Bean屬性名稱。Bean必須已定義敌厘。 -
property
表示要提取Bean屬性的值
jsp:forward
從一個JSP文件向另一個文件傳遞一個包含用戶請求的request對象
<jsp:forward page="相對 URL 地址" />
-
page
page屬性包含的是一個相對URL凸主。page的值既可以直接給出,也可以在請求的時候動態(tài)計算额湘,可以是一個JSP頁面或者一個 Java Servlet.
jsp:plugin
用來根據(jù)瀏覽器的類型卿吐,插入通過Java插件 運行Java Applet所必需的OBJECT或EMBED元素。如果需要的插件不存在锋华,它會下載插件嗡官,然后執(zhí)行Java組件。 Java組件可以是一個applet或一個JavaBean毯焕。plugin動作有多個對應(yīng)HTML元素的屬性用于格式化Java 組件衍腥。param元素可用于向Applet 或 Bean 傳遞參數(shù)磺樱。
以下是使用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>動作元素動態(tài)定義XML元素竹捉。動態(tài)是非常重要的,這就意味著XML元素在編譯時是動態(tài)生成的而非靜態(tài)尚骄。
以下實例動態(tài)定義了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>模板數(shù)據(jù)</jsp:text>
JSP內(nèi)置對象
- request HttpServletRequest類的實例
- response HttpServletResponse類的實例
- out PrintWriter類的實例,用于把結(jié)果輸出至網(wǎng)頁上
- session HttpSession類的實例
- application ServletContext類的實例倔丈,與應(yīng)用上下文有關(guān)
- config ServletConfig類的實例
- pageContext PageContext類的實例憨闰,提供對JSP頁面所有對象以及命名空間的訪問
- page 類似于Java類中的this關(guān)鍵字
- Exception Exception類的對象,代表發(fā)生錯誤的JSP頁面中對應(yīng)的異常對象
控制流
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("星期六");
}
%>
循環(huán)語句
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++;%>
<%}%>