Jsp 九大內(nèi)置對(duì)象

Jsp 九大內(nèi)置對(duì)象

什么是內(nèi)置對(duì)象?

JSP 提供了由容器實(shí)現(xiàn)和管理的內(nèi)置對(duì)象,也可以稱之為隱含對(duì)象,由于JSP使用Java作為腳本語(yǔ)言,所以JSP將具有強(qiáng)大的對(duì)象處理能力,并且可以動(dòng)態(tài)創(chuàng)建Web頁(yè)面內(nèi)容。但Java語(yǔ)法在使用一個(gè)對(duì)象前,需要先實(shí)例化這個(gè)對(duì)象,這其實(shí)是一件比較煩瑣的事情。JSP為了簡(jiǎn)化開(kāi)發(fā),提供了一些內(nèi)置對(duì)象,用來(lái)實(shí)現(xiàn)很多JSP應(yīng)用。在使用JSP內(nèi)置對(duì)象時(shí),不需要先定義這些對(duì)象,直接使用即可

四個(gè)作用域?qū)ο螅?/p>

request對(duì)象

request對(duì)象封裝了由客戶端生成的HTTP請(qǐng)求的所有細(xì)節(jié),主要包括HTTP頭信息、系統(tǒng)信息、請(qǐng)求方式和請(qǐng)求參數(shù)等。通過(guò)request對(duì)象提供的相應(yīng)方法可以處理客戶端瀏覽器提交的HTTP請(qǐng)求中的各項(xiàng)參數(shù)。

// 設(shè)置中文編碼

request.setCharacterEncoding("utf-8");

// 按照參數(shù)名稱,獲取獲取請(qǐng)求中的參數(shù)值

request.getParameter("");

// 根據(jù)目標(biāo)地址,獲取RequestDispatcher請(qǐng)求轉(zhuǎn)發(fā)對(duì)象

request.getRequestDispatcher("");

// 在請(qǐng)求轉(zhuǎn)發(fā)前,存入KV鍵值對(duì)

request.setAttribute("key","value");

// 在請(qǐng)求轉(zhuǎn)發(fā)后,根據(jù)key獲取value

request.getAttribute("key");

// 獲取當(dāng)前應(yīng)用在服務(wù)器端的真實(shí)路徑

StringrealPath=request.getRealPath("");

System.out.println("項(xiàng)目運(yùn)行時(shí)的服務(wù)器真實(shí)路徑:"+realPath);

//獲取項(xiàng)目運(yùn)行時(shí)的應(yīng)用的訪問(wèn)名稱

StringcontextPath=request.getContextPath();

System.out.println("項(xiàng)目運(yùn)行時(shí)的應(yīng)用的訪問(wèn)名稱:"+contextPath);

//當(dāng)前請(qǐng)求的方式

Stringmethod=request.getMethod();

System.out.println("當(dāng)前請(qǐng)求的方式:"+method);

// 獲取發(fā)起本次請(qǐng)求的客戶端IP地址

Stringremote=request.getRemoteAddr();

System.out.println("客戶端的IP地址:"+remote);

// 獲取服務(wù)器本地的IP地址

Stringlocal=request.getLocalAddr();

System.out.println("服務(wù)器的IP地址:"+local);

session對(duì)象

指的是客戶端與服務(wù)器的一次會(huì)話 , 一次"會(huì)話"包含若干次"請(qǐng)求"。從客戶連接到服務(wù)器的一個(gè) WebApplication 開(kāi)始 , 直到客戶端與服務(wù)器斷開(kāi)連接為止 ; 它是 HTTPSession 類的實(shí)例 , 作用域?yàn)?session ( 會(huì)話期 )Session會(huì)話的生命周期:會(huì)話開(kāi)始:客戶端的第1次"請(qǐng)求"? 會(huì)話結(jié)束:1.客戶端瀏覽器關(guān)閉;2.客戶端超時(shí)(Tomcat默認(rèn)為30分鐘);3.服務(wù)器關(guān)閉;

// 獲取當(dāng)前Session會(huì)話對(duì)象

HttpSessionsession=request.getSession();

System.out.println("Session ID: "+session.getId());

//將當(dāng)前KV鍵值對(duì),存入Session會(huì)話(服務(wù)器端)

session.setAttribute("key","value");

//從當(dāng)前Session會(huì)話中,根據(jù)key獲取value

session.getAttribute("key");

DatecreationDateTime=newDate(session.getCreationTime());

System.out.println("Session 的創(chuàng)建時(shí)間:"+creationDateTime);

DatelastAccessedDateTime=newDate(session.getLastAccessedTime());

System.out.println("本次會(huì)話最后一次訪問(wèn)時(shí)間:"+lastAccessedDateTime);

//使用Session保存訪問(wèn)次數(shù)

HttpSessionsession=request.getSession();

intcount=0;

if(session.getAttribute("count")!=null) {

? ? // 獲取之前存儲(chǔ)的數(shù)值

? ? count=Integer.parseInt(session.getAttribute("count").toString());

? ? // 重新保存

? ? session.setAttribute("count",++count);

}else{

? ? // 第一次保存

? ? session.setAttribute("count",++count);

}

//設(shè)置中文編碼

response.setContentType("text/html;charset=utf-8");

PrintWriterout=response.getWriter();

