標籤:本質 null move 應用程式 字元 java web out ext
一:介紹
1). WHY:
JSP 是簡 Servlet 編寫的一種技術, 它將 Java 代碼和 HTML 語句混合在同一個檔案中編寫,
只對網頁中的要動態產生的內容採用 Java 代碼來編寫,而對固定不變的靜態內容採用普通靜態 HTML 頁面的方式編寫。
2). Java Server Page: Java 伺服器端網頁. 在 HTML 頁面中編寫 Java 代碼的頁面.
2). helloworld:
建立一個 JSP 頁面, 在 body 節點內的 <% %> 即可編寫 Java 代碼.
<body>
<%
Date date = new Date();
System.out.print(date);
%>
</body>
3). JSP 可以放置在 WEB 應用程式中的除了 WEB-INF 及其子目錄外的其他任何目錄中,
JSP 頁面的訪問路徑與普通 HTML 頁面的訪問路徑形式也完全一樣。
4). JSP的運行原理: JSP 本質上是一個 Servlet.
每個JSP 頁面在第一次被訪問時, JSP 引擎將它翻譯成一個 Servlet 來源程式, 接著再把這個 Servlet 來源程式編譯成 Servlet 的 class 類檔案.
然後再由WEB容器(Servlet引擎)像調用普通Servlet程式一樣的方式來裝載和解釋執行這個由JSP頁面翻譯成的Servlet程式。
二:九個影藏對象
1.隱含對象
public void _jspService(HttpServletRequest request, HttpServletResponse response)throws java.io.IOException, ServletException {
PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
//...
//使用 <% %> 編寫的代碼在此位置. 可以用到 request, response, pageContext, session
//application, config, out, page 這 8 個隱含對象. (實際上還可以使用一個叫 exception 的隱含對象)
}
2.對九個隱含對象做詳細解釋
①. request: HttpServletRequest 的一個對象. *
②. response: HttpServletResponse 的一個對象(在 JSP 頁面中幾乎不會調用 response 的任何方法.)
③. pageContext: 頁面的上下文, 是 PageContext 的一個對象. 可以從該對象中擷取到其他 8 個隱含對象. 也可以從中擷取到當前
頁面的其他資訊. (學習自訂標籤時使用它) *
④. session: 代表瀏覽器和伺服器的一次會話, 是 HttpSession 的一個對象. 後面詳細學習. *
⑤. application: 代表當前 WEB 應用. 是 ServletContext 對象. *
⑥. config: 當前 JSP 對應的 Servlet 的 ServletConfig 對象(幾乎不使用). 若需要訪問當前 JSP 配置的初始化參數,
需要通過映射的地址才可以.
映射 JSP:
<servlet>
<servlet-name>hellojsp</servlet-name>
<jsp-file>/hello.jsp</jsp-file>
<init-param>
<param-name>test</param-name>
<param-value>testValue</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>hellojsp</servlet-name>
<url-pattern>/hellojsp</url-pattern>
</servlet-mapping>
⑦. out: JspWriter 對象. 調用 out.println() 可以直接把字串列印到瀏覽器上. *
⑧. page: 指向當前 JSP 對應的 Servlet 對象的引用, 但為 Object 類型, 只能調用 Object 類的方法(幾乎不使用)
⑨. exception: 在聲明了 page 指令的 isErrorPage="true" 時, 才可以使用. *
<%@ page isErrorPage="true" %>
pageContext, request, session, application(對屬性的範圍的範圍從小到大)
out, response, config, page
exception
三:JSP文法
1.JSP模版元素
JSP頁面中的靜態HTML內容
2.JSP運算式
提供了將一個 java 變數或運算式的計算結果輸出到用戶端的簡化方式,它將要輸出的變數或運算式直接封裝在<%= 和 %>之中。
3.JSP指令碼片斷
是指嵌套在<% 和 %>之中的一條或多條Java程式碼。 多個指令碼片斷中的代碼可以相互訪問
4.JSP 聲明(很少使用)
JSP 聲明將 Java 代碼封裝在<%!和 %>之中,它裡面的代碼將被插入進 Servle t的 _jspService
5.JSP注釋的格式
<%-- JSP 注釋 --%> <!-- HTML 注釋 -->
四:域對象的屬性操作
1.屬性方法
void setAttribute(String name, Object o): 設定屬性
Object getAttribute(String name): 擷取指定的屬性
Enumeration getAttributeNames(): 擷取所有的屬性的名字組成的 Enumeration 對象
removeAttribute(String name): 移除指定的屬性
2.域對象
pageContext, request, session, application 對象都有這些方法!這四個對象也稱之為域對象
3.域對象的解釋
pageContext: 屬性的作用範圍僅限於當前 JSP 頁面
request: 屬性的作用範圍僅限於同一個請求.
session: 屬性的作用範圍限於一次會話: 瀏覽器開啟直到關閉稱之為一次會話(在此期間會話不失效)
application: 屬性的作用範圍限於當前 WEB 應用. 是範圍最大的屬性作用範圍, 只要在一處設定屬性, 在其他各處的 JSP 或 Servlet 中
都可以擷取到.
JSP的學習一(基礎知識)