JSP的本質是Servlet源程式 每個JSP頁面在第一次被訪問時,JSP引擎將它翻譯成一個Servlet源程式,接著再把這個Serlvet源程式編譯成Servlet的class類文件。 然後再由Web容器(Servlet引擎)像調用普通Servlet程式一樣的方式來裝載和解釋執行這個Servlet ...
JSP的本質是Servlet源程式
每個JSP頁面在第一次被訪問時,JSP引擎將它翻譯成一個Servlet源程式,接著再把這個Serlvet源程式編譯成Servlet的class類文件。
然後再由Web容器(Servlet引擎)像調用普通Servlet程式一樣的方式來裝載和解釋執行這個Servlet程式。
JSP頁面的隱含變數
已經聲明好的變數,不用我們自己聲明。
一共有9個隱含對象。
1. HttpServletRequest request
2. HttpServletResponse response
(在JSP頁面中幾乎不會調用response的任何方法)
3. PageContext pageContext
頁面的上下文,可以從該對象中獲取其他8個隱含對象,也可以獲取到當前頁面的其他信息
4. HttpSession session
瀏覽器和伺服器的一次對話
5. ServletContext application
代表當前Web應用
6. ServletConfig config
當前JSp對應的Servlet的ServletConfig對象(幾乎不用)
7. JspWriter out
out.println() 可以直接把字元串列印到瀏覽器上
8. Object page
指向當前JSP對應的Servlet對象的引用,但因為Object類型,只能調用Object類的方法(幾乎不用)
9. Exception exception
在聲明瞭page指令的isErrorPage="true"時,才可以使用 <% page isErrorPage="true" %>
域對象的屬性操作
1)方法
Object getAttribute(String name):獲取指定的屬性
Enumeration getAttributeNames():獲取所有的屬性的名字組成的Enumeration對象
void removeAttribute(String name):移除指定的屬性
void setAttribute(String name, Object o):設置屬性
2)pageContext,request,session,application對象都有這些方法(所以這四個對象也被稱為域對象)
pageContext:屬性的作用範圍僅限於當前JSP頁面。
request:屬性的作用範圍僅限於同一個請求。
session:屬性的作用範圍限於一次會話。
application:屬性的作用範圍限於當前Web應用。
JSP表達式
<%= xxx %>
相當於out.println(xxx)
JSP聲明
<%! %>里的java代碼將被插入Servlet的jspServlet方法外面,所以JSP聲明可用於定義JSP頁面轉換成的Servlet程式的靜態代碼塊、成員變數和方法。
因為JSP隱式對象實在jspServlet方法內聲明的,所以在JSP聲明中不能使用這些隱式對象。
JSP註釋
<%-- --%>