JSP九大內(nèi)置對象
JSP有九個內(nèi)置對象(又叫隱含對象),不需要預(yù)先聲明就可以在腳本代碼和表達(dá)式中使用,分別有四個作用域?qū)ο蟆緩男〉酱螅簆ageContext、request、session、application】和五個其他對象【out、response、config、page、exception】
1、pageContext對象
作用:pageContext 對象的作用是取得任何范圍的參數(shù),通過它可以獲取 JSP頁面的out、request、reponse、session、application 等對象。pageContext對象的創(chuàng)建和初始化都是由容器來完成的,在JSP頁面中可以直接使用 pageContext對象。
生命周期:當(dāng)前頁面
2、request對象
作用:request 對象是 javax.servlet.httpServletRequest類型的對象。 該對象代表了客戶端的請求信息,主要用于接受通過HTTP協(xié)議傳送到服務(wù)器的數(shù)據(jù)。(包括頭信息、系統(tǒng)信息、請求方式以及請求參數(shù)等)。生命周期:一次請求
常用方法如下:
? ? ? ? //1、設(shè)置字符編號集utf-8,處理請求過程中的中文亂碼
? ? ? ? request.setCharacterEncoding("utf-8");
? ? ? ? //2、按照參數(shù)名稱,獲取請求中的參數(shù)值
? ? ? ? request.getParameter("");
? ? ? ? //3、請求轉(zhuǎn)發(fā)【服務(wù)器】:服務(wù)器端直接轉(zhuǎn)發(fā)請求,跳轉(zhuǎn)并執(zhí)行新頁面
? ? ? ? request.getRequestDispatcher("list_product.jsp").forward(request,response);
? ? ? ? //4、在請求轉(zhuǎn)發(fā)前,存入KV鍵值對
? ? ? ? request.setAttribute("key","value");
? ? ? ? //5、在請求轉(zhuǎn)發(fā)后,根據(jù)key獲取value
? ? ? ? request.getAttribute("key");
? ? ? ? //6、獲取當(dāng)前應(yīng)用在服務(wù)器端的真實(shí)路徑
? ? ? ? request.getRealPath("");
? ? ? ? //7、項(xiàng)目運(yùn)行時的應(yīng)用的訪問名稱
? ? ? ? request.getContextPath();
? ? ? ? //8、獲取當(dāng)前請求的方式
? ? ? ? request.getMethod();
? ? ? ? //9、獲取發(fā)起本次請求的客戶端IP地址
? ? ? ? request.getRemoteAddr();
? ? ? ? //10、獲取服務(wù)器本地的IP地址
? ? ? ? request.getLocalAddr();
3、session對象
作用:session 對象是由服務(wù)器自動創(chuàng)建的與用戶請求相關(guān)的對象。服務(wù)器為每個用戶都生成一個session對象,用于保存該用戶的信息,跟蹤用戶的操作狀態(tài)。session對象內(nèi)部使用Map類來保存數(shù)據(jù),因此保存數(shù)據(jù)的格式為 “Key/value”。 session對象的key為String類型,value值為Object類型。
生命周期:開始于客戶端的第一次"請求";結(jié)束于 ①客戶端瀏覽器關(guān)閉? ?②客戶端請求超時(Tomcat默認(rèn)為30分鐘)? ? ③服務(wù)器關(guān)閉
常用方法如下:
? ? ? ? //1、獲取當(dāng)前Session會話對象
? ? ? ? HttpSessionsession=request.getSession();
? ? ? ? //2、獲取當(dāng)前會話ID
? ? ? ? session.getId();
? ? ? ? //3、將當(dāng)前KV鍵值對,存入Session會話(服務(wù)器端)
? ? ? ? session.setAttribute("key","value");
? ? ? ? //4、從當(dāng)前Session會話中,根據(jù)key獲取value
? ? ? ? session.getAttribute("key");
? ? ? ? //5、獲取當(dāng)前Session 的創(chuàng)建時間
? ? ? ? newDate(session.getCreationTime());
? ? ? ? //6、本次會話最后一次訪問時間
? ? ? ? newDate(session.getLastAccessedTime());
4、application對象
作用:application 對象可將信息保存在服務(wù)器中,直到服務(wù)器關(guān)閉,否則application對象中保存的信息會在整個應(yīng)用中都有效。與session對象相比,application對象生命周期更長生命周期:開始于服務(wù)器啟動;結(jié)束于服務(wù)器關(guān)閉
常用方法如下:
? ? ? ? //1、獲取application對象
? ? ? ? ServletContextapplication=request.getServletContext();
? ? ? ? //2、獲取application的真實(shí)路徑
? ? ? ? application.getRealPath("");
? ? ? ? //3、獲取應(yīng)用訪問名稱
? ? ? ? application.getContextPath();
? ? ? ? //4、獲取Session超時時間
? ? ? ? application.getSessionTimeout();
5、out
作用:out 對象用于在Web瀏覽器內(nèi)輸出信息,并且管理應(yīng)用服務(wù)器上的輸出緩沖區(qū)。在使用 out 對象輸出數(shù)據(jù)時,可以對數(shù)據(jù)緩沖區(qū)進(jìn)行操作,及時清除緩沖區(qū)中的殘余數(shù)據(jù),為其他的輸出讓出緩沖空間。待數(shù)據(jù)輸出完畢后,要及時關(guān)閉輸出流。
6、response
作用:response 代表的是對客戶端的響應(yīng),主要是將JSP容器處理過的對象傳回到客戶端。response對象也具有作用域,它只在JSP頁面內(nèi)有效。
? ? ? ? //1、設(shè)置字符編碼集為utf-8,處理響應(yīng)過程中的中文亂碼
? ? ? ? response.setContentType("text/html;charset=utf-8");
? ? ? ? //2、獲取響應(yīng)輸出對象
? ? ? ? response.getWriter();
? ? ? ? //3、重定向【客戶端】:通知客戶端瀏覽器,重新定向請求新的頁面地址,響應(yīng)(輸出)新頁面至客戶端瀏覽器
? ? ? ? response.sendRedirect("index.html");
7、config
作用:config 對象的主要作用是取得服務(wù)器的配置信息。通過 pageContext對象的 getServletConfig() 方法可以獲取一個config對象。當(dāng)一個Servlet 初始化時,容器把某些信息通過 config對象傳遞給這個 Servlet。
8、page
作用:page 對象代表JSP本身,是當(dāng)前頁面的Servlet實(shí)例,只有在JSP頁面內(nèi)才是合法的。
9、exception
作用:exception 對象的作用是顯示異常信息,只有在包含 isErrorPage="true" 的頁面中才可以被使用,在一般的JSP頁面中使用該對象將無法編譯JSP文件。如果在JSP頁面中出現(xiàn)沒有捕獲到的異常,就會生成 exception 對象,并把 exception 對象傳送到在page指令中設(shè)定的錯誤頁面中,然后在錯誤頁面中處理相應(yīng)的 exception 對象。