java web JSP

一.JSP生命週期java

1.JSP編譯數據庫

當瀏覽器請求JSP頁面時,JSP引擎會首先去檢查是否須要編譯這個文件。若是這個文件沒有被編譯過,或者在上次編譯後被更改過,則編譯這個JSP文件。瀏覽器

編譯的過程包括三個步驟:緩存

  • 解析JSP文件。
  • 將JSP文件轉爲servlet。
  • 編譯servlet。

 

2.JSP初始化安全

容器載入JSP文件後,它會在爲請求提供任何服務前調用jspInit()方法。若是您須要執行自定義的JSP初始化任務,複寫jspInit()方法就好了,就像下面這樣:服務器

public void jspInit(){
  // 初始化代碼
}

 

通常來說程序只初始化一次,servlet也是如此。一般狀況下您能夠在jspInit()方法中初始化數據庫鏈接、打開文件和建立查詢表。session


 

3.JSP執行jsp

這一階段描述了JSP生命週期中一切與請求相關的交互行爲,直到被銷燬。編碼

當JSP網頁完成初始化後,JSP引擎將會調用_jspService()方法。url

_jspService()方法須要一個HttpServletRequest對象和一個HttpServletResponse對象做爲它的參數,就像下面這樣:

void _jspService(HttpServletRequest request, HttpServletResponse response)
{
   // 服務端處理代碼
}

 

_jspService()方法在每一個request中被調用一次而且負責產生與之相對應的response,而且它還負責產生全部7個HTTP方法的迴應,好比GET、POST、DELETE等等。


 

4.JSP清理

JSP生命週期的銷燬階段描述了當一個JSP網頁從容器中被移除時所發生的一切。

jspDestroy()方法在JSP中等價於servlet中的銷燬方法。當您須要執行任何清理工做時複寫jspDestroy()方法,好比釋放數據庫鏈接或者關閉文件夾等等。

jspDestroy()方法的格式以下:

public void jspDestroy() { 
// 清理代碼 }

 

二.JSP語法

1.聲明

(1)<%!    int a=1     %>

(2)<%!   int a,b,c    %>

(3)<%!   int xx=0;   public int cc(int a,int b){ return a+b;}   %>2.腳本程序

     <%   xx=cc(10,5) %>注:<%!%> 與<%%>區別

(1)<%!%>裏面定義的屬性是成員屬性,至關於類的屬性,方法至關因而全局的方法,至關因而類裏面的方法.可是它是不能夠進行輸出的,由於它只是進行方法的定義和屬性的定義。

(2)<%%>這個裏面能夠進行屬性的定義,能夠輸出內容,可是它不能夠進行方法的定義,由於這對標籤裏面的內容未來是在此jsp被編譯爲servlet的時候放在了_jspService()方法裏面的,這個方法就是服務器向客戶端輸出   內容的地方,它自己就是一個方法,因此若是你在它裏面定義方法的話,那麼就至關因而在類的方法裏面嵌套定義了方法,這在java裏面是不容許的。可是你能夠在裏面定義本身的私有變量,由於方法裏面也能夠定義變量,也能夠調用方法,可是惟獨不能夠再定義方法了。

(3)<%!%>是用來定義成員變量屬性和方法的,<%%>主要是用來輸出內容的,所以若是涉及到了成員變量的操做,那麼咱們就應該使用<%!%>,而若是是涉及到了輸出內容的時候,就使用<%%>。

3.表達式

<%= a%>  輸出結果

4.指令

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

詳解:

(1)Page指令

Page指令爲容器提供當前頁面的使用說明。一個JSP頁面能夠包含多個page指令。

Page指令的語法格式:

<%@ page attribute="value" %>

等價的XML格式:

<jsp:directive.page attribute="value" />

屬性

下表列出與Page指令相關的屬性:

屬性 描述
buffer 指定out對象使用緩衝區的大小
autoFlush 控制out對象的 緩存區
contentType 指定當前JSP頁面的MIME類型和字符編碼
errorPage 指定當JSP頁面發生異常時須要轉向的錯誤處理頁面
isErrorPage 指定當前頁面是否能夠做爲另外一個JSP頁面的錯誤處理頁面
extends 指定servlet從哪個類繼承
import 導入要使用的Java類
info 定義JSP頁面的描述信息
isThreadSafe 指定對JSP頁面的訪問是否爲線程安全
language 定義JSP頁面所用的腳本語言,默認是Java
session 指定JSP頁面是否使用session
isELIgnored 指定是否執行EL表達式
isScriptingEnabled 肯定腳本元素可否被使用

(2)Include指令

JSP能夠經過include指令來包含其餘文件。被包含的文件能夠是JSP文件、HTML文件或文本文件。包含的文件就好像是該JSP文件的一部分,會被同時編譯執行。

Include指令的語法格式以下:

<%@ include file="文件相對 url 地址" %>

include 指令中的文件名其實是一個相對的 URL 地址。

若是您沒有給文件關聯一個路徑,JSP編譯器默認在當前路徑下尋找。

等價的XML語法:

<jsp:directive.include file="文件相對 url 地址" />

(3)Taglib指令

JSP API容許用戶自定義標籤,一個自定義標籤庫就是自定義標籤的集合。

Taglib指令引入一個自定義標籤集合的定義,包括庫路徑、自定義標籤。

Taglib指令的語法:

<%@ taglib uri="uri" prefix="prefixOfTag" %>

uri屬性肯定標籤庫的位置,prefix屬性指定標籤庫的前綴。

等價的XML語法:

<jsp:directive.taglib uri="uri" prefix="prefixOfTag" />
相關文章
相關標籤/搜索