四種存儲數據的容器對象:page、request、session、applicationcss
(1)page對象html
是java.lang.Object類的一個實例。它指的是JSP實現類的實例,也就是說它是JSP自己,經過這個對象能夠對它進行訪問。java
JSP實現了類對象的一個句柄,只有在JSP頁面的範圍內纔是合法的。瀏覽器
(2)request對象緩存
是ServletRequest的一個實例。服務器
當客戶端提交一個請求時,JSP引擎會將客戶端的請求信息包裝在一個request對象中,請求信息的內容包括請求的標題頭(Header),信息(如瀏覽器的版本信息,語言和編碼方式等),請求的方式(如HTTP方法:GET,POST,PUT等),請求的參數名稱,參數值和客戶端的主機名稱等,而後將request對象看成jspService方法的HttpServletRequest參數值,因此咱們能夠經過這個對象來取得有關客戶端的請求信息。request對象的主要方法:session
getServerPort() 返回接收請求的服務器端的端口號app
getServerName() 返回接收請求的服務器的主機名jsp
getScheme() 返回發出請求的 URL 的機制ide
getRemoteHost() 返回發送請求的接口程序的徹底限定的主機名
getRemoteAddr() 返回發送請求的接口程序的 IP 地址
getRealPath() 返回運用替換規則從虛擬地址中得到的實際地址
getReader() 返回從請求體中讀取的文本的緩存數據
getProtocol()返回請求的協議和版本號
getParameterValues() 返回做爲字符串列舉的指定參數的值
getParameterName() 返回本次請求的參數名字
getParameter() 返回包含指定參數的單獨值的字符串
getlnputStream() 返回在請求體中讀取二進制數據的輸入流
getContenType() 返回請求實體數據的InternetMedia 類型
getContentLength() 返回請求實體數據的大小
getCharacterEncoding() 返回爲請求的輸入進行編碼的字符集合
getAttribute() 返回請求的給出名稱的屬性的值
request對象實例
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'request.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body bgcolor="#ffffff"> <form action="request1.jsp" method="POST"> 姓名:<input type="text" name="username"/><br> 密碼:<input type="password" name="password"/><br> <input type="submit" value="提交"/> <input type="reset" value="重置"/> </form> </body> </body> </html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'request1.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body bgcolor="#ffffff"> 服務器的名稱爲:<%=request.getServerName()%><br> 服務器的端口號爲:<%=request.getServerPort()%><br> 用戶名爲:<%=request.getParameter("username")%><br> 密碼爲:<%=request.getParameter("password")%> </body> </html>
(3)session對象
是HttpSession.HttpSession由服務器的程序實現,
提供HTTP服務器和HTTP客戶端之間的會話。會話就是在給定時間段內持續進行多路鏈接和請求。
會話被用來在多頁面請求中保持狀態和用戶認證。
session用來儲存訪問者的一些特定信息,服務器就是根據session來跟蹤這些信息的。
session能夠建立訪問者信息容器。
session跟蹤訪問者的訪問路徑,從中挖掘有用的信息。
session在JSP程序中是一個內置的對象,每個客戶端都有一個session對象用來存放這個客戶端相關的數據。
用戶在Web應用程序中訪問同一頁面時,session變量始終存在,當用戶在應用程序的頁之間跳轉時,存儲在session對象中的變量也不會清除,固然也可使用session方法顯式地結束一個會話和設置空閒會話的超時期限。session對象的方法:
setAttribute() 設置指定名稱爲name的屬性值value,並將之儲存在session對象中
getAttribute() 獲取於指定名稱name相聯繫的屬性值
getAttributeNames() 返回session對象中存儲的每個屬性對象,其結果爲一個枚舉類的實例
removeValue() 移去和會話應用層數據中指定名稱相連的對象
putValue() 將指定的對象和使用指定名稱的會話應用層數據相連
isNew() 若是客戶端不接受使用session,那麼每一個請求都會產生一個session對象
invalidate() 使會話無效,並將其從上下文中移出
getValueNames() 返回和會話相連的應用層數據對象的名稱
getValue() 返回和應用層數據中指定名稱相聯繫的對象
getSessionContext()返回會話相連的上下文
getLastAccessTime() 返回客戶端上一次發送攜帶會話帳號的時間
getId() 返回會話標識符
getCreationTime() 返回會話建立的時間
(4)application對象
用於在多個程序中保存信息。
能夠實現全部用戶間共享信息的功能,並能夠在Web應用程序運行期間持久地保持數據。
與application相聯繫的是ServletContext類,經過調用getServletConfig().getContext()方法獲得。
一旦建立application對象,該對象將一直保持下去,直到服務器關閉爲止。
注意:每一個用戶的application對象都是相同的,每個用戶都共用同一個application對象。
Application對象主要方法:
getAttribute(String name) 返回由name指定名稱的application對象的屬性值
getAttributeNames() 返回全部application對象的屬性名稱。
getInitParameter(String name) 返回由name指定的名字的application對象的某個屬性的初始值
getServletInfo() 返回servlet編譯器當前版本信息
setAttribute(String name , Object object) 設置指定名字name的application對象的屬性值object
application對象實例(經常使用於顯示訪問頁面的次數。)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'request1.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <% int i=0; if(application.getAttribute("count")==null){ application.setAttribute("count",1); i=1; } else { i=(Integer)application.getAttribute("count")+1; application.setAttribute("count",i); } %> <h1> 您是第<%=i%>位訪問該頁面的用戶。 </h1> </body> </html>
(5)out對象
out對象
用於輸出數據,它是javax.servlet.jsp.JspWriter的一個實例。
out對象的範圍是page。
若是page指令選擇了autoFlush=「true」,那麼當出現因爲當前的操做不清空緩存而形成緩衝區溢出的狀況時,這個類的全部I/O操做便會自動清空緩衝區的內容。
若是autoFlush="false",那麼當操做形成了緩衝區溢出時,這個類的全部的I/O操做都將拋出一個IOException異常。
out對象的主要方法:
out.print(boolean)out.println(boolean)輸出Boolean類型數據
out.print(char)out.println(char) 輸出char類型數據
out.print(char[])out.println(char[])輸出char[]類型數據
out.print(doubleout.println(double) 輸出double類型數據
out.print(float)out.println(float) 輸出float類型數據
out.print(int)out.println(int) 輸出int類型數據
out.print(long)out.println(long) 輸出long類型數據
out.print(Object)out.println(Object) 輸出Object類型數據
out.print(String)out.println(String) 輸出String類型數據
out.newLine() 輸出一個換行符
out.flush() 輸出緩衝區的數據
out.close() 關閉輸出流
out.clearBuffer() 清除緩衝區裏的數據,並把數據輸出到客戶端
out.cleat() 清除緩衝區裏的數據,但不會把數據輸出到客戶端
out.getBufferSize() 得到緩衝區的大小
out.getRemaining() 得到緩衝區中沒有被佔用的空間大小
out.isAutoFlush() 返回布爾值。若AutoFlush爲真,則返回「ture」;反之則返回「false」
out對象實例
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'out.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <% out.println("<html>"); out.println("<head>"); out.println("<title>"); out.println("test"); out.println("</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>"); out.println("out對象示例"); out.println("</h1>"); out.println("</body>"); out.println("</html>"); %> </body> </html>
(6)response對象
被封裝成HttpServletResponse接口。
它封裝了JSP產生的響應,而後被髮送到客戶端以響應客戶的請求。
和request對象同樣,它由容器生成,做爲jspService()方法的參數被傳入JSP。由於輸出流是緩衝的,因此能夠設置HTTP狀態碼和response頭。response對象的主要方法:
sendRedirect()把響應發送到另外一個位置進行處理
setHeader() 設定指定名稱的HTTP文件頭的值
sendError() 向客戶端發送錯誤信息
containsHeader() 判斷指定的HTTP文件頭是否存在
addHeader() 添加HTTP文件頭(Header),將會傳送到客戶端
addCookie() 添加一個Cookie對象,用來保存客戶端的用戶信息
setContentType() 設置響應的MIME類型
setContentLength() 設置響應的MIME長度
getCharacterEncoding() 返回用於MIME編碼的字符集合
reponse對象實例
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'request1.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body bgcolor="#ffffff"> <%-- 服務器的名稱爲:<%=request.getServerName()%><br> 服務器的端口號爲:<%=request.getServerPort()%><br> 用戶名爲:<%=request.getParameter("username")%><br> 密碼爲:<%=request.getParameter("password")%> --%> <% String name=request.getParameter("username"); String pass=request.getParameter("password"); if(name!=null&&pass!=null){ response.sendRedirect("next.jsp"); }else{ response.sendRedirect("error.jsp"); } %> </body> </html>
(7)pageContext對象
被封裝成javax.servlet.jsp.pageContext接口,它爲JSP頁面提供包裝頁面的上下文功能。
管理對屬於JSP中特殊可見部分已命名對象的訪問。它的建立和初始化都是由容器來完成的,JSP頁面中能夠直接使用pageContext對象的句柄。
pageContext對象的getXXX()、setXXX()和findXXX()方法用來根據不一樣的對象範圍實現對這些對象的管理。pageContext對象主要是管理對屬於JSP特殊可見部分中已經命名對象的訪問。pageContext對象經常使用方法:
forward(String relativeUrlPath) 把頁面重定向到另一個頁面或者Servlet組件上
getAttribute(String name,[nt scope]) scope參數是可選的。該方法用來檢索一個特定的已經命名的對象的範圍,而且還能夠經過調用getAttributeNamesScope()方法,檢索第某個特定範圍的每一個屬性String字符串名字的枚舉。
getException() 返回當前的Exception對象。
getRequest() 返回當前的request對象。
getResponse() 返回當前的Response對象。
getServletConfig() 返回當前頁面的servletConfig對象。
getservletContext() 返回servletContext對象。
getSession() 返回當前頁面的Session對象。
findAttribute() 方法則是能夠用來按照頁面、請求、會話以及應用程序範圍的順序實現對某個已命名屬性的搜索。
setAttribute() 用來設置默認頁面範圍或特定範圍之中的已命名對象
removeAttribute()
(8)config對象
被封裝成javax.servlet.ServletConfig接口
它表示Servlet的配置,當一個Servlet初始化時,容器把某些信息經過此對象傳遞給初始化的Servlet。
經常使用的方法有:
getServletContext() 返回執行者的Servlet上下文。
getServletName() 返回Servlet的名稱。
getInitParameter(String name) 返回名字爲name的初始參數值
getInitParameterNames()返回JSP文件中的全部參數的名稱
(9)exception對象
是java.lang.Throwable類的一個實例。
它指的是運行時的異常,也就是被調用的錯誤頁面的結果,只有在錯誤頁面(在頁面指令中要有isErrorPage=ture的頁面)中才可使用。
注意:要使用exception對象,必定要加上isErrorPage="true"這句代碼。