JSP聲明
一個聲明語句可以聲明一個或多個變量、方法,供後面的Java代碼使用。在JSP文件中,必須先聲明這些變量和方法然後才能使用它們。
JSP聲明的語法格式:
<%! declaration; [ declaration; ]+ … %>
或者,也可以編寫與其等價的XML語句,就像下面這樣:
<jsp:declaration>
代碼片段
</jsp:declaration>
- 1
- 2
- 3
程序示例
<%! int i = 0; %>
<%! int a, b, c; %>
JSP表達式
一個JSP表達式中包含的腳本語言表達式,先被轉化成String,然後插入到表達式出現的地方。
由於表達式的值會被轉化成String,所以可以在一個文本行中使用表達式而不用去管它是否是HTML標籤。
表達式元素中可以包含任何符合Java語言規範的表達式,但是不能使用分號來結束表達式。
JSP表達式的語法格式:
<%= 表達式 %>
同樣,您也可以編寫與之等價的XML語句:
<jsp:expression>
表達式
</jsp:expression>
程序示例:
<html>
<head></head>
<body>
<h1>
<%! String msg = "Hello";%>
<%= msg %>
</h1>
</body>
</html>
運行後得到以下結果:
Hello
JSP指令
JSP指令用來設置與整個JSP頁面相關的屬性。
JSP指令語法格式:
<%@ directive attribute=”value” %>
指令 | 描述 |
---|---|
<%@ page … %> | 定義頁面的依賴屬性,比如腳本語言、error頁面、緩存需求等等 |
<%@ include … %> | 包含其他文件 |
<%@ taglib … %> | 引入標籤庫的定義,可以是自定義標籤 |
JSP行爲
JSP行爲標籤使用XML語法結構來控制servlet引擎。它能夠動態插入一個文件,重用JavaBean組件,引導用戶去另一個頁面,爲Java插件產生相關的HTML等等。
行爲標籤只有一種語法格式,它嚴格遵守XML標準:
<jsp:action_name attribute=”value” />
語法 | 描述 |
---|---|
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隱含對象
對象 | 描述 |
---|---|
request | HttpServletRequest類的實例 |
response | HttpServletResponse類的實例 |
out | PrintWriter類的實例,用於把結果輸出至網頁上 |
session | HttpSession類的實例 |
application | ServletContext類的實例,與應用上下文有關 |
config | ServletConfig類的實例 |
pageContext | PageContext類的實例,提供對JSP頁面所有對象以及命名空間的訪問 |
page | 類似於Java類中的this關鍵字 |
exception | Exception類的對象,代表發生錯誤的JSP頁面中對應的異常對象 |
JSP屬於腳本語言,這一片博客將繼續介紹JSP的相關語法格式,通過一個循環的例子來演示JSP代碼與HTML的整合。
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
List<String> data = new ArrayList<String>();
for (int i = 0; i < 10; i ++)
{
data.add("data" + i);
}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>index</title>
</head>
<body>
<%
for(String s:data)
{
out.print("<p>" + s + "</p>");
}
%>
</body>
</html>
通過上面的示例,我們已經初步瞭解了最基本的使用方法,上面的代碼是將JSP的代碼片嵌入HTML中,簡單的處理,是沒有問題的,但當頁面較複雜時,這樣編寫就很痛苦了,有點類似Servlet的編寫方式,就無法體現出JSP的優勢。
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
List<String> data = new ArrayList<String>();
for (int i = 0; i < 10; i ++)
{
data.add("data" + i);
}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>index</title>
</head>
<body>
<%
for(String s:data)
{
%>
<p><%= s %></p>
<%
}
%>
</body>
</html>
我們對循環的操作進行了修改,通過第二段代碼我們發現,JSP的代碼實際上是可以和HTML標籤混合出現的,這樣就簡化了我們的工作。
通過上面的兩段代碼,我們知道JSP代碼片和HTML代碼整合的時候可以嵌入也可以混合出現。