基于Servlet的會話跟蹤.ppt_第1頁
基于Servlet的會話跟蹤.ppt_第2頁
基于Servlet的會話跟蹤.ppt_第3頁
基于Servlet的會話跟蹤.ppt_第4頁
基于Servlet的會話跟蹤.ppt_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、,第5講基于Servlet的會話跟蹤1,2,回顧,request、response 對象有哪些常用方法? web.xml文件的作用? 如何理解Servlet的生命周期? 實現(xiàn)頁面跳轉有幾種方式?它們之間有哪些區(qū)別? 如何理解HTTP協(xié)議?,3,本講問題,如何理解會話(Session)? 使用什么方法來獲得HttpSession對象?,4,本講任務,升級 E-Book電子書店系統(tǒng)實現(xiàn) 顯示書籍列表 點擊書籍后顯示書籍詳細信息,5,理解會話跟蹤原理 會獲取session對象 會使用session對象進行數據存取,本講目標,6,HTTP協(xié)議,1、HTTP協(xié)議有什么特點? 無狀態(tài),訪問,訪問,我剛剛被

2、訪問了兩次,但是我 不知道,是一個人訪問了兩次? 還是兩個人各訪問一次,HTTP協(xié)議不記錄用戶的信息,2、 什么是無狀態(tài) ?,7,HTTP是無狀態(tài)協(xié)議,3、如何顯示張三和李四分別訪問某一網頁多 少次?,請求,請求,響應,響應,張三,李四,為了區(qū)分用戶,需要 為不同用戶作登記,8,HTTP是無狀態(tài)協(xié)議,購買2 個商品,張三,李四,4、在線購物系統(tǒng)中如何對用戶進行區(qū)分?,購買3 個商品,一共購買了5個商品, 錢應該從誰的帳戶上扣呢?,9,HTTP是無狀態(tài)協(xié)議,Web程序能不能 像銀行卡號那樣,根據 卡號鎖定一個用戶呢?,請求,響應,響應的時候,由服務器 給我分配一個唯一ID號, 這樣就能區(qū)別不同的

3、用戶了,再次請求的時候, 我?guī)е鳬D號, 告訴服務器“我是誰”,如何標識用戶?,10,會話跟蹤,HttpSession對象 服務器為每個會話創(chuàng)建一個HttpSession對象 每個會話對象都有一個唯一的ID 把用戶的數據保存在相應的HttpSession對象內,第一次請求,響應,服務器創(chuàng)建一個HttpSession對象 并把該對象的ID返回給用戶,同時,服務器在內存中開辟 一空間,用來保存該對象數據,把ID發(fā)送給客戶端,第二次請求把ID一 起發(fā)送給服務器,根據ID號服務器尋找 內存中相應的數據,11,會話跟蹤,請求 1,請求 2,請求 n,.,什么是會話 當前瀏覽器與服務器間多次的請求、響應關

4、系,被稱作一個會話,12,使用會話的示例,public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException HttpSession session = request.getSession(true); Object count = session.getAttribute(COUNTER); int counter = 0; if (count = null) counter = 1; /將第一次計數存入session session

5、.setAttribute(COUNTER, new Integer(1); else counter = (Integer) count).intValue(); counter+;/計數加一 /將計數存入session session.setAttribute(COUNTER, new Integer(counter); ,取出session對 象內存儲的值,把數據存儲在 session對象內,記錄不同用戶的訪問次數,演示示例1:網頁計算Counter.java,獲得session對象,13,會話的創(chuàng)建和使用,public HttpSession getSession(); public

6、HttpSession getSession( boolean value);,會話的創(chuàng)建 使用HttpServletRequest 的 getSession() 方法創(chuàng)建會話, 語法如下:,會話的使用 使用HttpSession接口的方法,進行 保存數據: 取出數據:,public void setAttribute(String param,Object value); public Object getAttribute(String param);,獲取session 對象的方法,getSession( ),getSession(boolean bool ),getSession( t

7、rue ),true,false,返回與當前關聯(lián)的 會話,如果沒有就 創(chuàng)建后將其返回,返回與當前關聯(lián) 的會話,如果沒 有返回null,使用時,將其轉換成原來數據類型,14,session對象的存在周期,session對象的存在周期 session的創(chuàng)建 瀏覽器訪問服務器時,服務器為每個瀏覽器創(chuàng)建不同的session對象 session的關閉 調用session. invalidate()方法,使session對象失效 訪問時間間隔大于非活動時間間隔, session對象失效 關閉瀏覽器時,session對象失效,請求,在內存開辟空間 保存數據信息,清空內存內當前瀏 覽器相關數據信息,setMa

8、xInactiveInterval(),15,現(xiàn)場編程,在登錄頁面用戶已錄入用戶名,現(xiàn)在編寫一個Servlet接 收該數據,并把用戶名值保存在HttpSession對象內, public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException String userName=request.getParameter(userName); HttpSession session=request.getSession(); if (userNa

9、me!=null .,16,實現(xiàn)電子書店的購物車,需求描述,查看所有商品,選擇商品 放入購物車,繼續(xù)購物,結賬,滿載而歸,17,電子書店演示,顯示所有書籍的列表 點擊某本書,顯示書籍的詳細信息 添加當前書籍到購物車,18,電子書店的數據庫設計,數據庫設計 數據庫名:books 數據庫表:titles,19,電子書店的實體對象設計,對象的設計-書 屬性 方法(getter、setter方法-為了得到和設置屬性值),20,實體類,書籍類-BookBean.java,import java.io.Serializable; public class BookBean implements Seria

10、lizable private String ISBN;/ISBN編號 private String title;/書名 private String copyright;/版權 private String imageFile;/封面圖像 private int editionNumber;/版本 private int publisherID;/出版商ID private double price;/價格 public void setISBN(String isbn) / 設定ISBN編號 ISBN = isbn; public String getISBN() / 返回ISBN編號 r

11、eturn ISBN; ,使用get方法,獲得屬性值,BookBean類的私有屬性,標識該類可序列化,使用set方法,設置屬性值,21,電子書店的購物車設計,購物車的設計-書籍清單 書籍名稱 購買數量 書籍價格 小計 總計,22,數據庫連接類,數據庫連接類:ConnectionManager.java,public class ConnectionManager /打開數據庫連接 public static Connection getConnction() Connection dbConnection = null; try Class.forName(driver); dbConnect

12、ion = DriverManager .getConnection(url, user, pass); catch (Exception e) e.printStackTrace(); return dbConnection; /關閉數據庫連接 ,打開數據庫連接,與JSP相同,演示示例2:數據庫連接類ConnectionManager.java,23,數據庫訪問類,TitlesBean.java,public List getTitles() List titlesList = new ArrayList(); try connection = ConnectionManager.getCo

13、nnction(); titlesQuery = connection .prepareStatement(select* form titles); ResultSet results = titlesQuery.executeQuery(); while (results.next() BookBean book = new BookBean(); book.setISBN(results.getString(isbn); . /設置其他的屬性值 titlesList.add(book); catch (Exception exception) exception.printStackTrace(); return titlesList; ,返回數據列表,演示示例3:數據庫訪問類TitlesBean.java,讀取行數據, 并存入List中,24,顯示所有書籍信息的頁面,顯示所有商品列表-books.jsp, ,調用方法,得到數據列表,把數據列表存入到session中,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論