Java工程師關於JSP的必會面試題你知道嗎?

Java工程師關於JSP的必會面試題你知道嗎?

什麼是Java Server Pages?

JSP全稱Java Server Pages,是一種動態網頁開發技術。它使用JSP標籤在HTML網頁中插入Java代碼。標籤通常以<%開頭以%>結束。

JSP是一種Java servlet,主要用於實現Java web應用程序的用戶界面部分。網頁開發者們通過結合HTML代碼、XHTML代碼、XML元素以及嵌入JSP操作和命令來編寫JSP。

JSP通過網頁表單獲取用戶輸入數據、訪問數據庫及其他數據源,然後動態地創建網頁。

JSP標籤有多種功能,比如訪問數據庫、記錄用戶選擇信息、訪問JavaBeans組件等,還可以在不同的網頁中傳遞控制信息和共享信息。

JSP的優勢

與純 Servlet 相比:JSP可以很方便的編寫或者修改HTML網頁而不用去面對大量的println語句。

JSP的處理過程

  1. 就像其他普通的網頁一樣,您的瀏覽器發送一個 HTTP 請求給服務器。
  2. Web 服務器識別出這是一個對 JSP 網頁的請求,並且將該請求傳遞給 JSP 引擎。通過使用 URL或者 .jsp 文件來完成。
  3. JSP 引擎從磁盤中載入 JSP 文件,然後將它們轉化為 Servlet。這種轉化只是簡單地將所有模板文本改用 println() 語句,並且將所有的 JSP 元素轉化成 Java 代碼。
  4. JSP 引擎將 Servlet 編譯成可執行類,並且將原始請求傳遞給 Servlet 引擎。
  5. Web 服務器的某組件將會調用 Servlet 引擎,然後載入並執行 Servlet 類。在執行過程中,Servlet 產生 HTML 格式的輸出並將其內嵌於 HTTP response 中上交給 Web 服務器。
  6. Web 服務器以靜態 HTML 網頁的形式將 HTTP response 返回到您的瀏覽器中。
  7. 最終,Web 瀏覽器處理 HTTP response 中動態產生的HTML網頁,就好像在處理靜態網頁一樣。

一般情況下,JSP 引擎會檢查 JSP 文件對應的 Servlet 是否已經存在,並且檢查 JSP 文件的修改日期是否早於 Servlet。如果 JSP 文件的修改日期早於對應的 Servlet,那麼容器就可以確定 JSP 文件沒有被修改過並且 Servlet 有效。這使得整個流程與其他腳本語言(比如 PHP)相比要高效快捷一些。

JSP 生命週期

  • 編譯階段

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

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

解析JSP文件。

將JSP文件轉為servlet。

編譯servlet。

  • 初始化階段

容器載入JSP文件後,它會在為請求提供任何服務前調用jspInit()方法。如果您需要執行自定義的JSP初始化任務,複寫jspInit()方法就行了

  • JSP執行

這一階段描述了JSP生命週期中一切與請求相關的交互行為,直到被銷燬。當JSP網頁完成初始化後,JSP引擎將會調用_jspService()方法。_jspService()方法需要一個HttpServletRequest對象和一個HttpServletResponse對象作為它的參數 , _jspService()方法在每個request中被調用一次並且負責產生與之相對應的response,並且它還負責產生所有7個HTTP方法的迴應,比如GET、POST、DELETE等等。

  • JSP銷燬

SP生命週期的銷燬階段描述了當一個JSP網頁從容器中被移除時所發生的一切。jspDestroy()方法在JSP中等價於servlet中的銷燬方法。當您需要執行任何清理工作時複寫jspDestroy()方法,比如釋放數據庫連接或者關閉文件夾等等。

JSP語法

  • 腳本程序

<% 代碼片段 %>

  • JSP聲明

一個聲明語句可以聲明一個或多個變量、方法,供後面的Java代碼使用。在JSP文件中,您必須先聲明這些變量和方法然後才能使用它們。

<%! int i = 0; %>

<%! int a, b, c; %>

<%! Circle a = new Circle(2.0); %>

  • JSP表達式

一個JSP表達式中包含的腳本語言表達式,先被轉化成String,然後插入到表達式出現的地方。由於表達式的值會被轉化成String,所以您可以在一個文本行中使用表達式而不用去管它是否是HTML標籤。表達式元素中可以包含任何符合Java語言規範的表達式,但是不能使用分號來結束表達式。

今天的日期是: <%= (new java.util.Date()).toLocaleString()%>

  • JSP註釋

JSP註釋主要有兩個作用:為代碼作註釋以及將某段代碼註釋掉。

<%-- 註釋 --%> JSP註釋,註釋內容不會被髮送至瀏覽器甚至不會被編譯

  • JSP指令

JSP指令用來設置與整個JSP頁面相關的屬性。

<%@ page ... %> 定義頁面的依賴屬性,比如腳本語言、error頁面、緩存需求等等

<%@ include ... %> 包含其他文件

<%@ taglib ... %> 引入標籤庫的定義,可以是自定義標籤

JSP隱含對象

  1. request HttpServletRequest類的實例
  2. response HttpServletResponse類的實例
  3. out PrintWriter類的實例,用於把結果輸出至網頁上
  4. session HttpSession類的實例
  5. application ServletContext類的實例,與應用上下文有關
  6. config ServletConfig類的實例
  7. pageContext PageContext類的實例,提供對JSP頁面所有對象以及命名空間的訪問
  8. page 類似於Java類中的this關鍵字
  9. Exception Exception類的對象,代表發生錯誤的JSP頁面中對應的異常對象

JSTL和EL表達式的關係

JSTL是一個JSP標籤集合,它封裝了JSP應用的通用核心功能。

EL主要用於查找作用域中的數據,然後對它們執行簡單操作;它不是編程語言,甚至不是腳本編制語言。通常與 JSTL 標記一起作用,能用簡單而又方便的符號來表示複雜的行為。示例 : ${expr}

EL表達式能從哪些域對象中取值

常用的域對象有下面這些

  1. pageScope page 作用域
  2. requestScope request 作用域
  3. sessionScope session 作用域
  4. applicationScope application 作用域

JSP異常怎麼處理

  • 在JSP頁面指定錯誤頁面
<%@ page errorPage="ShowError.jsp" %>
  • 編寫錯誤頁面ShowError.jsp
<%@ page isErrorPage="true" %>

什麼是JSTL

JSP標準標籤庫(JSTL)是一個JSP標籤集合,它封裝了JSP應用的通用核心功能。

1. 核心標籤

2.格式化標籤

3.SQL 標籤

4.XML 標籤

5.JSTL 函數

使用步驟

第一步 : 導入JSTLjar依賴

第二步 : 在jsp頁面引入JSTL標籤庫 (對應上面5個功能,選擇引入)

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

本章中的相關題已經在51面試官(http://www.51mianshiguan.com)生成對應的配套刷題題庫,您可以百度搜索“51面試官”使用在線刷題系統進行模擬面試 。51面試官,更加關注IT行業求職面試 ! 提供千萬網友在線學習熱門編程語言,分享和收藏最新編程面試真題,在線刷題面試真題,是一站式服務面試複習準備和入門求職必備幫手。

相關推薦

推薦中...