JSP(Java Server Page)九大內置對象
× Web程序的請求相應模式(請求[request]、響應[response])
× form method="get"和method="post"提交方式的區別
1.get:以明文形式通過url進行參數的傳遞,數據能在url獲取,提交的數據最多不超過2KB,安全性低但效率比post高。
適用於提交數據量不大,安全性不高的數據。eg:搜索、查詢等
適用提交數據量大,安全性高的用戶信息。eg:註冊、修改、上傳
×請求轉發與請求重定向的區別
操作名 | 行為 | 方法 | 描述 |
請求重定向 | 客戶端行為 | response.sendRedirect("url path"); |
相當於兩次請求,前一次的請求對象不會被保存,且url地址會發生變化 |
請求轉發 | 服務端行為 | request.getRequestDispatcher("urlpath").forward(request,response); | 一次請求,轉發後請求對象會被保存,地址欄不會變化 |
通俗易懂點講:
重定向:這事不歸我管,你自己走去XXX弄 (客戶端行為)
轉發:這事不歸我管,但我能幫你轉交給XXX(服務端行為)
九大內置對象(out、request、response、session、application、page、pageContext、exception)
1.out對象(JspWriter類的實例,向客戶端[瀏覽器]輸出內容常用的對象)
常用方法:
-
void println(); 向客戶端打印字符串。
-
void clear(); 清除緩存區的內容,如果在flush之後調用會拋出異常。
-
void clearBuffer(); 清除緩沖區的內容,如果在flush之後調用不會拋出異常。
-
void flush(); 將緩沖區內容輸出到客戶端。
-
int getBufferSize(); 返回緩沖區以字節數的大小,若不設緩沖區則為0。
-
int getRemaining() 返回緩沖區剩余可用空間大小。
-
boolean isAutoFlush(); 當緩沖區滿時,是否自動清空,若否,則拋出異常。
-
void close(); 關閉輸出流。
2.request對象 |—1.HttpServletRequest的實例對象;
|—2.客戶端的請求信息被封裝到該對象中,通過該對象獲取信息,並且做出響應;
|—3.該對象具有請求域,即在完成用戶請求之前,該對象一直有效;
常用方法:
-
String getParameter(String param); 返回指定參數param的參數值。
-
String[] getParameterValues(String param); 返回包含參數param的所有參數值的數組。
-
void setAttribute(String param,Object obj); 將obj對象以param指明保存到request對象中。
-
Object getAttribute(String param); 返回指定參數名的屬性值。
-
String getContextType(); 得到請求體的MIME類型
-
String getProtocol(); 返回請求體的協議類型以及版本號
-
String getServerName(); 返回接收請求體的服務器主機名
-
int getServerPort(); 返回接收請求體的服務器的端口號
-
String getCharacterEncoding(); 返回字符集編碼
-
void setCharacterEncoding(); 設置字符集編碼
-
int getContentLength(); 以字節數返回請求體的長度
-
String getRemoteAddr(); 返回發送該請求的客戶端IP地址
-
String getRealAddr(); 返回虛擬路徑的真實地址
-
String getContextPath(); 返回上下文路徑(項目名)
3.response對象 |—1.HttpServletResponse的實例對象;
|—2.response對象包含了響應客戶端請求的有關信息,但在JSP中很少直接使用它;
|—3.該對象具有請求域,即訪問一個頁面時,該頁面內的response對象只能對這次訪問有效,其它頁面的response對象對當前頁面無效;
常用方法:
- String getCharacterEncoding(); 返回響應使用的字符編碼
- void setContentType(String type); 設置響應的MIME類型
- PrintWriter getWriter(); 返回可以向客戶端輸出字符的一個對象
(註意:PrintWriter與內置對象out的區別) - sendRedirect(java.lang.String location); 重定向,重新定向客戶端請求。
4.session對象 |—1.HttpSession的實例(表示客戶端與服務器的一次會話);
|—2.session是指用戶瀏覽網站時,從進入網站開始便會產生session,直到瀏覽器關閉時,session也便隨之銷毀;
|—3.session實際上是一個特定的時間觀念;
常用方法:
- long getCreationTime(); 返回session創建時的時間(單位 毫秒)
- String getId(); 返回session的ID(ID為JSP引擎設置)
- Object setAttribute(String name,Object obj); 使用指定名稱將對象捆綁在此次會話中(設置自定義屬性[name]、屬性值[obj])
- Object getAttribute(String name); 返回此次會話中指定屬性名的屬性值,若不存在,返回null
- String[] getValueNames(); 返回一個包含此session中所有可用屬性的數組
- int getMaxInactiveInterval; 返回該session的最大期限[單位 秒](若兩次請求間隔超過期限時間,則該session將被銷毀)
- voidsetMaxInactiveInterval(int second);設置session的最大期限[單位 秒]
× session的生命周期
『 1. 創建 - 當瀏覽器登錄頁面時便創建session
2. 活動
3. 銷毀 - 方式一:session.invalidate();
- 方式二:session超出最大期限 --- Tomcat默認期限為30分鐘
設置最大期限:
1) 調用方法[setMaxInactiveInterval]
2) 在web.xml配置 [ 單位 分鐘]
<session-config>
<session-timeout>10</session-timeout>
</session-config>
- 方式三:服務器重啟
註意:當關閉該session相關的所有頁面時,再次打開頁面將會創建新的session』
5.Application對象 |—1.ServletContext的實例(實現用戶間數據的共享,可存放全局變量);
(說白了就是遊走於整個web應用的對象撒~)
|—2.application對象隨著服務器的啟動而產生,隨著服務器的關閉而消亡;
|—3.在任何地方對application對象操作,都會影響其他用戶的訪問;
常用方法:
- void setAttribute(String name,Object obj); 設置自定義屬性[name]、屬性值[obj]
- Object getAttribute(String name); 返回指定屬性名的屬性值,若不存在,返回null
- Enumeration getAttributeNames(); 返回所有可用屬性名的枚舉
- String getServerInfo(); 返回JSP(servlet)引擎號以及版本號
6.page對象(指JSP頁面本身)
常用方法:
- class getClass(); 返回該Object的Class
- int hashCode(); 返回該Object的hash碼
- boolean equals(Object obj); 判斷該Object是否與指定的Object相等
- void copy(Object obj); 將該Object拷貝到指定的Object中
- Object clone(); 克隆該Object,返回新的Object
- String toString(); 將該Object對象轉換成String對象
- void notify(); 喚醒一個等待的線程
- void notifyAll(); 喚醒所有等待的線程
- void wait(int timeout); 使一個線程處於等待狀態,直到timeout結束或者被notify(喚醒)
- void wait(int timeout); 使一個線程處於等待狀態,直到被notify(喚醒)
7.pageContext對象 |—1.pageContext的實例(對JSP頁面所有對象以及名稱空間的訪問);
|—2.能獲取當前頁面的session、application;
常用方法:
- JspWriter getOut(); 返回當前客戶端響應被使用的JspWriter流(out)
- HttpSession getSession(); 返回當前頁中的HttpSession對象(session)
- Object getPage(); 返回當前頁的Object對象(page)
- ServletRequest getRequest(); 返回當前頁面的ServletRequest對象(request)
- ServletResponse getResponse(); 返回當前頁面的ServletResponse對象(response)
- void setAttribute(String name,Object); 設置自定義屬性[name]、屬性值[obj]
- Object getAttribute(String name,int scope); 返回指定範圍內指定屬性名的屬性值,若不存在,返回null
- int getAttributeScope(String name); 返回某屬性的作用範圍
- void forward(String utlPath); 轉發到urlPath頁面
- void include(String utlPath); 當前位置包含另一個文件
8.config對象(當servlet初始化時,JSP引擎向它傳遞信息,包括參數(形式以鍵值對呈現)以及服務器的有關信息)
說白了就是在serlvet初始化的時候將config以參數形式傳遞給servlet的構造方法
常用方法:
- ServletContext getServletContext(); 返回含有服務器相關信息的SerlvetContext對象
- String getInitParamter(String name); 返回初始化參數的值
- Enumeration getInitParamterNames(); 返回Serlvet初始化所需所有參數的枚舉
9.exception對象(異常對象,當一個頁面運行過程中發生異常,便會產生該對象)
當一個JSP要應用該對象,則必須在page指令內將isErrorPage設為true,且在可能會發生錯誤的頁面的page指令中設置 errorPage="JspPageName" 來指定該頁面
常用方法:
- String getMessage(); 返回描述異常的消息
- String toString(); 返回關於異常的簡短描述信息
- void printStackTrace(); 顯示異常以及其棧軌跡
- Throwable FillInStakTrace(); 重寫異常的執行棧軌跡
JSP(Java Server Page)九大內置對象