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