腳本程序能夠包含任意量的Java語句、變量、方法或表達式,只要它們在腳本語言中是有效的。html
腳本程序的語法格式:java
<% 代碼片斷 %>
或者,您也能夠編寫與其等價的XML語句,就像下面這樣:web
<jsp:scriptlet>
代碼片斷
</jsp:scriptlet>
若是咱們要在頁面正常顯示中文,咱們須要在 JSP 文件頭部添加如下代碼:<>express
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
個聲明語句能夠聲明一個或多個變量、方法,供後面的Java代碼使用。在JSP文件中,您必須先聲明這些變量和方法而後才能使用它們。瀏覽器
JSP聲明的語法格式:緩存
<%! declaration; [ declaration; ]+ ... %>
或者,您也能夠編寫與其等價的XML語句,就像下面這樣:服務器
<jsp:declaration>
代碼片斷
</jsp:declaration>
程序示例:cookie
<%! int i = 0; %> <%! int a, b, c; %> <%! Circle a = new Circle(2.0); %>
一個JSP表達式中包含的腳本語言表達式,先被轉化成String,而後插入到表達式出現的地方。session
因爲表達式的值會被轉化成String,因此您能夠在一個文本行中使用表達式而不用去管它是不是HTML標籤。app
表達式元素中能夠包含任何符合Java語言規範的表達式,可是不能使用分號來結束表達式。
JSP表達式的語法格式:
<%= 表達式 %>
一樣,您也能夠編寫與之等價的XML語句:
<jsp:expression>
表達式
</jsp:expression>
程序示例:
<%@ 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> <p> 今天的日期是: <%= (new java.util.Date()).toLocaleString()%> </p> </body> </html>
語法 | 描述 |
---|---|
<%-- 註釋 --%> | JSP註釋,註釋內容不會被髮送至瀏覽器甚至不會被編譯 |
<!-- 註釋 --> | HTML註釋,經過瀏覽器查看網頁源代碼時能夠看見註釋內容 |
<\% | 表明靜態 <%常量 |
%\> | 表明靜態 %> 常量 |
\' | 在屬性中使用的單引號 |
\" | 在屬性中使用的雙引號 |
JSP指令用來設置與整個JSP頁面相關的屬性。
JSP指令語法格式:
<%@ directive attribute="value" %>
三種指令:
指令 | 描述 |
---|---|
<%@ page ... %> | 定義頁面的依賴屬性,好比腳本語言、error頁面、緩存需求等等 |
<%@ include ... %> | 包含其餘文件 |
<%@ taglib ... %> | 引入標籤庫的定義,能夠是自定義標籤 |
例如:
<%@include file="/tag.jsp"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
JSP行爲標籤使用XML語法結構來控制servlet引擎。它可以動態插入一個文件,重用JavaBean組件,引導用戶去另外一個頁面,爲Java插件產生相關的HTML等等。
行爲標籤只有一種語法格式,它嚴格遵照XML標準:
<jsp:action_name attribute="value" />
行爲標籤基本上是一些預先就定義好的函數,下表羅列出了一些可用的JSP行爲標籤::
語法 | 描述 |
---|---|
jsp:include | 用於在當前頁面中包含靜態或動態資源 |
jsp:useBean | 尋找和初始化一個JavaBean組件 |
jsp:setProperty | 設置 JavaBean組件的值 |
jsp:getProperty | 將 JavaBean組件的值插入到 output中 |
jsp:forward | 從一個JSP文件向另外一個文件傳遞一個包含用戶請求的request對象 |
jsp:plugin | 用於在生成的HTML頁面中包含Applet和JavaBean對象 |
jsp:element | 動態建立一個XML元素 |
jsp:attribute | 定義動態建立的XML元素的屬性 |
jsp:body | 定義動態建立的XML元素的主體 |
jsp:text | 用於封裝模板數據 |
<jsp:include page="date.jsp" flush="true" />
JSP支持九個自動定義的變量,江湖人稱隱含對象。這九個隱含對象的簡介見下表:
對象 | 描述 |
---|---|
request | HttpServletRequest類的實例 |
response | HttpServletResponse類的實例 |
out | PrintWriter類的實例,用於把結果輸出至網頁上 |
session | HttpSession類的實例 |
application | ServletContext類的實例,與應用上下文有關 |
config | ServletConfig類的實例 |
pageContext | PageContext類的實例,提供對JSP頁面全部對象以及命名空間的訪問 |
page | 相似於Java類中的this關鍵字 |
Exception | Exception類的對象,表明發生錯誤的JSP頁面中對應的異常對象 |
page、request、session、application
這四大做用域,其實就是其九大內置對象中的四個,爲何說他們也是JSP的四大做用域呢?由於這四個對象都能存儲數據,好比request.setAttribute()注意和request.setParameter()區分開來,一個是存儲在域中的、一個是請求參數,session.setAttribute()、application其實就是SerlvetContext,天然也有setAttribute()方法。而page做用域的操做就須要依靠pageContext對象來進行了。在上面咱們也有提到JSP的四大做用域,
page做用域:表明變量只能在當前頁面上生效
request:表明變量能在一次請求中生效,一次請求可能包含一個頁面,也可能包含多個頁面,好比頁面A請求轉發到頁面B
session:表明變量能在一次會話中生效,基本上就是能在web項目下都有效,session的使用也跟cookie有很大的關係。通常來講,只要瀏覽器不關閉,cookie就會一直生效,cookie生效,session的使用就不會受到影響。
application:表明變量能一個應用下(多個會話),在服務器下的多個項目之間都可以使用。好比baidu、wenku等共享賬號。
參考:http://www.javashuo.com/article/p-rkzyoiyu-eb.html