標籤:\n xml文法 == cti integer || 編寫 .com obj
JavaWeb:JSP技術快速開始介紹
- JSP全稱Java Server Pages,是一種動態網頁開發技術。它使用JSP標籤在HTML網頁中插入Java代碼。標籤通常以<%開頭以%>結束。
- JSP是一種Java servlet,主要用於實現Java web應用程式的使用者介面部分。網頁開發人員們通過結合HTML代碼、XHTML代碼、XML元素以及嵌入JSP操作和命令來編寫JSP。
- JSP通過網頁表單擷取使用者輸入資料、訪問資料庫及其他資料來源,然後動態地建立網頁。
- JSP標籤有多種功能,比如訪問資料庫、記錄使用者選擇資訊、訪問JavaBeans組件等,還可以在不同的網頁中傳遞控制資訊和共用資訊。
- JSP 技術是以 Java 語言作為指令碼語言的,JSP 網頁為整個伺服器端的 Java 庫單元提供了一個介面來服務於HTTP的應用程式。
- JSP檔案尾碼名為 *.jsp 。
- JSP開發的WEB應用可以跨平台使用,既可以運行在 Linux 上也能運行在 Windows 上。
第一個JSP頁面
<html> <head> <title>第一個 JSP 程式</title> </head> <body> <% out.println("Hello World!"); %> </body></html>
JSP處理JSP建立過程
以下步驟表明了 Web 服務器是如何使用JSP來建立網頁的:
就像其他普通的網頁一樣,您的瀏覽器發送一個 HTTP 要求給伺服器。
Web 服務器識別出這是一個對 JSP 網頁的請求,並且將該請求傳遞給 JSP 引擎。通過使用 URL或者 .jsp 檔案來完成。
JSP 引擎從磁碟中載入 JSP 檔案,然後將它們轉化為 Servlet。這種轉化只是簡單地將所有模板文本改用 println() 語句,並且將所有的 JSP 元素轉化成 Java 代碼。
JSP 引擎將 Servlet 編譯成可執行類,並且將原始請求傳遞給 Servlet 引擎。
Web 服務器的某組件將會調用 Servlet 引擎,然後載入並執行 Servlet 類。在執行過程中,Servlet 產生 HTML 格式的輸出並將其內嵌於 HTTP response 中上交給 Web 服務器。
Web 服務器以靜態 HTML 網頁的形式將 HTTP response 返回到您的瀏覽器中。
最終,網頁瀏覽器處理 HTTP response 中動態產生的HTML網頁,就好像在處理靜態網頁一樣。
圖例
一句話說明,JSP與Servlet關係:JSP 網頁就是用另一種方式來編寫 Servlet 而不用成為 Java 編程高手。除瞭解釋階段外,JSP 網頁幾乎可以被當成一個普通的 Servlet 來對待。
JSP生命週期
理解JSP底層功能的關鍵就是去理解它們所遵守的生命週期。JSP生命週期就是從建立到銷毀的整個過程,類似於servlet生命週期,區別在於JSP生命週期還包括將JSP檔案編譯成servlet。
以下是JSP生命週期中所走過的幾個階段:
編譯階段
當瀏覽器請求JSP頁面時,JSP引擎會首先去檢查是否需要編譯這個檔案。如果這個檔案沒有被編譯過,或者在上次編譯後被更改過,則編譯這個JSP檔案。
編譯的過程包括三個步驟:
- 解析JSP檔案。
- 將JSP檔案轉為servlet。
- 編譯servlet。
初始化階段
容器載入JSP檔案後,它會在為請求提供任何服務前調用jspInit()方法。如果您需要執行自訂的JSP初始化任務,複寫jspInit()方法就行了,就像下面這樣:
public void jspInit(){ // 初始化代碼}
一般來講程式只初始化一次,servlet也是如此。通常情況下您可以在jspInit()方法中初始化資料庫連接、開啟檔案和建立查詢表。
執行階段
這一階段描述了JSP生命週期中一切與請求相關的互動行為,直到被銷毀。
銷毀階段
SP生命週期的銷毀階段描述了當一個JSP網頁從容器中移除時所發生的一切
JSP開發基礎文法
JSP指令
JSP指令用來設定整個JSP頁面相關的屬性,如網頁的編碼方式和指令碼語言。
文法格式如下:
<%@ directive attribute="value" %>
指令可以有很多個屬性,它們以索引值對的形式存在,並用逗號隔開。
JSP中的三種指令標籤:
指令 |
描述 |
<%@ page ... %> |
定義網頁相依性屬性,比如指令碼語言、error頁面、緩衝需求等等 |
<%@ include ... %> |
包含其他檔案 |
<%@ taglib ... %> |
引入標籤庫的定義 |
JSP動作元素說明
與JSP指令元素不同的是,JSP動作元素在請求處理階段起作用。JSP動作元素是用XML文法寫成的。利用JSP動作可以動態地插入檔案、重用JavaBean組件、把使用者重新導向到另外的頁面、為Java外掛程式產生HTML代碼。動作元素只有一種文法,它符合XML標準:
<jsp:action_name attribute="value" />
動作元素基本上都是預定義的函數,JSP規範定義了一系列的標準動作,它用JSP作為首碼,可用的標準動作元素如下:
文法 |
描述 |
jsp:include |
在頁面被請求的時候引入一個檔案。 |
jsp:useBean |
尋找或者執行個體化一個JavaBean。 |
jsp:setProperty |
設定JavaBean的屬性。 |
jsp:getProperty |
輸出某個JavaBean的屬性。 |
jsp:forward |
把請求轉到一個新的頁面。 |
jsp:plugin |
根據瀏覽器類型為Java外掛程式產生OBJECT或EMBED標記。 |
jsp:element |
定義動態XML元素 |
jsp:attribute |
設定動態定義的XML元素屬性。 |
jsp:body |
設定動態定義的XML元素內容。 |
jsp:text |
在JSP頁面和文檔中使用寫入文本的模板 |
示範
JSP簡單應用頁面自動重新整理
這個例子使用了setIntHeader()方法來設定重新整理頭,類比一個數字時鐘:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ page import="java.io.*,java.util.*" %><html><head><title>自動重新整理執行個體</title></head><body><h2>自動重新整理實</h2><% // 設定每隔5秒重新整理一次 response.setIntHeader("Refresh", 5); // 擷取目前時間 Calendar calendar = new GregorianCalendar(); String am_pm; int hour = calendar.get(Calendar.HOUR); int minute = calendar.get(Calendar.MINUTE); int second = calendar.get(Calendar.SECOND); if(calendar.get(Calendar.AM_PM) == 0) am_pm = "AM"; else am_pm = "PM"; String CT = hour+":"+ minute +":"+ second +" "+ am_pm; out.println("目前時間為: " + CT + "\n");%></body></html>
點擊量統計
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ page import="java.io.*,java.util.*" %><html><html><head><title>訪問量統計</title></head><body><% Integer hitsCount = (Integer)application.getAttribute("hitCounter"); if( hitsCount ==null || hitsCount == 0 ){ /* 第一次訪問 */ out.println("歡迎訪問菜鳥教程!"); hitsCount = 1; }else{ /* 返回訪問值 */ out.println("歡迎再次訪問菜鳥教程!"); hitsCount += 1; } application.setAttribute("hitCounter", hitsCount);%><p>頁面訪問量為: <%= hitsCount%></p></body></html>
頁面重新導向
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ page import="java.io.*,java.util.*" %><html><html><head><title>頁面重新導向</title></head><body><h1>頁面重新導向</h1><% // 重新導向到新地址 String site = new String("http://www.runoob.com"); response.setStatus(response.SC_MOVED_TEMPORARILY); response.setHeader("Location", site); %></body></html>
JavaWeb:JSP技術基礎