內置對象:就是在JSP中無需創建就可使用的稱爲內置對象,它是有容器創建的(如Tomcat、JBoss、weblgic等容器創建)。
JSP九大內置對象分別爲:out、request、response、session、application、pageContext、page、config、exception。
1、out對象
向客戶端輸出信息,它是JspWriter類的一個實例。
常用的有out.print();或out.println();
2、request對象
獲取客戶端傳遞到服務器的信息。request對象實現了HttpServletRequest接口,而此接口又繼承與ServletRequest接口。由於接口是不能創建對象的,所以可以通過反射(request.getClass().getName())來獲得request對象屬於具體的哪個類,不同的容器(服務器)會產生不一樣的結果。
request對象常用的方法:
getParameter():獲得客戶端傳遞給服務器一個參數的值。
getParameterNames():獲得客戶端傳遞給服務器的所有參數的名字。
getParameterValues():獲取一個參數的所有值(如checkBox的情況)。
setAttribute(),getAttribute(),removeAttribute():這三個方法主要用於struts框架中,必須在同一個請求中設置的屬性才能獲得。
getCookies():把個人信息存放到客戶端。
setCharacterEncoding()/getCharacterEncoding():設置/獲得字符編碼。
getContextLength():獲得整個網頁的長度(長度不確定時返回-1).
getRequestURL():返回當前網頁的地址(http://localhost:8080/項目名/具體頁面.jsp)。
getRequestURI():返回項目名/具體網頁.jsp。
getMethod():獲得網頁提交的方法,默認爲get,還可以設置爲post。
getRemoteAddr():獲得遠程地址。
getRemoteHost():獲得遠程主機的名稱。
getServerPort():端口號(一般默認是8080)。
getServletPath():/具體網頁.jsp。
getContextPath():/項目名,獲得的是上下文路徑。
getHeader(),getHeaders(),getHeaderNames():request.getHeader("Referer");獲得來自的網頁。
3、response對象
向客戶端瀏覽器輸出信息,對客戶的請求進行響應。它是實現了HttpServletResponse接口,此接口繼承與ServletResponse,與request對象類似,根據反射機制,由於服務器不同,具體的類也不一樣。
4、session對象
會話對象,它是實現HttpSession接口。它們有會話失效時間,tomcat默認是30分鐘,可以設置。每個用戶的會話空間是隔離的,例如用戶商城網站,每個人買的東西都不一樣,他們各自把選的商品放在各自的購物車中,互不影響。
5、Application對象
應用對象,它是實現ServletContext接口。Application、Session、request都可以通過setAttribute來設置屬性,通過getAttribute來獲取屬性的值。但是它們的可見範圍是不一樣的。
Application對象所設置的屬性不會過期,它在整個服務器運行過程中都是有效的,直到服務器重啓。
Session對象所設置的屬性只有在同一個session中可見。
request對象所設置的屬性只有在同一次請求之間可見。
通過Application.getRealPath();可以獲得其真實路徑。
如c:\workspace\.metadate\.plugins\org.eclipse.wst.server.core\temp0\wtpwebapps\項目名(這是項目最後部署完成的一個目錄)。
6、page對象
JSP網頁在翻譯時會轉換成一個servlet(而此servlet是一個類)。
它是JSP網頁本身,page對象是當前網頁轉換後的servlet類的實例。
7、config對象
一般用來配置指定的JSP參數,它是實現了ServletConfig接口。
8、exception對象
在可能產生錯誤的文件中用page指令指定errorPage(例如在test.jsp頁面中設置errorPage="error.jsp"),然後在error.jsp頁面中指定isErrorPage="true",用exception對象獲取錯誤信息。
9、pageContext對象
它是PageContext類的一個實例。
它主要有以下兩個作用:
獲取其它八大對象的句柄
pageContext.getOut(); //獲得out對象的句柄
pageContext.getRequest(); //獲得request對象的句柄
pageContext.getResponse(); //獲得response對象的句柄
pageContext.getSession(); //獲得session對象的句柄
pageContext.getServletContext();//獲得application對象的句柄
pageContext.getServletConfig(); //獲得config對象的句柄
pageContext.getException(); //獲得exception對象的句柄
pageContext.getPage(); //獲得page對象的句柄
設置或獲取4(page,request,session,application)個不同範圍的值
pageContext.setAttribute("name","zhang"); //只在本頁面有效
pageContext.setAttribute("name","zhang",PageContext.REQUEST_SCOPE);
相當於request.setAttribute("name","zhang"); //只在同一次請求中有效
pageContext.setAttribute("name","zhang",PageContext.SESSION_SCOPE);
相當於session.setAttribute("name","zhang"); //只在同一次會話中有效
pageContext.setAttribute("name","zhang",PageContext.APPLICATION_SCOPE);
相當於application.setAttribute("name","zhang"); //在整個應用中都有效