JSP內置對象

一、request對象

1、訪問請求參數

2、在作用域中管理屬性

3、獲取Cookie

4、解決中文亂碼

5、獲取客戶端信息

6、顯示國際化信息

是一個javax.servlet.http.HttpServletRequest對象

request封裝了用戶瀏覽器提交的信息,因此可以調用相應的方法可以獲取這些封裝的信息。例如:請求的頭信息(Header)、系統信息(比如:編碼方式)、請求的方式(比如:GETPOST)、請求的參數名稱和參數值等信息;

用戶的HTTP請求有某種結構,包含請求、頭域和可能的信息體

如:post/hello.html/HTTP.1.1

????????Host:localhost:8080

????????<form ...></form>

首行是請求行,規定了請求的方法

第二行是頭(header)Host規定了hello.htmlinternet地址。可以有多個頭。

第三行是信息體,包含了提交信息的表單等。

1 訪問請求參數

我們知道request對象用于處理HTTP請求中的各項參數。在這些參數中,最常用的就是獲取訪問請求參數。

當我們通過超鏈接的形式發送請求時,可以為該請求傳遞參數,這可以通過在超鏈接的后面加上問號“?來實現。注意這個問號為英文半角的符號。

在頁面中定義超鏈接:<a href=”delete.jsp?id=1”>刪除</a>

格式:request.getParameter(“parameterName”)

作用:用表單超鏈接傳遞參數的時候,使用getParameter方法可以返回給定參數的值,如果參數不存在則返回空值。

例:String name=request.getParameter("name");

表單文件:user.html

<form action="getuser.jsp"method=“get">

<input type="text" name="user">

<input type="submit">

</form>

獲取表單信息:getuser.jsp

<%

String u=request.getParameter("user");

out.println(u);

%>

如在地址欄中寫入http://localhost:8080/MyProject/1.jsp?id=1&name=2;

或是在頁面的鏈接中<a href=“1.jsp?id=1&name=2”>

同樣可以在1.jsp中使用getParameter(“id”)getParameter(“name”)獲得對應的值

漢字亂碼問題

JSP在表單傳輸過程中,使用的默認編碼是ISO-8859-1,因此如果傳輸漢字,會導致亂碼。

解決辦法(getBytes()方法是得到一個系統默認或規定的編碼格式的字節數組)

方法一post):?String str=request.getParameter(“name”);

? ? ? ? ? ? ? ? ? ? ? ? ? ?byte b[]=str.getBytes(“ISO-8859-1”);

? ? ? ? ? ? ? ? ? ? ? ? ? ?str=new String(b);???

?等價于? ?String str123=new String(str.getBytes("ISO-8859-1"),"gb2312");

方法二? ?(post):在getParameter方法前,加入:request.setCharacterEncoding("gb2312");

2 在作用域中管理屬性

在進行請求轉發時,需要把一些數據傳遞到轉發后的頁面進行處理。這時,就需要使用request對象的setAttribute()方法將數據保存到request范圍內的變量中。

request對象的setAttribute()方法的語法格式如下:

request.setAttribute(String name,Object object);

參數說明:

name: 變量名,為String類型

object:用于指定需要在request范圍內傳遞的數據

getAttribute()方法獲取該變量的值:

request.getAttribute(String name);

3、獲取cookie

在互聯網中,cookie是小段的文本信息,在網絡服務器上生成,并發送給瀏覽器的。

通過使用cookie可以標識用戶身份,記錄用戶名和密碼,跟蹤重復用戶等。瀏覽器將cookiekey/value的形式保存到客戶機的某個指定目錄中。

?????? getCookies(): 獲取到所有cookie對象的集合;

?????? getName():? 獲取到指定名稱的cookie

????? ?getValue(): 獲取到cookie對象的值。

另外將一個cookie對象發送到客戶端使用了response對象的addCookie()方法。

Cookie是服務器暫存在客戶機上的一些信息,用來記錄用戶的身份或訪問網站的記錄。當客戶再次訪問同一個服務器時,瀏覽器會將這些信息發給服務器,服務器從而能夠識別用戶并顯示用戶的訪問記錄。

Cookie信息保存在客戶機的硬盤上,位于

C:\Documents and Settings\登錄用戶名\Cookies

C:\Documents and Settings\登錄用戶名\Local Settings\Temporary Internet Files

public String getName()獲取Cookie的名字

public String getValue()獲取Cookie的值

public void setMaxAge(int maxAge):設置Cookie的有效時間,以秒為單位

? ? ? ? ? ? ? ? ? ? ? ? maxAge如果為正數,在有效期內,用戶關閉瀏覽器后再重新啟動Cookie仍有效

