亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

annuaire recherche
JSP 基礎教程 JSP 開發(fā)環(huán)境搭建 JSP 結構 JSP 生命周期 JSP 語法 JSP 指令 JSP 動作元素 JSP 隱式對象 JSP 客戶端請求 JSP 服務器響應 JSP HTTP 狀態(tài)碼 JSP 表單處理 JSP 過濾器 JSP Cookies 處理 JSP Session JSP 文件上傳 JSP 日期處理 JSP 頁面重定向 JSP 點擊量統(tǒng)計 JSP 自動刷新 JSP 發(fā)送郵件 JSP 高級教程 JSP 標準標簽庫(JSTL) <c:out> 標簽 <c:set> 標簽 <c:remove> 標簽 <c:catch> 標簽 <c:if> 標簽 <c:choose> <c:import> 標簽 <c:forEach> <c:param> 標簽 <c:redirect> 標簽 <fmt:formatNumber>標簽 <fmt:parseNumber> 標簽 <fmt:formatDate> 標簽 <fmt:parseDate> 標簽 <fmt:bundle> 標簽 <fmt:setLocale> 標簽 <fmt:setBundle> 標簽 <fmt:timeZone> 標簽 <fmt:setTimeZone> 標簽 <fmt:message> 標簽 <fmt:requestEncoding> 標簽 <sql:setDataSource> 標簽 <sql:query> 標簽 <sql:update> 標簽 <sql:param> 標簽 <sql:dateParam> 標簽 <sql:transaction> 標簽 <x:out> 標簽 <x:parse> 標簽 <x:set> 標簽 <x:if> 標簽 <x:forEach> 標簽 <x:choose> <x:transform> 標簽 <x:param> 標簽 fn:contains()函數(shù) fn:containsIgnoreCase()函數(shù) fn:endsWith()函數(shù) fn:escapeXml()函數(shù) fn:indexOf()函數(shù) fn:join()函數(shù) fn:length()函數(shù) fn:replace()函數(shù) fn:split()函數(shù) fn:startsWith()函數(shù) fn:substring()函數(shù) fn:substringAfter()函數(shù) fn:substringBefore()函數(shù) fn:toLowerCase()函數(shù) fn:toUpperCase()函數(shù) fn:trim()函數(shù) JSP 連接數(shù)據(jù)庫 JSP XML 數(shù)據(jù)處理 JSP JavaBean JSP 自定義標簽 JSP 表達式語言 JSP 異常處理 JSP 調試 JSP 國際化
personnages

JSP 生命周期


理解JSP底層功能的關鍵就是去理解它們所遵守的生命周期。

JSP生命周期就是從創(chuàng)建到銷毀的整個過程,類似于servlet生命周期,區(qū)別在于JSP生命周期還包括將JSP文件編譯成servlet。

以下是JSP生命周期中所走過的幾個階段:

  • 編譯階段:

    servlet容器編譯servlet源文件,生成servlet類

  • 初始化階段:

    加載與JSP對應的servlet類,創(chuàng)建其實例,并調用它的初始化方法

  • 執(zhí)行階段:

    調用與JSP對應的servlet實例的服務方法

  • 銷毀階段:

    調用與JSP對應的servlet實例的銷毀方法,然后銷毀servlet實例

很明顯,JSP生命周期的四個主要階段和servlet生命周期非常相似,下面給出圖示:


JSP編譯

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

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

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

JSP初始化

容器載入JSP文件后,它會在為請求提供任何服務前調用jspInit()方法。如果您需要執(zhí)行自定義的JSP初始化任務,復寫jspInit()方法就行了,就像下面這樣:

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

一般來講程序只初始化一次,servlet也是如此。通常情況下您可以在jspInit()方法中初始化數(shù)據(jù)庫連接、打開文件和創(chuàng)建查詢表。


JSP執(zhí)行

這一階段描述了JSP生命周期中一切與請求相關的交互行為,直到被銷毀。

當JSP網(wǎng)頁完成初始化后,JSP引擎將會調用_jspService()方法。

_jspService()方法需要一個HttpServletRequest對象和一個HttpServletResponse對象作為它的參數(shù),就像下面這樣:

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

_jspService()方法在每個request中被調用一次并且負責產生與之相對應的response,并且它還負責產生所有7個HTTP方法的回應,比如GET、POST、DELETE等等。


JSP清理

JSP生命周期的銷毀階段描述了當一個JSP網(wǎng)頁從容器中被移除時所發(fā)生的一切。

jspDestroy()方法在JSP中等價于servlet中的銷毀方法。當您需要執(zhí)行任何清理工作時復寫jspDestroy()方法,比如釋放數(shù)據(jù)庫連接或者關閉文件夾等等。

jspDestroy()方法的格式如下:

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

實例

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="初始化次數(shù) : "+initVar;
  String content2="響應客戶請求次數(shù) : "+serviceVar;
  String content3="銷毀次數(shù) : "+destroyVar;
%>

<h1><%=content1 %></h1>
<h1><%=content2 %></h1>
<h1><%=content3 %></h1>

</body></html>

關于我們 聯(lián)系我們 留言板

手冊網(wǎng)

Article précédent: Article suivant: