一、JSP的內置對象(9個JSP內置對象)
JSP的內置對象引用名稱 對應的類型
request HttpServletRequest
response HttpServletResponse
session HttpSession(有開關的:page指令的session屬性的取值)
application ServletContext
config ServletConfig
page this(當前Servlet對象)
exception java.lang.Throwable(有開關:page指令的isErrorPage屬性改為true)
out JspWriter
pageContext javax.servlet.jsp.PageContext非常重要
pageContext對象有三大作用:
1、本身是一個域對象,表示的域范圍是本頁面。
同時還能操作其他三個域對象(PageContext ,ServletRequest, HttpSession,ServletContext)
設置屬性:
void setAttribute(String name,Object value)
void removeAttribute(String name)
Object getAttribute(String name)
操作其他的三個域對象,設置屬性:
void setAttribute(String name,Object value,int scope)
void removeAttribute(String name,int scope)
Object getAttribute(String name,int scope)
參數int scope是由PageContext類提供的靜態變量規定的。
PageContext.PAGE_SCOPE:頁面范圍(是PageContext本身中的那個Map,代號page)
PageContext.REQUEST_SCOPE:請求范圍(是ServletRequest中的那個Map,代號request)
PageContext.SESSION_SCOPE:請求范圍(是HttpSession中的那個Map,代號session)
PageContext.APPLICATION_SCOPE:請求范圍(是ServletContext中的那個Map,代號application)
Object findAttribute(String name):依次按照page,request, session ,application范圍搜索指定名稱的對象,找到為止。
EL表達式便是調用了此方法(非常有用)
2、獲取其他8個隱式對象
3、提供了轉發和包含的方便方法
若不用pageContext對象:
RequestDispatcher rd = request.getRequestDispatcher(/url);
rd.forward(request,response);
用pageContext對象:
pageContext.forward(url);
pageContext.include(url);
四大域對象(兩個資源之間互傳數據)
JSP中隱式對象的名稱 范圍名稱 具體的類型
pageContext page javax.servlet.jsp.PageContext
request request javax.servlet.ServletRequest
session session javax.servlet.http.HttpSession
application application javax.servlet.ServletContext (如果使用,必須同步處理)
二、EL表達式
它只是JSP中的表達式,不是一種開發語言。
基本語法:${EL表達式}
1. 獲取數據
EL表達式只能獲取四大域中的數據。
EL表達式獲取的對象如果是null,頁面不會顯示數據。因此,EL表達式中永遠不會出現空指針異常
.運算符:
${p.name}:調用域中名稱為p對象的getName方法,點運算符是用於獲取屬性的取值的。
[]運算符:
(.運算符能做的,[]也能做。[]能做的,.不一定能做)
比如${p.name}===${p['name']}==${p[name]}
優秀在可以取不符合Java命名規范的東東。
2. 數學邏輯運算:
empty運算符:如果判斷的對象是null或者空字符串,都返回true。
對於集合,即使集合對象本身不是null,沒有任何元素,也返回true。
EL表達式不支持字符串連接操作。
三、EL內置對象(11大EL內置對象)
獲取JSP的內置對象(11大EL內置對象):難點,不要與JSP的內置對象和范圍名稱搞混
11大EL隱式對象中,其中一個是表示自身對象外,其余都是表示的Map結構
EL隱式對象名稱 Java類型 備注
pageContext javax.servlet.jsp.PageContext 與JSP中的內置對象完全相同
剩余的都是代表的Map集合
pageScope java.util.Map 代表著PageContext頁面范圍域那個Map
requestScope java.util.Map 代表著ServletRequest請求范圍域那個Map
sessionScope java.util.Map 代表著HttpSession會話范圍域那個Map
applicationScope java.util.Map 代表著ServletContext應用范圍域那個Map
param java.util.Map 代表著請求參數。key:請求參數的名稱。value:請求參數的值,它是一個字符串。
paramValues java.util.Map 代表著請求參數。key:請求參數的名稱。value:請求參數的值,它是一個字符串數組。
header java.util.Map 代表著請求消息頭。key:頭名稱。value:頭值,它是一個字符串。
headerValues java.util.Map 代表著請求消息頭。key:頭名稱。value:頭值,它是一個字符串數組。
cookie java.util.Map 代表客戶端提交的Cookie的Map。key:cookie的name。value:cookie對象本身
initParam java.util.Map 代表著全局初始化參數(web.xml中context-param).key:參數名稱。value:參數值