? ? ? ? ? ? ? ? ? ? ? ? maxAge如果為負數,只在當前瀏覽器有效,當關閉瀏覽器時Cookie失效

? ? ? ? ? ? ? ? ? ? ? ? maxAge如果為0,會刪除過去有效的Cookie

public int getMaxAge():獲取cookie在失效以前的最大時間,以秒計算

Cookie的發送和接收

服務器向客戶程序發送Cookie,3個步驟

創建Cookie對象,給出Cookie的名稱和值,Cookie cookie=new Cookie("text",textname);

設置最大時效(以秒為單位)如:cookie.setMaxAge(60*60*24*7);//一周

注:如果不設置,將存儲在瀏覽器的內存上

將Cookie放入HTTP響應報頭? ??response.addCookie(cookie);

從客戶端讀取Cookie

調用request.getCookies()這個調用返回Cookie對象數組

使用循環語句對Cookie數組進行遍歷

在循環中使用判斷語句找出所需要的Cookie

示例:

<%? ?Cookie a[]=request.getCookies();

for(int i=0;i<a.length;i++){

if(a[i].getName().equal(“”))

…}%>

Cookie的設置和獲取

setCookie.jsp

<%

Cookie c=new Cookie("season","spring");

c.setMaxAge(30);

response.addCookie(c);

Cookie d=new Cookie("nextseason","summer");

d.setMaxAge(10);

response.addCookie(d);

%>

getCookie.jsp

<%

Cookie a[]=request.getCookies();

for(int i=0;i<a.length;i++)

{

out.println(a[i].getName()+" "+a[i].getValue()+"<br>");

}

%>

Cookie是服務器暫存在客戶機上的一些信息,用來記錄用戶的身份或訪問網站的記錄。當客戶反復多次訪問同一個服務器時,服務器需要某種手段來識別用戶并顯示用戶的訪問記錄,即cookie。

Cookie信息保存在客戶機的硬盤上,位于C:\Documents and Settings\登錄用戶名\Cookies

和 C:\Documents and Settings\登錄用戶名\Local Settings\Temporary Internet Files

獲取cookie

通過cookie保存并讀取用戶登錄信息

編寫deal.jsp文件,用于向cookie中寫入注冊信息

4 解決中文亂碼

在上面的代碼中我們為id參數傳遞了一個字符串類型的值“001”,如果將這個參數的值更改為中文,則在show.jsp就會發生大家都不愿意看到的問題——在顯示參數值時中文內容變成了亂碼。這是因為請求參數的文字編碼方式與頁面中的不一致所造成的,所有的request請求都是iso-8859-1的,而在此頁面采用的是UTF-8的編碼方式。

要解決此問題,只要將獲取到的數據通過String的構造方法使用指定的編碼類型重新構造一個String對象即可正確地顯示出中文信息。漢字亂碼問題

JSP在表單傳輸過程中,使用的默認編碼是ISO-8859-1,因此如果傳輸漢字,會導致亂碼。

解決辦法(getBytes()方法是得到一個系統默認或規定的編碼格式的字節數組)

方法一post)String str=request.getParameter(“name”);

byte b[]=str.getBytes(“ISO-8859-1”);

str=new String(b);??? ?

等價于? ?String str123=new String(str.getBytes("ISO-8859-1"),"gb2312")

方法二(post):在getParameter方法前,加入:request.setCharacterEncoding("gb2312");

5.獲取客戶端信息

方??法?? ?說??明
getHeader(String name)?? ?獲得HTTP協議定義的文件頭信息
getHeaders(String name)返回指定名字的request Header的所有值,其結果是一個枚舉型的實例
getHeadersNames()?? ?返回所有request Header的名字,其結果是一個枚舉型的實例
getMethod()?? ?獲得客戶端向服務器端傳送數據的方法,如get,post,header,trace等
getProtocol()?? ?獲得客戶端向服務器端傳送數據所依據的協議名稱
getRequestURI()?? ?獲得發出請求字符串的客戶端地址,不包括請求的參數
getRequestURL()?? ?獲取發出請求字符串的客戶端地址
getRealPath()?? ?返回當前請求文件的絕對路徑
getRemoteAddr()?? ?獲取客戶端的IP地址
getRemoteHost()?? ?獲取客戶端的主機名
getServerName()?? ?獲取服務器的名字
getServerPath()?? ?獲取客戶端所請求的腳本文件的文件路徑
getServerPort()?? ?獲取服務器的端口號

例 使用request對象的相關方法獲取客戶端信息

6 顯示國際化信息

瀏覽器可以通過accept-languageHTTP報頭Web服務器指明它所使用的本地語言。request對象中的getLocale()getLocales()方法允許JSP開發人員獲取這一信息,獲取的信息屬于java.util.Local類型。

