1. 程式人生 > >【Java Web】JSP總結

【Java Web】JSP總結

JSP 結構

網路伺服器需要一個JSP引擎,也就是一個容器來處理JSP頁面。容器負責截獲對JSP頁面的請求。本教程使用內嵌JSP容器的Apache來支援JSP開發。

JSP容器與Web伺服器協同合作,為JSP的正常執行提供必要的執行環境和其他服務,並且能夠正確識別專屬於JSP網頁的特殊元素。

下圖顯示了JSP容器和JSP檔案在Web應用中所處的位置。

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返回到您的瀏覽器中。
  • 最終,Web瀏覽器處理HTTP response中動態產生的HTML網頁,就好像在處理靜態網頁一樣。

基礎

  • JSP中用<% %>包裹起來的Java程式碼會被新增到Servlet中的service方法中。所以用<% %>包裹起來的Java程式碼中不能宣告帶有訪問控制符的變數和方法。
  • JSP中用<%! %>包裹起來的Java程式碼不會被新增到service方法中。所以可以被用來宣告成員變數和方法以及靜態程式碼塊。
  • JSP中用<%= %>包裹起來的Java程式碼稱之為表示式程式碼塊,其表示式的結果會被顯示到網頁上。

JSP內建物件

名字 型別
out
JspWriter
request HttpServletRequest
response HttpServletResponse
session HttpSession
pageContext PageContext
application ServletContext
config ServletConfig
page Object(this)
exception Throwable

JSP四大域

名字
pageContext 只在當前頁面生存,一旦當前頁面關閉他也就死了
request 只在本次請求中生存,可以進行頁面的跳轉,但一旦重新整理他就死了
session 只在本次會話中生存,可以進行頁面的重新整理,但是一旦關閉瀏覽器他就死了
application 只在本次活動中生存,只要伺服器不關閉,他就不會死,一旦伺服器關閉了或者重啟他就死了

它們都有這樣的兩個方法:

  • setAttribute(“屬性名”,“屬性值”);

  • getAttribute(“屬性名”);—>返回 屬性值

JSP指令

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 確定指令碼元素能否被使用

JSP動作

語法 描述
jsp:include 在頁面被請求的時候引入一個檔案。
jsp:forward 把請求轉到一個新的頁面。