1. 程式人生 > >JSP零基礎回顧

JSP零基礎回顧

1、JSP

JSP 是簡 Servlet 編寫的一種技術, 它將 Java 程式碼和 HTML 語句混合在同一個檔案中編寫,
只對網頁中的要動態產生的內容採用 Java 程式碼來編寫,而對固定不變的靜態內容採用普通靜態 HTML 頁面的方式編寫。 

2、JSP的執行原理

JSP 本質上是一個 Servlet.

每個JSP 頁面在第一次被訪問時, JSP 引擎將它翻譯成一個 Servlet 源程式, 接著再把這個 Servlet 源程式編譯成 Servlet 的 class 類檔案.
然後再由WEB容器(Servlet引擎)像呼叫普通Servlet程式一樣的方式來裝載和解釋執行這個由JSP頁面翻譯成的Servlet程式。 

3、JSP 9隱含物件

request:HttpServletRequest 的一個物件

response:HttpServletResponse 的一個物件

pageContext:頁面的上下文, 是 PageContext 的一個物件. 可以從該物件中獲取到其他 8 個隱含物件. 也可以從中獲取到當前路徑

session:代表瀏覽器和伺服器的一次會話, 是 HttpSession 的一個物件

application:代表當前 WEB 應用. 是 ServletContext 物件

config:當前 JSP 對應的 Servlet 的 ServletConfig 物件

out:JspWriter 物件. 呼叫 out.println() 可以直接把字串列印到瀏覽器上

page:指向當前 JSP 對應的 Servlet 物件的引用

exception:在聲明瞭 page 指令的 isErrorPage="true" 時, 才可以使用

<%@ page isErrorPage="true" %>

pageContext, request, session, application(對屬性的作用域的範圍從小到大)

4、JSP語法

JSP模版元素: JSP頁面中的靜態HTML內容稱 

JSP表示式:提供了將一個 java 變數或表示式的計算結果輸出到客戶端的簡化方式,

<%=  %>
它將要輸出的變數或表示式直接封裝在<%= 和 %>之中。

JSP指令碼片斷:指巢狀在<% 和 %>之中的一條或多條Java程式程式碼。 
多個指令碼片斷中的程式碼可以相互訪問。

SP註釋的格式:<%-- JSP 註釋 --%> <!-- HTML 註釋 -->

區別: JSP 註釋可以阻止 Java 程式碼的執行. 

5、4大域物件

pageContext:屬性作用範圍僅限與當前JSP頁面

request:作用範圍僅限於同一個請求

session:作用範圍為一次會話期間

application:作為範圍為當前WEB應用,只要在一處設定,在其他各處JSP或者Servlet中都可以獲取到。

6、page 指令

page指令用於定義JSP頁面的各種屬性,無論page指令出現在JSP頁面中的什麼地方, 
它作用的都是整個JSP頁面, 為了保持程式的可讀性和遵循良好的程式設計習慣, page指令最好是放在整個JSP頁面的起始位置。 

page 指令常用的屬性: 

import 屬性: 指定當前 JSP 頁面對應的 Servlet 需要匯入的類.   <%@page import="java.text.DateFormat"%>

session 屬性: 取值為 true 或 false, 指定當前頁面的 session 隱藏變數是否可用, 也可以說訪問當前頁面時是否一定要生成 HttpSession物件.<%@ page session="false" %>  

errorPage 屬性errorPage 指定若當前頁面出現錯誤的實際響應頁面時什麼. 其中 / 表示的是當前 WEB 應用的根目錄. <%@ page errorPage="/error.jsp" %> ,在響應 error.jsp 時, JSP 引擎使用的請求轉發的方式. 

7、include 指令

<%@ include file="b.jsp" %>

include 指令用於通知 JSP 引擎在翻譯當前 JSP 頁面時將其他檔案中的內容合併進當前 JSP 頁面轉換成的 Servlet 原始檔中,
這種在原始檔級別進行引入的方式稱之為靜態引入, 當前JSP頁面與靜態引入的頁面緊密結合為一個Servlet。

8、jsp:incluce 標籤

動態引入: 並不是像 include 指令生成一個 Servlet 原始檔, 而是生成兩個 Servlet 原始檔, 然後通過一個方法的方式把目標頁面包含進來. 

9、jsp:forward

<jsp:forward page="/include/b.jsp"></jsp:forward>

相當於

<% 
    request.getRequestDispatcher("/include/b.jsp").forward(request, response);
%>

10、EL表示式

https://blog.csdn.net/meibenxiang/article/details/77900714

11、JSTL標籤庫

c:out:主要用於對特殊字元進行轉換. 真正進行輸出時

c:set:可以為域賦屬性值。

c:remove:移除指定域物件的指定屬性值

c:if:在頁面上對現實的內容進行過濾, 可以把結果儲存到域物件的屬性中

注意:沒有else

c:choose, c:when, c:otherwise

c:forEach

c:forTokens: 處理字串

c:import:匯入頁面到當前頁面的

c:redirect: 當前頁面進行重定向的

c:url: 產生一個 URL 的, 可以進行 URL 重寫, 變數值編碼