out.print("您的訪問(wèn)次數(shù)為:<strong>"+session.getAttribute("count")+"</strong>");

application對(duì)象

實(shí)現(xiàn)了用戶間數(shù)據(jù)的共享 , 可存放全局變量 ; 它開(kāi)始于服務(wù)器的啟動(dòng) , 直到服務(wù)器的關(guān)閉 , 在此期間 , 此對(duì)象將一直存在 ; 這樣在用戶的前后連接或不同用戶之間的連接中 , 可以對(duì)此對(duì)象的同一屬性進(jìn)行操作 ; 在任何地方對(duì)此對(duì)象屬性的操作 , 都將影響到其他用戶對(duì)此的訪問(wèn) ; 服務(wù)器的啟動(dòng)和關(guān)閉決定了 application 對(duì)象的生命 ; 它是 ServletContext 類的實(shí)例。

//使用application對(duì)象保存訪問(wèn)次數(shù)

ServletContextapplication=request.getServletContext();

intcount=0;

if(application.getAttribute("count")!=null) {

? ? // 獲取之前存儲(chǔ)的數(shù)值

? ? count=Integer.parseInt(application.getAttribute("count").toString());

? ? // 重新保存

? ? application.setAttribute("count",++count);

}else{

? ? // 第一次保存

? ? application.setAttribute("count",++count);

}

//獲取application應(yīng)用的真實(shí)路徑

StringrealPath=application.getRealPath("");

System.out.println("應(yīng)用真實(shí)路徑:"+realPath);

//獲取應(yīng)用訪問(wèn)名稱

System.out.println("應(yīng)用訪問(wèn)名稱:"+application.getContextPath());

//獲取ession超時(shí)時(shí)間

System.out.println("Session超時(shí)時(shí)間:"+application.getSessionTimeout());

pageContext 對(duì)象

提供了對(duì) JSP 頁(yè)面內(nèi)所有的對(duì)象及名字空間的訪問(wèn) , 也就是說(shuō)他可以訪問(wèn)到本頁(yè)所在的 session , 也可以取本頁(yè)面所在的 application 的某一屬性值 , pageContext對(duì)象的創(chuàng)建和初始化都是由容器來(lái)完成的,在JSP頁(yè)面中可以直接使用 pageContext對(duì)象。

// 將KV鍵值對(duì),存入"pageContext"頁(yè)面"范圍內(nèi)

? ? pageContext.setAttribute("key","value");

五個(gè)其它內(nèi)置對(duì)象:

config 對(duì)象

config 對(duì)象的主要作用是取得服務(wù)器的配置信息。通過(guò) pageConext對(duì)象的 getServletConfig() 方法可以獲取一個(gè)config對(duì)象。

out對(duì)象:

out 對(duì)象是 JspWriter 類的實(shí)例,是向客戶端輸出內(nèi)容常用的對(duì)象 ;用于在Web瀏覽器內(nèi)輸出信息,并且管理應(yīng)用服務(wù)器上的輸出緩沖區(qū)。在使用 out 對(duì)象輸出數(shù)據(jù)時(shí),可以對(duì)數(shù)據(jù)緩沖區(qū)進(jìn)行操作,及時(shí)清除緩沖區(qū)中的殘余數(shù)據(jù),為其他的輸出讓出緩沖空間。待數(shù)據(jù)輸出完畢后,要及時(shí)關(guān)閉輸出流。

PrintWriterout=response.getWriter();

? ? out.print("<script>");

? ? out.print(" alert('修改成功');");

? ? out.print(" location='list_product.jsp';");

? ? out.print("</script>");

response 對(duì)象:

response 代表的是對(duì)客戶端的響應(yīng),主要是將JSP容器處理過(guò)的對(duì)象傳回到客戶端。response對(duì)象也具有作用域,它只在JSP頁(yè)面內(nèi)有效。

//處理響應(yīng)過(guò)程中的中文亂碼

response.setContentType("text/html;charset=utf-8");

//獲取響應(yīng)輸出對(duì)象

PrintWriterout=response.getWriter();

//重定向客戶端的請(qǐng)求

response.sendRedirect("product.html");

page 對(duì)象

page 對(duì)象代表JSP本身,只有在 JSP 頁(yè)面內(nèi)才是合法的。 page 對(duì)象本質(zhì)上是包含當(dāng)前 Servlet 接口引用的變量,可以看作是 this 關(guān)鍵字的別名。

exception 異常對(duì)象

exception 對(duì)象用來(lái)處理JSP文件執(zhí)行時(shí)發(fā)生的所有錯(cuò)誤和異常,只有在page指令中設(shè)置 isErrorPage屬性值為true的頁(yè)面中才可以被使用,在一般的JSP頁(yè)面中使用該對(duì)象將無(wú)法編譯JSP文件。exception對(duì)象幾乎定義了所有異常情況,在Java程序中,可以使用try...catch關(guān)鍵字來(lái)處理異常情況,如果在JSP頁(yè)面中出現(xiàn)沒(méi)有捕獲到的異常,就會(huì)生成exception對(duì)象,并把exception對(duì)象傳送到在page指令中定義的錯(cuò)誤頁(yè)面中,然后在錯(cuò)誤頁(yè)面中處理相應(yīng)的exception對(duì)象。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容