1.作用範圍
pageContext:頁面容器,默認在當前頁面中起作用
request:在一次服務器跳轉中有效。通過超鏈接跳轉,地址欄改變,屬於客戶端跳轉,request無效。request表示客戶端的請求,一次請求服務器只會給予一次迴應。如果請求的同時地址欄改變了,它也相當於一次請求,那麼第一次請求的內容就已經消失了,無法取得。
session:在一個瀏覽器中始終有效。每一個新的瀏覽器連接上服務器後就是一個新的session,表示每一位不同的上網者各自的屬性,所以新的瀏覽器打開後無法取得其它session設置的屬性。
application:在同一臺服務器活動範圍內所有用戶可見,不管何種跳轉。不過設置過多會影響服務器性能。
注意:<jsp:forward page=""/>
屬於服務器跳轉,無條件直接跳轉
response.setHeader()和response.sendRedirect()通過頭信息跳轉方式的屬於客戶端跳轉
只有服務器端跳轉才能夠將request範圍的屬性保存到跳轉頁
如果使用的是服務器跳轉,則執行到跳轉語句時會立刻進行跳轉;如果使用客戶端跳轉,則是在整個頁面執行完之後才執行跳轉。
2.各內置對象常用法法
pageContext進行屬性設置,方法:
public abstract void setAttribute(java.lang.String name,java.lang.Object o,int scope)
第四個參數指定page屬性範圍。較少使用。
內置對象共有方法:
public void setAttribute(String name,Object c):設置屬性的名稱及內容
public Object getAttribute(String name):根據屬性名稱
public void removeAttribute(String name):刪除指定的屬性
1).request對象
方法:
public String getParameter(String name):接收客戶端發來的請求參數內容
public String[] getParameterValues(String name):取得客戶端發來的一組請求參數內容
public Enumeratioin getParameterNames():取得全部請求參數的名稱
void setCharacterEncoding(String env):設置統一的請求編碼
public Httpsession getSession():取得當前的session對象
public String getContextPath():取得上下文資源路徑
eg:
Enumeration enu = request.getParameterNames();
while(enu.hasMoreElements()){
String paramName = (String)enu.nextElement();
if(paramName.startsWith("**"){
String[] paramValue = request.getParameterValues(paramName);
for(int x=0;x<paramValue.length;x++){
System.out.println(paramValue[x]);
}
}else{
String paramValue = request.getParameter(paramName);
System.out.println(paramValue);
}
}
2).response對象
方法:
public void addCookie(Cookie cookie):向客戶端加加Cookie
public void setHeader(String name,String value):設置迴應的頭信息
public void sendRedirect(String location):頁面跳轉
eg:
response.setHeader("refresh","2;URL=XXX.html");//兩秒後跳轉
3).Cookie對象
方法;
public Cookie(String name,String value):實例化Cookie對象,同時設置Cookie的名稱和內容
public String getName():取得Cookie的名稱
public String getValue():取得Cookie的內容
public void setMaxAge(int expiry):設置Cookie的保存時間,以秒爲單位
4).Session對象
public String getId():取得Session ID
public boolean isNew():判斷是否是新的session(新用戶)
public void invalidate():讓session失效
public Enumeration getAttributeNames():得到全部屬性的名稱
5).application對象
方法:
String getRealPath(String path):得到虛擬目錄對應的絕對路徑,常用於文件上傳,確保絕對路徑有效
6).config對象
方法:
public String getInitParameter(String name):取得指定名稱的初始化參數內容
public Enumeration getInitParameterNames():取得全部的初始化參數名稱
需要修改web.xml置置初始化參數