JSP:java server page服務器腳本語言。(腳本===插件),是一種在html代碼中,嵌入java代碼的方式。
解決servlet產生動態頁面缺陷而產生的一門技術。
js:客戶端腳本語言
jsp引擎:在web容器中,須要提供一個jsp引擎,將客戶端請求的jsp頁面翻譯成java類。
jsp和servlet的區別:
按照servlet規範,由jsp引擎所翻譯的java類,必須實現HttpJspPage接口。而HttpJspPage接口是Servlet的子接口,因此,jsp引擎所翻譯的
Java類,一樣知足servlet規範。從這個意義上說,jsp本質是servlet,擁有和servlet相似的生命週期。只不過jsp重在顯示頁面,而servlet
重在邏輯處理。html
JSP生命週期:(3--7和servlet生命週期流程同樣)
一、由JSP引擎將JSP頁面翻譯成JAVA代碼(aa.jsp-->aa_jsp.java)
二、將JAVA代碼編譯成class字節碼文件(aa_jsp.java-->aa_jsp.class)
三、加載到容器
四、由容器實例化成對象
五、初始化階段相關的方法是jspInit()
六、請求到達,調用服務階段相關的方法是_jspService()
七、銷燬階段相關的方法是jspDestroy()java
JSP網頁主要由元素(Element)和模板數據(Template Data)兩個部分組成 :
模板數據是JSP的靜態部分,WEB容器不處理 ;元素則是必須經由WEB容器解釋web
jsp腳本元素有三種:
聲明:<%! %>定義jsp類的成員變量、靜態變量和方法。
腳本:<% %>豐富_jspService()方法,在腳本中定義的變量都是_jspService()的局部變量。
表達式:<%= %>也是在豐富_jspService()方法,至關於打印語句,向客戶端輸出內容,表達式後不能加分號安全
jsp的註釋:
jsp註釋 <%-- --%>對於jsp註釋,web容器是不翻譯的,jsp註釋只在源代碼中可見,最爲安全,能夠註釋掉java代碼
html註釋 <!-- -->容器能夠識別,不能註釋java代碼。web容器會以out.println()方式輸出到客戶端,客戶端和服務器均可見,最不安全。
java註釋 只在服務器端可見,客戶端不可見。服務器
jsp隱式對象:
jsp引擎在翻譯jsp頁面時,會在_jspService()方法中,傳入由web容器封裝的請求、響應對象,同時在_jspService()方法開始時,定義了九個變量
,而且完成了這些變量的初始化。開發者所寫的腳本,表達式,是在豐富_jspService()方法,因此,能夠直接使用這些變量,而不用定義,
這些變量成爲jsp的隱式對象。session
jsp隱式對象有九個:(無需聲明,能夠直接使用)
四個做用域:
pageContext:做用於頁面(只在jsp頁面有效)===ServletContext
request:做用於請求(請求範圍內有效)
session:做用於會話(一次會話有效)
application:做用於全局(在全局範圍有效)
兩個輸出:
response:響應對象
out:打印輸出流
page:當前jsp類對象(this)
config:配置對象
exception:異常對象app
提供整個JSP頁面的相關信息<%@ %>,用於JSP頁面與容器之間的通訊
在JSP中,有三種類型的指令:
page指令爲當前頁面提供處理指令
include指令用於把另外一個文件包含在JSP中
taglib指令指定如何包含和訪問自定義標籤庫 jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
page指令常見的屬性:contentType:設置響應信息的MIME類型和編碼集====pageEncoding:設置響應信息的編碼集,MIME類型默認爲text/html
import:在jsp類中,導入其餘包中的類,多個包用逗號分開。
session:客戶端訪問jsp時,是否建立session對象,默認爲true
exception:當errorPage出現運行異常時,纔會產生該異常對象。
errorPage:當前jsp中拋出了運行異常,跳轉到errorPage屬性所指定的頁面。
isErrorPage:當該屬性設置爲true時,表示當前jsp爲異常處理頁面。在當前jsp類中,會定義exception隱式對象,接收從出錯頁面中傳遞過來的異對象。this
在web.xml中,能夠定義:(在相應信息爲指定狀態碼時,跳轉到指定頁面)
<error-page>
<error-code>404</error-code>
<location>/noFind.jsp</location>
</error-page>編碼