jsp內(nèi)置對象是什么?JSP內(nèi)置對象是Web容器創(chuàng)建的一組對象,不使用new關(guān)鍵字創(chuàng)建,就可以直接使用。JSP全名為Java Server Pages,中文名叫java服務(wù)器頁面。那么常見的jsp內(nèi)置對象有哪些呢?
常見的九大jsp內(nèi)置對象詳細(xì)介紹:
JSP中一共預(yù)先定義了9個這樣的對象,分別為:request、response、session、application、out、pagecontext、config、page、exception
out對象:
緩沖區(qū)——Buffer,就是內(nèi)存的一塊區(qū)域,用來保存臨時數(shù)據(jù)。
out對象是JSPWriter類的實例,向客戶端輸出內(nèi)容時常用的對象。
out對象常用的方法有:
- void println() 向客戶端打印字符串;
- void flush() 將緩沖區(qū)內(nèi)容輸出到客戶端;
- void clear() 清除緩沖區(qū)的內(nèi)容,如果在flush之后調(diào)用會拋出異常;
- void clearBuffer() 清除緩沖區(qū)的內(nèi)容,在flush之后調(diào)用不會拋出異常;
- int getBufferSize() 返回緩沖區(qū)字節(jié)數(shù)的大小,如果不設(shè)緩沖區(qū)則為0;
- int getRemaining() 返回緩沖區(qū)還剩余多少可用;
- boolean isAutoFlush() 返回緩沖區(qū)滿時,是自動清空還是拋出異常;
- void close() 關(guān)閉輸出流
get與post的區(qū)別:
表單有兩種提交方式:get與post
提交方式 | 提交內(nèi)容的方式 | 數(shù)據(jù)量大小 | 安全性 | 效率 | 適用情況 |
---|---|---|---|---|---|
get | 明文,通過URL提交數(shù)據(jù)(數(shù)據(jù)在URL中可以看到) | 不超過2KB | 較低 | 高 | 適合提交數(shù)據(jù)量不大,安全性不高,的數(shù)據(jù);比如:搜素、查詢等功能。 |
post | 將用戶提交的信息封裝在HTML HEADER內(nèi) | 數(shù)據(jù)量大 | 高 | 適合提交數(shù)據(jù)量大,安全性高,的用戶信息;比如:注冊、修改、上傳等功能。 |
request對象:
客戶端的請求信息被封裝在request對象中,通過它才能了解到客戶的需求,然后做出響應(yīng)。
request對象是HttpServletRequest類的實例。
request對象具有請求域,即完成客戶端的請求之前,該對象一直有效。
常用的方法有:
- String getParameter(String name) 返回指定參數(shù)的參數(shù)值;
- String[] getParameterValues(String name) 返回包含指定參數(shù)的所有參數(shù)值的數(shù)組;
- void setAttribute(String,Object) 存儲此請求中的屬性;
- object getAttribute(String name) 返回指定屬性的屬性值;
- String getContentType() 得到請求體的MIME類型;
- Stirng getProtocol() 返回請求的協(xié)議類型和版本號;
- String getServerName() 返回接收請求的服務(wù)器主機名;
- int getServerPort() 返回服務(wù)器接收此請求所用的端口號;
- String getCharacterEncoding() 返回字符編碼方式;
- int getContentLength() 返回請求體的長度(字節(jié)數(shù));
- String getRemoteAddr() 返回發(fā)送此請求的客戶端IP地址;
- String getRealPath(String path) 返回某虛擬路徑的真實路徑;
- String getContentPath() 返回上下文路徑。
response對象:
response對象包含了,響應(yīng)客戶請求的有關(guān)信息,在JSP中很少直接用到它。
response對象是HttpServletResponse類的實例。
response對象具有頁面作用域,即訪問一個頁面時,該頁面內(nèi)的response對象只能對這次訪問有效,其它頁面的response對象對當(dāng)前頁面無效。
常用的方法:
- String getCharacterEncoding() 返回響應(yīng)的字符編碼;
- void setContentType(String type) 設(shè)置響應(yīng)的MIME類型;
- PrintWriter getWriter() 返回一個 可以向客戶端輸出字符的 對象;(response對象生成的輸出流對象,出現(xiàn)在out內(nèi)置對象的前面)
- sendRedirect(java.lang.String location) 重新定向客戶端的請求。
請求轉(zhuǎn)發(fā)VS請求重定向
方式 | Client/Server | 方法 | 說明 | URL內(nèi)容 |
---|---|---|---|---|
請求重定向 | 客戶端行為 | response.sendRedirect() | 本質(zhì)上等同于兩次請求,前一次的請求對象不會保存 | URL改變 |
請求轉(zhuǎn)發(fā) | 服務(wù)器行為 | request.getRequestDispatcher().forward(req,resp) | 一次請求,轉(zhuǎn)發(fā)后請求對象會保存 | URL不變 |
session對象:
session:客戶端與服務(wù)器的一次會話
Web中的session:用戶在瀏覽某個網(wǎng)站時,從進入網(wǎng)站,到瀏覽器關(guān)閉所經(jīng)過的這段時間,也就是,用戶瀏覽這個網(wǎng)站所花費的時間。
session實際上是一個特定的時間概念。
session對象在第一個JSP頁面被裝載時自動創(chuàng)建,開始會話期管理。
一個session:從客戶打開瀏覽器并連接到服務(wù)器開始,到客戶關(guān)閉瀏覽器離開這個服務(wù)器結(jié)束。
session對象,是HttpSession類的實例。
常用的方法:
- long getCreationTime() 返回session創(chuàng)建時間;
- String getId() 返回session創(chuàng)建時JSP引擎為它設(shè)的唯一ID號;
- Object setAttribute(String name,Object value) 使用指定名稱將對象綁定到此會話;
- Object getAttribute(String name) 返回此對話中,與指定名稱綁定在一起的對象,如果該名稱下沒有綁定對象,返回null;
- String[] getValueNames() 返回一個 包含此會話中所有可用屬性 的數(shù)組;
- int getMaxInactiveInterval() 返回兩次請求間隔多長時間此session被取消;
- void setMaxInactiveInterval(long time) 設(shè)置兩次請求間隔多長時間此session被取消。
Session的生命周期
創(chuàng)建:當(dāng)客戶端第一次訪問某個jsp或者Servlet的時候,服務(wù)器會為當(dāng)前會話創(chuàng)建一個SessionId,每次客戶端向服務(wù)器端發(fā)送請求時,都會將該SessionId攜帶過去,服務(wù)器端會對此SessionId進行校驗。
活動:
- 某次會話當(dāng)中,通過超鏈接打開的新頁面,屬于同一次會話;
- 只要當(dāng)前會話頁面沒有全部關(guān)閉,重新打開新的瀏覽器窗口訪問同一項目資源時屬于同一次會話;
- 除非本次會話的所有頁面都關(guān)閉后,再重新訪問某個jsp或者servlet將會創(chuàng)建新的會話。
銷毀:
session的銷毀方式有3種:
- 調(diào)用session.invalidate()方法;
- Session過期(超時);
- 服務(wù)器重新啟動。
tomcat默認(rèn)session超時時間為30分鐘,
設(shè)置Session超時,兩種方式:
- session.setMaxInactiveInterval(time) //單位是秒;
- 在web.xml中配置
<session-config>
<session-timeout>
10
</session-timeout>
</session-config> //單位是分鐘
application對象:
application對象,實現(xiàn)用戶間數(shù)據(jù)的共享,可存放全局變量;
application對象,開始于服務(wù)器啟動,終止于服務(wù)器關(guān)閉;
在用戶的前后連接或不同用戶之間的連接中,可以對application對象的同一屬性進行操作;
在任何地方對application對象屬性的操作,都將影響到其他用戶對此的訪問;
application對象是ServletContext類的實例。
常用的方法:
- void setAttribute(String name,Object value) 使用指定名稱將對象綁定到此會話;
- Object getAttribute(String name) 返回此會話中,指定名稱綁定的對象,如果該名稱沒有綁定任何對象,則返回null;
- Enumeration getAttributeNames() 返回此會話所有可用屬性名的枚舉;
- String getServerInfo() 返回JSP(servlet)引擎名及版本號。
page對象:
page對象,就是指當(dāng)前JSP頁面本身,有點像類中的this指針;
page對象,是java.lang.Object類的實例。
pageContext對象
pageContext對象,提供了對JSP頁面內(nèi)所有對象及名字空間的訪問;
pageContext對象,可以訪問到本頁所在的session,也可以取本頁面所在的application的某一屬性值;
pageContext對象是pageContext類的實例。
config對象:
config對象,是在一個servlet初始化時,jsp引擎向它傳遞信息用的,此信息包括servlet初始化時所要用到的參數(shù)(由屬性名和屬性值構(gòu)成)以及服務(wù)器的有關(guān)信息(傳遞一個ServletContext對象);
常用的方法:
- ServletContext getServletContext() 返回含有服務(wù)器相關(guān)信息的ServletContext對象;
- String getInitParameter(String name) 返回初始化參數(shù)的值;
- Enumeration getInitParameterNames() 返回Servlet初始化所需要的所有參數(shù)的枚舉。
exception對象:
exception對象,是一個異常對象,當(dāng)一個頁面在運行過程中發(fā)生了異常,就產(chǎn)生這個對象。如果一個Jsp頁面要應(yīng)用此對象,就必須把isErrorPage設(shè)為true,否則無法編譯。是java.lang.Throwable的對象。
常用方法:
- String getMessage() 返回描述異常的消息;
- String toString() 返回關(guān)于異常的簡短描述消息;
- void printStackTrace() 顯示異常及其棧軌跡;
- Throwable FillInStackTrace() 重寫異常的執(zhí)行棧軌跡。