JSP

一、JSP的定義

JSP全稱Java Server Pages,是一種動態網頁開發技術。它使用JSP標籤在HTML網頁中插入Java代碼。標籤通常以<%開頭以%>結束。
JSP是一種Java servlet,主要用於實現Java web應用程序的用戶界面部分。網頁開發者們通過結合HTML代碼、XHTML代碼、XML元素以及嵌入JSP操作和命令來編寫JSP。

1.1 JSP的生命週期

  1. 編譯階段:
    servlet容器編譯servlet源文件,生成servlet類
  2. 初始化階段:
    加載與JSP對應的servlet類,創建其實例,並調用它的初始化方法
  3. 執行階段:
    調用與JSP對應的servlet實例的服務方法
  4. 銷燬階段:
    調用與JSP對應的servlet實例的銷燬方法,然後銷燬servlet實例
    JSP的生命週期

JSP生命週期代碼實例如下所示:

<%@ page contentType="text/html; charset=GB2312"%>
<html>
<head>
<title>life.jsp</title>
</head>
<body>
    <%!private int initVar = 0;
    private int serviceVar = 0;
    private int destroyVar = 0;%>
    <%!public void jspInit() {
        initVar++;
        System.out.println("jspInit(): JSP被初始化了" + initVar + "次");
    }
    public void jspDestroy() {
        destroyVar++;
        System.out.println("jspDestroy(): JSP被銷燬了" + destroyVar + "次");
    }%>
    <%
        serviceVar++;
        System.out.println("_jspService(): JSP共響應了" + serviceVar + "次請求");
        String content1 = "初始化次數 : " + initVar;
        String content2 = "響應客戶請求次數 : " + serviceVar;
        String content3 = "銷燬次數 : " + destroyVar;
    %>
    <h1><%=content1%></h1>
    <h1><%=content2%></h1>
    <h1><%=content3%></h1>
</body>
</html>

二、JSP語法

2.1 腳本程序

腳本程序可以包含任意量的Java語句、變量、方法或表達式,只要它們在腳本語言中是有效的。
腳本程序的語法格式:

<% 代碼片段 %>

或者,您也可以編寫與其等價的XML語句,就像下面這樣:

<jsp:scriptlet>
   代碼片段
</jsp:scriptlet>

任何文本、HTML標籤、JSP元素必須寫在腳本程序的外面。
程序示例:

<html>
<head><title>Hello World</title></head>
<body>
Hello World!<br/>
<%
out.println("Your IP address is " + request.getRemoteAddr());
%>
</body>
</html>

2.2 JSP聲明

一個聲明語句可以聲明一個或多個變量、方法,供後面的Java代碼使用。在JSP文件中,必須先聲明這些變量和方法然後才能使用它們。(此方法用來聲明成員變量,切記少用)
JSP聲明的語法格式:

<%! declaration; [ declaration; ]+ ... %>

或者,您也可以編寫與其等價的XML語句,就像下面這樣:

<jsp:declaration>
   代碼片段
</jsp:declaration>

程序示例:

<%! int i = 0; %> 
<%! int a, b, c; %> 
<%! Circle a = new Circle(2.0); %> 

2.3 JSP表達式

一個JSP表達式中包含的腳本語言表達式,先被轉化成String,然後插入到表達式出現的地方。
由於表達式的值會被轉化成String,所以您可以在一個文本行中使用表達式而不用去管它是否是HTML標籤。
表達式元素中可以包含任何符合Java語言規範的表達式,但是不能使用分號來結束表達式。
JSP表達式的語法格式:

<%= 表達式 %>

同樣,您也可以編寫與之等價的XML語句:

<jsp:expression>
   表達式
</jsp:expression>

程序示例:

<html> 
<head><title>A Comment Test</title></head> 
<body>
<p>
   Today's date: <%= (new java.util.Date()).toLocaleString()%>
</p>
</body> 
</html> 

2.4 JSP註釋

JSP註釋主要有兩個作用:爲代碼作註釋以及將某段代碼註釋掉。
JSP註釋的語法格式:

<%-- 這裏可以填寫 JSP 註釋 --%>

程序示例:

<html> 
<head><title>A Comment Test</title></head> 
<body> 
<h2>A Test of Comments</h2> 
<%-- 該部分註釋在網頁中不會被顯示--%> 
</body> 
</html> 

不同情況下使用註釋的語法規則:

語法 描述
<%-- 註釋 --%> JSP註釋,註釋內容不會被髮送至瀏覽器甚至不會被編譯
<!-- 註釋 --> HTML註釋,通過瀏覽器查看網頁源代碼時可以看見註釋內容
<\% 代表靜態 <%常量
%\> 代表靜態 %> 常量
\' 在屬性中使用的單引號
\" 在屬性中使用的雙引號

2.5 JSP指令

JSP指令用來設置與整個JSP頁面相關的屬性。
JSP指令語法格式:

<%@ directive attribute="value" %>

這裏有三種指令標籤:

指令 描述
<%@ page ... %> 定義頁面的依賴屬性,比如腳本語言、error頁面、緩存需求等等
<%@ include ... %> 包含其他文件(導包)
<%@ taglib ... %> 引入標籤庫的定義,可以是自定義標籤

2.6 JSP行爲

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 用於封裝模板數據

2.7 JSP隱含對象

JSP支持九個自動定義的變量,江湖人稱隱含對象。這九個隱含對象的簡介見下表:

對象 描述
pageContext PageContext類的實例,提供對JSP頁面所有對象以及命名空間的訪問,當前頁面上下文
request HttpServletRequest類的實例,獲取請求信息
session HttpSession類的實例,存放會話信息
application ServletContext類的實例,與應用上下文有關,存放項目全局信息
response HttpServletResponse類的實例,返回響應信息
out PrintWriter類的實例,用於把結果輸出至網頁上返回響應信息–內部存在一個緩衝區,效率高
config ServletConfig類的實例
page 類似於Java類中的this關鍵字
Exception Exception類的對象,代表發生錯誤的JSP頁面中對應的異常對象
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章