java.util.Local類型的對象封裝了一個國家和一種國家所使用的語言。使用這一信息,JSP開發者就可以使用語言所特有的信息作出響應。

P121 例 頁面信息國際化,根據所在區域顯示不同語言

如果所在區域為中國,將顯示"您好!歡迎訪問我們公司網站!"

如果所在區域為應該,則顯示"hello, welcome to access our company's web!"

二、response

1、重定向網頁

2、處理HTTP文件頭

3設置輸出緩沖

是一個javax.servlet.http.HttpServletReponse對象。與request相對應,Response對象用來提供給客戶端瀏覽器的參考信息,比如響應的頭行,響應的message body(HTML文本內容)以及服務端的狀態碼信息。

注意:任何標頭的設定都應在本體回傳前設定好,否則設定的值將不起任何作用

response 動態響應contentType

response.setContentType(Stringtype)

設置輸出數據的類型

text/html:網頁

text/plain:純文本

application/x-msexcel:Excel文件

application/msword:Word文件

例:將當前頁面轉換為word文檔

<% response.setContentType (“application/msword;charset=gb2312”); %>

response 設置http文件頭

作用設置HTTP應答報文的首部字段和值格式:response.setHeader(String name, String value)例如:利用setHeader方法可以設置頁面的自動刷新時間

reponse.setHeader(“Refresh”,”5”)

每5秒種用戶自動刷新該網頁

