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

來源:互聯網
上載者:User

標籤:user   例子   strong   param   內建對象   price   有關   錯誤資訊   選中   

為了簡化開發過程,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或postrequest.setAttribute("age",20);         //設定一個叫age的屬性,並賦值為20request.getAttribute("age");            //擷取上面的age屬性的值,若屬性不存在,返回nullrequest.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)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.