1. 程式人生 > >JSP最常用的五種內置對象(out,request,response,session,application)

JSP最常用的五種內置對象(out,request,response,session,application)

就是 黑板 ttr 用戶訪問 null att 狀態碼 obb 功能

為了簡化開發過程,JSP提供了一些內置對象,它們由容器實現和管理。開發者在JSP頁面中無需聲明無需實例化就可使用。主要有out,request,response,session,application,pageContext,page,config和exception這九個,其中前五個最常用。

out


out對象為客戶打開輸出流,向客戶端發送輸出流。簡單來說就是向客戶端輸出數據。

常用方法:

out.print("hello world");   //輸出到瀏覽器
out.print(23.5f);           //同上,可輸出基本類型,字符數組,日期等多種類型
out.println("hello world"); //
輸出並換行 out.isAutoFlush(); //判斷是否自動刷新緩沖區 out.getBufferSize(); //獲取緩沖區大小 out.getRemaining(); //獲取緩沖區剩余空間大小 out.flush(); //清除緩沖區裏的數據,並輸出到客戶端顯示 out.clear(); //清除緩沖區裏的數據,不輸出到客戶端 out.close(); //關閉輸出流

request


當用戶訪問一個服務器頁面時,就會提交一個HTTP請求。JSP內置的request對象封裝了用戶提交的信息

,開發者可以通過從中獲取用戶提交表單中的信息。

常用方法示例:

request.getMethod();                    //獲取請求方式,通常是get或post
request.setAttribute("age",20);         //設置一個叫age的屬性,並賦值為20
request.getAttribute("age");            //獲取上面的age屬性的值,若屬性不存在,返回null
request.removeAttribute("age");         //刪除name為age的屬性值
request.getAttributeNames(); //
返回所有屬性的名字集合 request.getCaracterEncoding(); //返回編碼格式,通常在解決亂碼時候用 request.getParameter("user"); //用戶提交的form中有一個name為"user"的input框(結點),可以用這種方式獲取input框(結點)的內容 request.getParameterValues("hobbies"); //用戶提交的form中有一個name為"hobbies"的復選框,可以獲取到其中選中部分的值

response


服務器收到用戶發來的請求後,會做出響應。response對象封裝了JSP響應信息,被發送到客戶端。

因為輸出流是緩沖的,所以可以設置HTTP狀態碼(常見的404,500,504等)和response頭。

常用方法:

response.addCookie(Cookie cook);              //添加一個用於保存用戶信息的Cookie對象
response.addHeader(String name,String value); //添加信息到頭文件中,如果已存在就覆蓋
response.containsHeader(String name);         //判斷指定名字的HTTP頭是否已存在
response.sendError(int);                      //返回錯誤信息
response.sendRedirect(String location);       //重定向
response.setHeader(String name,String value); //設置指定名字的HTTP文件頭的值。

session


敲黑板!!咣咣咣!!!這個很重要!

很多朋友對session都有種既熟悉有陌生的感覺,這個詞在開發中太常見了!但是很多地方的理解都很模糊。

這裏說的session是用來保存每個用戶信息的內置對象,以便跟蹤每個用戶的操作狀態

為什麽要跟蹤用戶狀態呢?因為HTTP是一種無狀態協議,當客戶向服務器發送一個請求(request)後,服務器返回一個(response),連接就關閉了(故也稱為一次性連接)。當下一次連接時,服務器無法判斷當前連接與之前的是否是同一用戶。(例如用戶在同一個網站中訪問不同的頁面時,總不能訪問一個頁面登錄一次吧。。。)這時就用到了session來記錄有關連接的信息。

session從用戶打開瀏覽器與服務器建立連接開始,到用戶關閉瀏覽器離開服務器結束。服務器將sessionID寫入到瀏覽器的Cookie中,作為這個用戶的唯一標識。每個用戶都有自己的sessionID,當用戶退出系統時,session會自動消失。

session的信息保存在服務端,session的ID保存在客戶端Cookie中。如果客戶端禁用Cookie,同一用戶在不同頁面間的session對象有可能是不同的

常用方法,getAttribute(),setAttribute(),removeAttribute()等,均是對對象中的屬性進行增刪改查,在此就不一一贅述了

舉個例子,通過session我們可以構造一個簡單的購物車功能模塊。

1.用戶登錄購物商城,JSP引擎自動創建session對象

2.向session中添加兩個屬性goods(購買的商品),price(價格),方式如下

session.setAttribute("goods"," ");

session.setAttribute("price"," ");

3.在不同的頁面(生活用品類,食物類)選擇商品添加到購物車,每一次添加商品,就向goods和price中追加內容,例如

session.setAttribute("goods",session.getAttribute("goods")+"雞蛋");//其中session.getAttribute("goods")可以從session中獲取已添加到購物車的商品

session.setAttribute("price",session.getAttribute("price")+15);//其中session.getAttribute("price")可以從session獲取當前購物車中所有商品的價格

application


application對象為所有的用戶保存共享信息。

雖然application和session都可以為用戶保存信息,但是這兩個是不同的:

1.服務器為每個用戶創建一個session對象,每個人的session都是不同的;而application是為多個應用程序保存公用信息,對於一個容器而言,所有用戶的application對象是同一個

2.session和application的生命周期不同。session的生命周期是從用戶打開瀏覽器建立與服務器的連接開始,到關閉瀏覽器離開服務器結束的這段時間;而application的生命周期是從服務器啟動服務器關閉的這段時間。

應用場景示例:

例如網站上常見的本站點擊量統計,就可以使用application來實現。定義一個字段count用來計數,每次點擊就++,然後將count保存在application對象中,application.setAttribute("Counter",count);獲取當前點擊量時,application.getAttribute("Counter")即可。

JSP最常用的五種內置對象(out,request,response,session,application)