JSP知識

JSP簡介

   JSP由傳統的網頁HTML文件(*.htm、*.html)中插入Java程序段(Scriptlet)和JSP標記(tag)組成。
   在JSP中大部分都是由腳本小程序組成,所謂的腳本小程序就是裏面包含了JAVA代碼。Scriptlet共分爲三種:
  • <%%>:定義局部變量,編寫語句
  • <%!%>:定義全局變量,可以編寫類和方法
  • <%=%>:表達式輸出,專門輸出變量或一個具體值 類似於out.println

JSP工作原理

這裏寫圖片描述

   客戶端通過瀏覽器路徑發送一個請求,服務器接收到請求,轉發或重定向到一個JSP頁面。    這個JSP文件是第一次被請求,這時JSP引擎(特殊的Servlet)的操作是:
   首先,把將這個JSP文件轉換成一個Java類。如果在轉換過程中出現異常,轉換過程會被中斷,並向服務器和客戶端輸出錯誤信息;如果轉換成功,JSP引擎通過JVM把該Java類編譯成相應的.class文件。
   其次,創建一個Servlet實例,調用該實例的jspInit()方法,此方法在Servlet的整個生命週期中只執行一次。
   然後,創建並啓動一個新的線程,新線程調用Servlet實例的jspService方法。(對於每一個請求,JSP引擎都會創建一個新的線程來處理該請求;如果有多個客戶端同時請求該JSP文件,則JSP引擎會創建多個線程,每個客戶端請求對應一個線程)。
   再然後,瀏覽器調用JSP文件時,Servlet容器會把瀏覽器的請求和對瀏覽器的響應封裝成HttpServletRequest和HttpServletResponse對象,同時調用對應的Servlet實例中jspService()方法,把這兩個對象作爲參數傳遞給jspService()。
   最後,jspService()方法執行後將HTML內容返回給客戶端。

注意:

   如果JSP文件被修改了,服務器將根據設置決定是否對該文件進行重新編譯。如果需要重新編譯,則將編譯結果取代內存中的Servlet,並繼續上述處理過程。 如果在任何時候由於系統資源不足,JSP引擎將以某種不確定的方式將Servlet從內存中移去。當這種情況發生時,jspDestroy()方法首先被調用, 然後Servlet實例便被標記加入“垃圾收集”處理。

參考:http://www.cnblogs.com/mlloc-clove/p/3549777.html

存放路徑

存放在在tomcat的work文件夾下
D:\tomcat\apache-tomcat-9.0.0.M10\work
D:\tomcat\apache-tomcat-9.0.0.M10\work\Catalina\localhost\a51\org\apache\jsp

九大內置對象

內置對象 類型 描述 常用語法
pageContext javax.servlet.jsp.PageContext 頁面上下文對象 類似於域對象
request javax.servlet.ServletRequest 請求對象 與servelet中的用法相同
response javax.servlet.ServletResponse 響應對象 與servelet中的用法相同
session javax.servlet.http.HttpSession 會話對象 與servelet中的用法相同
application javax.servlet.ServletContext 應用程序對象 與servlet中的ServletContext用法相同
out javax.servlet.jsp.JspWriter 輸出對象 out.println(String str);類似於<%= %>
config javax.servlet.ServletConfig 配置對象 與servlet中的ServletConfig用法相同
page java.lang.Object 頁面對象 代表當前頁面,沒有常用方法
exception java.lang.Throeable 例外對象 設置errorPage屬性,跳轉到錯誤頁 在錯誤頁設置isErrorPage爲true <%@ page isErrorPage=”true” %> 纔可使用該內置對象
常用方法: exception.getMessage();

四個作用域

作用域對象 作用域 有效範圍
pageContext page 當前JSP頁面
request request 當前請求週期
session session 當前會話
application application 整個應用

補充

  1. 在jspInit()中可以進行一些初始化工作,如建立與數據庫的連接、建立網絡連接、從配置文件中獲取一些參數等,而在jspDestory()中釋放相應的資源。
  2. HTML代碼錯誤的情況:正常翻譯成java源代碼
    Java代碼編譯時錯誤的情況:正常翻譯成Java源代碼,執行時報500錯誤
    Java代碼運行時錯誤的情況:正常翻譯成Java源代碼,執行時報500錯誤
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章