reponse.setHeader(“Refresh”, “5;URL=http://www.163.com”)

5秒種后自動跳轉到新頁面

1 重定向網頁

使用response對象提供的sendRedirect()方法可以將網頁重定向到另一個頁面。

重定向操作支持將地址重定向到不同的主機上,這一點與轉發不同。在客戶端瀏覽器上將會得到跳轉的地址,并重新發送請求鏈接。用戶可以從瀏覽器的地址欄中看到跳轉后的地址。進行重定向操作后,request中的屬性全部失效,并且開始一個新的request對象。

sendRedirect()方法的語法格式如下:response.sendRedirect(String path);

指定目標路徑:相對路徑,不同主機的其他URL地址

作用瀏覽器重定向,把當前響應返回到瀏覽器。在通過瀏覽器發送到新的指定地址

格式response.sendRedirect(“url”)

例如: response.sendRedirect(“http://www.163.com”);

response.sendRedirect(“aa.jsp”);

response.sendRedirect(“aa.jsp?user=tom”);

?response 的狀態行

服務器對用戶響應時,發送的首行稱為狀態行

設定狀態顯示碼的方法

void sendError(int sc) ??傳送狀態碼(status code)

void sendError(int sc,String msg) 傳送狀態碼和錯誤信息.用給定的狀態碼發給客戶端一個錯誤響應 在發生錯誤時使用,如400表示無效的請求服務器將返回一個預設信息。

void setStatus(int sc) 設置狀態碼沒有錯誤發生時使用,如狀態碼200表示成功

例4.10 通過sendRedirect()方法重定向頁面到用戶登錄頁面response綜合實例1: 登錄 默認情況下, SendRedirect 不會保留請求對象中參數,除非用“?參數名=值”;需要保存請求的相關信息時要用forward,因為用的是同一個request

SendRedirect 會在客戶端呈現跳轉后的URL地址使用<jsp:forward>完全是在服務器上進行,瀏覽器地址欄中的地址保持不變

使用<jsp:forward>實際是一個request內置對象 SendRedirect是兩個。

2 處理HTTP文件頭

通過response對象可以設置HTTP響應報頭,其中,最常用的是禁用緩存設置頁面自動刷新定時跳轉網頁。下面分別進行介紹。

1、禁用緩存

<%

response.setHeader(“Cache-Control”, no-store”);

response.setDateHeader(“Expires”,0);

%>

2、設置頁面自動刷新

<%

response.setHeader(“refresh”, 10”);

%>

3、定時跳轉網頁

<%

response.setHeader(“refresh”, 5; URL=login.jsp”);

%>

3 設置輸出緩沖

服務器要輸出到客戶端的內容不會直接寫到客戶端,而是先寫到一個輸出緩沖區,在計算機術語中,緩沖區被定義為暫時放置輸入或輸出資料的內存。

當滿足以下三種情況之一,就會把緩沖區的內容寫到客戶端。

JSP頁面的輸出信息已經全部寫入到了緩沖區;

緩沖區已滿;

在JSP頁面中,調用了response對象的flushBuffer()方法或out對象的flush()方法

例:設置緩沖區的大小為32KB

response.setBufferSize(32)

0KB,則表示不緩沖。

三、session對象

1、創建及獲取客戶的會話

2、從會話中移動指定的綁定對象

3銷毀Session

4、會話超時的管理

5session對象的應用

session對象表示 “會話一次會話是瀏覽器和服務器的一次交互過程。

JSP頁面中,可以用session對象來保存特定用戶的會話信息,session 的類型是javax.servlet.http.HttpSession

session對象在客戶端向該頁面發出請求時建立,在session到期或者關閉瀏覽器時撤銷

session對象常用來在不同的頁面之間傳遞數據

session的工作原理:客戶首次訪問服務器的一個頁面時,服務器就會為該客戶分配一個session對象同時為該session對象指定一個唯一的ID并將該ID號發送到客戶端并寫入到Cookie中,使得客戶端與服務器的session建立一一對應關系

當客戶繼續訪問服務上的其他資源時,不再為該客戶分配新的session直到客戶端瀏覽器關閉超時調用sessioninvalidate()方法使其失效,客戶端與服務器的會話結束。

當客戶端重新打開瀏覽器訪問網站時,服務器會重新為客戶分配一個session對象,重新分配session id

常見功能: 保存用戶的登錄信息,購物車等

session對象

HTTP協議是一種無狀態協議。

?一個用戶向服務器發出請求(request),然后服務器返回響應(response),連接就被關閉了,在服務器端不保留連接的有關信息,因此當下一次連接時,服務器已沒有以前的連接信息了,無法判斷這一次連接和以前的連接是否屬于同一用戶。 內置session(會話)對象記錄有關連接的信息.Tomcat服務器負責創建。

session對象的Id

當一個用戶首次訪問Web服務目錄中的某個JSP頁面時,JSP引擎為其產生一個session對象。

為用戶產生的session對象調用相應的方法可以存儲用戶在訪問各個頁面期間提交的各種信息。為用戶產生的session對象中含有一個String類型的Id號,JSP引擎同時將這個Id號發送到用戶端、存放在用戶的瀏覽器的Cookie中。。每個用戶都對應著一個session對象(該用戶的會話),不同用戶的session對象互不相同,即具有不同的Id號碼。

session對象存儲數據

session對象使用下列方法處理數據:

(1) public void setAttribute(String key, Object obj)

session對象可以調用該方法將參數Object指定的對象obj添加到session對象中,并為添加的對象指定了一個索引關鍵字,如果添加的兩個對象的關鍵字相同,則先前添加的對象被清除。

(2public Object getAttibute(String key)

獲取session對象含有的關鍵字是key的對象。由于任何對象都可以添加到session對象中,因此用該方法取回對象時,應強制轉化為原來的類型

(3public Enumeration getAttributeNames()

session對象調用該方法產生一個枚舉對象,該枚舉對象使用nextElemets()遍歷session中的各個對象所對應的關鍵字。

(4public long getCreationTime() ?

session對象調用該方法可以獲取該對象創建的時間,單位是毫秒。

5public void removeAttribute(String name)

session對象調用該方法移掉關鍵字key對應的對象.

?session對象的生存期限

一個用戶在某個web服務目錄的session對象的生存期限

依賴于session對象是否調用invalidate()方法使得session無效

依賴于session對象達到了設置的最長的“發呆”狀態時間

依賴于服務器是否被關閉。

重新設置各個Web服務目錄下的session對象的最長“發呆”時間。打開Tomcat安裝目錄conf目錄下的配置文件web.xml,找到

<session-config>

<session-timeout>30</session-timeout>

</session-config>

將其中的30修改成所要求的值即可,如果時間修改為負數,發呆時間不受限制。

session對象可以使用下列方法獲取或設置和生存時間有關的信息:

public long getCreationTime() 獲取session創建的時間,單位是毫秒。

public long getLastAccessedTime() 獲取session最后一次被操作的時間。

public int getMaxInactiveInterval() 獲取session最長的“發呆”時間(單位是秒)。

public void setMaxInactiveInterval(int interval) 設置session最長的“發呆”時間

public boolean isNew() 判斷session是否是一個新建的對象。

invalidate() 使session無效。

?使用session設置時間間隔????????????????????

為了限制用戶在很短的時間間隔內不斷地使用某頁面所提供的某種功能,而影響其他用戶使用該頁面所提供的功能,因此我們可以利用用戶的session來設置用戶使用當前頁面所提供功能的間隔時間,從而限制該用戶等待若干“時間”后,再次使用該頁面所提供的功能。

1、 創建及獲取客戶的會話

通過session對象可以存儲或讀取客戶相關的信息。例如,用戶名或購物信息等。這可以通過session對象的setAttribute()方法和getAttribute()方法實現。

1. setAttribute()

response.setAttribute(String name, Object obj); (“username”, 綠草”)

name:用于指定作用域在session范圍內的變量名

obj: 保存在session范圍內的對象。

2. getAttribute()

response.getAttribute(String name); (“username”)

name:用于保存在session范圍內的關鍵字

2 、從會話中移除指定的綁定對象

對于存儲在session會話中的對象,如果想將其從session會話中移除,可以使用session對象的removeAttribute()方法,該方法的語法格式如下:removeAttribute(String name)

參數說明如下:

name:用于指定作用域在session范圍內的變量名。一定要保證該變量在session范圍內有效,否則將拋出異常。

例:將保存在session會話中的username對象移除的代碼如下:

<%response.removeAttribute(“username”);%>

3、 銷毀session

雖然當客戶端長時間不向服務器發送請求后,session對象會自動消失,但對于某些實時統計在線人數的網站(例如,聊天室),每次都等session過期后,才能統計出準確的人數,這是遠遠不夠的。所以還需要手動的銷毀session。通過session對象的invalidate()方法可以銷毀session,其語法格式如下:session.invalidate();

?session對象被銷毀后,將不可以再使用該session對象了。如果在session被銷毀后,再調用session對象的任何方法,都將報出“Session already invalidated異常。

4、 會話超時管理

在應用session對象時應該注意session的生命周期。一般來說,session的生命周期在2030分鐘之間。當用戶首次訪問時將產生一個新的會話,以后服務器就可以記住這個會話狀態,當會話生命周期超時時,或者服務器端強制使會話失效時,這個session就不能使用了。

在開發程序時應該考慮到用戶訪問網站時可能發生的各種情況,比如用戶登錄網站后在session的有效期外進行相應操作,用戶會看到一張錯誤頁面。這樣的現象是不允許發生的。為了避免這種情況的發生,在開發系統時應該對session的有效性進行判斷。

設置會話生命周期的方法:

pgetLastAccessedTime():返回客戶端最后一次與會話相關聯的請求時間

pgetMaxInactiveInterval():以秒為單位返回一個會話內兩個請求最大時間間隔

psetMaxInactiveInterval()以秒為單位設置session的有效時間

例:設置session的有效期為10000秒,超出這個范圍session將失效

session.setMaxInactiveInterval(10000);

cookie和session區別

在某種程度上,cookiesession內置對象有些相似,但二者存在本質的差別

Cookie存在于客戶端,session存在于服務器

Cookie主要用戶保存脫機數據,而session內置對象主要用于跟蹤用戶會話

但他們也存在一些共同點,那就是不論是cookie還是session內置對象都需要瀏覽器支持cookie并且沒有禁用cookie

5、session對象的應用

session是較常用的內置對象之一,與requeset對象相比其作用范圍更大。下面通過實例介紹session對象的應用。?? session對象與URL重寫

如果用戶端不支持Cookie,那么用戶在不同網頁之間的session對象可能是互不相同的,因為如果服務器無法將Id存放到用戶端,就不能建立session對象和用戶的一一對應關系。可以通過URL重寫來實現session對象的惟一性。

所謂URL重寫,就是當用戶從一個頁面重新鏈接到另一個頁面時,通過向這個新的URL添加參數,把session對象的Id傳帶過去,這樣就可以保障用戶在該網站各個頁面中的session對象是完全相同的。

可以使用response對象調用encodeURL()encodeRedirectURL()方法實現URL重寫.

如果用戶瀏覽器不支持Cookie,則不能建立session對象與用戶的一一對應關系,因此需要url重寫。

格式String str=response.encodeRedirectURL(“new.jsp”);?然后鏈接目標寫成<%=str%>

session對象存儲數據

session可以保存用戶訪問web服務目錄期間的有關數據。

格式public void setAttribute(name, value)

public Object getAttribute(String name)

例:session.setAttribute(“item”,“鋼筆);(購買頁面)

String 商品=(String)session.getAttribute(“item”); (結賬頁面)

out.println(“<%=商品%>”);????????????????????

四、application對象

1、訪問應用程序初始化參數

2、管理應用程序環境屬性

application對象代表一個Web應用,負責提供應用程序在服務器運行時的一些全局信息,它在服務器啟動時創建直到服務器關閉時消失

application對象的類型是javax.servlet.ServletContext

所有訪問這個應用的用戶都共享一個application對象,application對象可以用來存儲與應用相關的信息.

有關屬性操作的方法:

public void setAttribute(namevalue)設置請求對象中的一個屬性。

public java.lang.Object getAttribute(String key)返回name指定的屬性值,若name不存在則返回null

public java.util.Enumeration getAttributeNames()返回request對象所有屬性的名稱,并將其封裝在Enumeration對象中。

public void removeAttribute(String name)通過指定名,移除application中的某個對象

application對象的常用方法

1public void setAttribute(String key, Object obj)

application對象可以調用該方法將參數Object指定的對象 obj添加到application對象中,并為添加的對象指定了一個索引關鍵字,如果添加的兩個對象的關鍵字相同,則先前添加對象被清除。2public Object getAttibue(String key)

獲取application對象含有的關鍵字是key的對象。由于任何對象都可以添加到application對象中,因此用該方法取回對象時,應強制轉化為原來的類型。

3public Enumeration getAttributeNames()

application對象調用該方法產生一個枚舉對象,該枚舉對象使用nextElemets()遍歷application中的各個對象所對應的關鍵字。

4public void removeAttribue(String key)

從當前application對象中刪除關鍵字是key的對象。

5public String getServletInfo()

application對象可以調用該方法獲取Servlet編譯器的當前版本的信息。

1 訪問應用程序初始化參數

application對象提供了對應用程序初始化參數進行訪問的方法。

應用程序初始化參數在web.xml文件中進行設置,web.xml文件位于Web應用所在目錄下的WEB-INF子目錄中。在web.xml文件中通過<context-param>標記配置應用程序初始化參數

2 管理應用程序環境屬性

與session對象相同,也可以在application對象中設置屬性。

與session對象不同的是,session只是在當前客戶的會話范圍內有效,當超過保存時間,session對象就被收回;而application對象在整個應用區域中都有效。application對象管理應用程序環境屬性的方法分別介紹如下。

getAttributeNames()獲得所有application對象使用的屬性名。

getAttribute(String name)application對象中獲取指定對象名。

setAttribute(String key,Object obj):使用指定名稱和指定對象在application對象中進行關聯。???? removeAttribute(String name)application對象中去掉指定名稱的屬性。

利用App.對象統計訪問頁面的用戶數

count.jsp

<%@ page language="java" contentType="text/html;charset=gb2312"%>

<html>

<% int n;

???if(application.getAttribute("count")==null)

???{???application.setAttribute("count","1");??}

???else

???{???n=Integer.parseInt((String)application.getAttribute("count"));

??????n++;

??????application.setAttribute("count",Integer.toString(n)); }

%>

這個頁面已經被瀏覽了<%=(String)application.getAttribute("count")%>次</h>

</html>

五、 out對象

1、向客戶端輸出數據

out對象一個最基本的應用就是向客戶端瀏覽器輸出信息。可以輸出各種數據類型的數據,在輸出非字符串類型的數據時,會自動轉換為字符串進行輸出。

out對象提供了print()println()兩種向頁面中輸出信息的方法,

print()方法輸出完后,不換行

println()方法在輸出完后,換行。

print和println可以輸出各種格式的數據類型,但最終都轉換成字符串。

2.管理響應緩沖

方法說明
clear()?? ?清除緩沖區中的內容
clearBuffer()?? ?清除當前緩沖區中的內容
flush()?? ?刷新流
isAutoFlush()?? ?檢測當前緩沖區已滿時是自動清空,還是拋出異常
getBufferSize()?? ?獲取緩沖區的大小

out對象是一個輸出流,用來向用戶端輸出數據。

out對象可調用如下的方法用于各種數據的輸出,

out.print(Boolean)out.println(Boolean) 用于輸出一個布爾值。

out.print(char)out.println(char)? 輸出一個字符。

out.print(double)out.println(double) 輸出一個雙精度的浮點數。

out.print(float)out.println(float) 用于輸出一個單精度的浮點數。

out.print(long)out.println(long)? 輸出一個長整型數據。

out.print(String)out.println(String) 輸出一個字符串對象的內容。

out.newLine()? 輸出一個換行符。

out.flush() 輸出緩沖區里的內容。

out.close() 關閉流。

JSP程序利用out對象將網頁內容輸出時,都要和客戶端做一次連接,并且會為此消耗不少的資源;

因此可以將要輸出的內容放在一個固定大小的緩沖區中,等到緩沖區滿時再一次將內容送往客戶端,這就要將autoFlush設為true否則緩沖區滿時將產生IOException錯誤

out對象對緩沖區進行操作常用方法

public abstract void clear()清空緩沖區中的內容,不將數據發送至客戶端。

public abstract void clearBuffer()清空緩沖區中的內容,并將緩沖區中的數據發送到客戶端。

public abstract void getBuffersize()獲得緩沖區的大小,對比回顧page指令

public abstract void getRemaing()返回緩沖區剩余空間的大小

public abstract void flush()輸出緩沖區中的數據。

public abstract void isAutoFlush()獲取AutoFlush的取值

其它內置對象

六、獲取會話范圍的pageContext對象

方法說明
forward(java.lang.String relativeUtlpath)?? ?把頁面轉發到另一個頁面
getAttribute(String name)?? ?獲取參數值
getAttributeNamesInScope(int scope)?? ?獲取某范圍的參數名稱的集合,返回值為java.util.Enumeration對象
getException()?? ?返回exception對象
getRequest()?? ?返回request對象
getResponse()?? ?返回response對象
getSession()?? ?返回session對象
getOut()?? ?返回out對象
getApplication?? ?返回application對象

setAttribute()?? ?為指定范圍內的屬性設置屬性值
removeAttribute()?? ?刪除指定范圍內的指定屬性

七、讀取Web.xml配置信息的config對象

方法說明
getServletContext()?? ?獲取Servlet上下文
getServletName()?? ?獲取Servlet服務器名
getInitParameter()?? ?獲取服務器所有初始參數名稱,返回值為java.util.Enumeration對象
getInitParameterNames()?? ?獲取服務器中name參數的初始值

八、應答或請求的page對象

方法說明
getClass()?? ?返回當前Object的類
hashCode()?? ?返回該Object的哈希代碼
toString()?? ?把該Object類轉換成字符串
equals(Object o)?? ?比較該對象和指定的對象是否相等

九、獲取異常信息的exception對象

方法說明
getMessage()?? ?返回exception對象的異常信息字符串
getLocalizedmessage()?? ?返回本地化的異常錯誤
toString()?? ?返回關于異常錯誤的簡單信息描述
fillInStackTrace()?? ?重寫異常錯誤的棧執行軌跡

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160618.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160618.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160618.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

優先經驗回放(prioritized experience replay)

prioritized experience replay 思路 優先經驗回放出自ICLR 2016的論文《prioritized experience replay》。 prioritized experience replay的作者們認為&#xff0c;按照一定的優先級來對經驗回放池中的樣本采樣&#xff0c;相比于隨機均勻的從經驗回放池中采樣的效率更高&…

UML建模圖文詳解教程——類圖

版權聲明 本文原創作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl本文參考資料&#xff1a;《UML面向對象分析、建模與設計&#xff08;第2版&#xff09;》呂云翔&#xff0c;趙天宇 著 類圖概述 類圖用來描述系統內各種實體的類型以及不同…

Unsupervised MVS論文筆記

Unsupervised MVS論文筆記 摘要1 引言2 相關工作3 實現方法 Tejas Khot and Shubham Agrawal and Shubham Tulsiani and Christoph Mertz and Simon Lucey and Martial Hebert. Tejas Khot and Shubham Agrawal and Shubham Tulsiani and Christoph Mertz and Simon Lucey and …

JAVA小游戲拼圖

第一步是創建項目 項目名自擬 第二部創建個包名 來規范class 然后是創建類 創建一個代碼類 和一個運行類 代碼如下&#xff1a; package heima; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import …

10、信息打點——APP小程序篇抓包封包XP框架反編譯資產提取

APP信息搜集思路 外在——抓包封包——資產安全測試 抓包&#xff08;Fiddle&茶杯&burp&#xff09;封包&#xff08;封包監聽工具&#xff09;&#xff0c;提取資源信息 資產收集——資源提取——ICO、MAD、hash——FOFA等網絡測繪進行資產搜集 外在——功能邏輯 內在…

國際版Amazon Lightsail的功能解析

Amazon Lightsail是一項易于使用的云服務,可為您提供部署應用程序或網站所需的一切,從而實現經濟高效且易于理解的月度計劃。它是部署簡單的工作負載、網站或開始使用亞馬遜云科技的理想選擇。 作為 AWS 免費套餐的一部分&#xff0c;可以免費開始使用 Amazon Lightsail。注冊…

【Python進階】近200頁md文檔14大體系第4篇:Python進程使用詳解(圖文演示)

本文從14大模塊展示了python高級用的應用。分別有Linux命令&#xff0c;多任務編程、網絡編程、Http協議和靜態Web編程、htmlcss、JavaScript、jQuery、MySql數據庫的各種用法、python的閉包和裝飾器、mini-web框架、正則表達式等相關文章的詳細講述。 Python全套筆記直接地址…

PostgreSQL10安裝postgis插件

1.安裝pgsql10 2.下載插件&#xff0c;以Windows為例&#xff0c;地址&#xff1a;Index of /postgis/windows/pg10/ 3.安裝插件&#xff0c;直接安裝&#xff0c;和pgsql的目錄相同即可&#xff0c;一直下一步 4.安裝之后&#xff0c;需要執行sql打開 CREATE EXTENSION po…

028 - STM32學習筆記 - ADC結構體學習(二)

028 - STM32學習筆記 - 結構體學習&#xff08;二&#xff09; 上節對ADC基礎知識進行了學習&#xff0c;這節在了解一下ADC相關的結構體。 一、ADC初始化結構體 在標準庫函數中基本上對于外設都有一個初始化結構體xx_InitTypeDef&#xff08;其中xx為外設名&#xff0c;例如…

Redis設計與實現-數據結構(建設進度17%)

Redis數據結構 引言數據結構stringSDS數據結構原生string的不足 hash 本博客基于《Redis設計與實現》進行整理和補充&#xff0c;該書依賴于Redis 3.0版本&#xff0c;但是Redis6.0版本在一些底層實現上仍然沒有明顯的變動&#xff0c;因此本文將在該書的基礎上&#xff0c;對于…

PostgreSQL基本操作

1.查詢某個表的所在磁盤大小 select pg_size_pretty(pg_relation_size(grb_grid)); 2.插入point類型的記錄 insert into tb_person ("name", "address", "location", "create_time", "area", "girls") values …

Java 兩個線程交替打印1-100

線程題&#xff1a;交替打印1-100 這里演示兩個線程&#xff0c;一個打印奇數&#xff0c;一個打印偶數 方式一&#xff1a;synchronized FixedThreadPool public class example {private static int count 1;private static final Object lock new Object();public stat…

WPF基礎DataGrid控件

WPF DataGrid 是一個用于顯示和編輯表格數據的強大控件。它提供了豐富的功能&#xff0c;包括排序、篩選、分組、編輯、選擇等&#xff0c;使你能夠以類似電子表格的方式呈現和操作數據。 DataGrid 的布局主要由以下部分組成&#xff1a; 列定義 (Columns): DataGrid 列定義了…

YOLO目標檢測——衛星遙感多類別檢測數據集下載分享【含對應voc、coco和yolo三種格式標簽】

實際項目應用&#xff1a;衛星遙感目標檢測數據集說明&#xff1a;衛星遙感多類別檢測數據集&#xff0c;真實場景的高質量圖片數據&#xff0c;數據場景豐富&#xff0c;含網球場、棒球場、籃球場、田徑場、儲罐、車輛、橋、飛機、船等類別標簽說明&#xff1a;使用lableimg標…

2023年【上海市安全員C證】考試及上海市安全員C證找解析

題庫來源&#xff1a;安全生產模擬考試一點通公眾號小程序 2023年上海市安全員C證考試為正在備考上海市安全員C證操作證的學員準備的理論考試專題&#xff0c;每個月更新的上海市安全員C證找解析祝您順利通過上海市安全員C證考試。 1、【多選題】2017年9月頒發的《中共上海市委…

基于STM32的煙霧濃度檢測報警仿真設計(仿真+程序+講解視頻)

這里寫目錄標題 &#x1f4d1;1.主要功能&#x1f4d1;2.仿真&#x1f4d1;3. 程序&#x1f4d1;4. 資料清單&下載鏈接&#x1f4d1;[資料下載鏈接](https://docs.qq.com/doc/DS0VHTmxmUHBtVGVP) 基于STM32的煙霧濃度檢測報警仿真設計(仿真程序講解&#xff09; 仿真圖prot…

【數據結構】B : DS圖應用--最短路徑

B : DS圖應用–最短路徑 文章目錄 B : DS圖應用--最短路徑DescriptionInputOutputSampleInput Output 解題思路&#xff1a;初始化主循環心得&#xff1a; AC代碼 Description 給出一個圖的鄰接矩陣&#xff0c;再給出指定頂點v0&#xff0c;求頂點v0到其他頂點的最短路徑 In…

SkyWalking配置報警推送到企業微信

1、先在企業微信群里創建一個機器人&#xff0c;復制webhook的地址&#xff1a; 2、找到SkyWalking部署位置的alarm-settings.yml文件 編輯&#xff0c;在最后面加上此段配置 &#xff01;&#xff01;&#xff01;一定格式要對&#xff0c;不然一直報警報不出來按照網上指導…

JVM 堆外內存詳解

Java 進程內存占用除了JVM 運行時數據區&#xff0c;還有直接內存&#xff08;Direct Memory&#xff09;區域及 JVM 程序自身也會占用內存 直接內存&#xff08;Direct Memory&#xff09;區域&#xff1a;直接內存通過使用Native堆外內存來存儲數據&#xff0c;這意味著數據…

大數據平臺實踐之CDH6.2.1+spark3.3.0+kyuubi-1.6.0

前言&#xff1a;關于kyuubi的原理和功能這里不做詳細的介紹&#xff0c;感興趣的同學可以直通官網&#xff1a;https://kyuubi.readthedocs.io/en/v1.7.1-rc0/index.html 下載軟件版本 wget http://distfiles.macports.org/scala2.12/scala-2.12.16.tgz wget https://archi…