




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、,第5講基于Servlet的會(huì)話跟蹤1,2,回顧,request、response 對(duì)象有哪些常用方法? web.xml文件的作用? 如何理解Servlet的生命周期? 實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)有幾種方式?它們之間有哪些區(qū)別? 如何理解HTTP協(xié)議?,3,本講問(wèn)題,如何理解會(huì)話(Session)? 使用什么方法來(lái)獲得HttpSession對(duì)象?,4,本講任務(wù),升級(jí) E-Book電子書(shū)店系統(tǒng)實(shí)現(xiàn) 顯示書(shū)籍列表 點(diǎn)擊書(shū)籍后顯示書(shū)籍詳細(xì)信息,5,理解會(huì)話跟蹤原理 會(huì)獲取session對(duì)象 會(huì)使用session對(duì)象進(jìn)行數(shù)據(jù)存取,本講目標(biāo),6,HTTP協(xié)議,1、HTTP協(xié)議有什么特點(diǎn)? 無(wú)狀態(tài),訪問(wèn),訪問(wèn),我剛剛被
2、訪問(wèn)了兩次,但是我 不知道,是一個(gè)人訪問(wèn)了兩次? 還是兩個(gè)人各訪問(wèn)一次,HTTP協(xié)議不記錄用戶的信息,2、 什么是無(wú)狀態(tài) ?,7,HTTP是無(wú)狀態(tài)協(xié)議,3、如何顯示張三和李四分別訪問(wèn)某一網(wǎng)頁(yè)多 少次?,請(qǐng)求,請(qǐng)求,響應(yīng),響應(yīng),張三,李四,為了區(qū)分用戶,需要 為不同用戶作登記,8,HTTP是無(wú)狀態(tài)協(xié)議,購(gòu)買(mǎi)2 個(gè)商品,張三,李四,4、在線購(gòu)物系統(tǒng)中如何對(duì)用戶進(jìn)行區(qū)分?,購(gòu)買(mǎi)3 個(gè)商品,一共購(gòu)買(mǎi)了5個(gè)商品, 錢(qián)應(yīng)該從誰(shuí)的帳戶上扣呢?,9,HTTP是無(wú)狀態(tài)協(xié)議,Web程序能不能 像銀行卡號(hào)那樣,根據(jù) 卡號(hào)鎖定一個(gè)用戶呢?,請(qǐng)求,響應(yīng),響應(yīng)的時(shí)候,由服務(wù)器 給我分配一個(gè)唯一ID號(hào), 這樣就能區(qū)別不同的
3、用戶了,再次請(qǐng)求的時(shí)候, 我?guī)е鳬D號(hào), 告訴服務(wù)器“我是誰(shuí)”,如何標(biāo)識(shí)用戶?,10,會(huì)話跟蹤,HttpSession對(duì)象 服務(wù)器為每個(gè)會(huì)話創(chuàng)建一個(gè)HttpSession對(duì)象 每個(gè)會(huì)話對(duì)象都有一個(gè)唯一的ID 把用戶的數(shù)據(jù)保存在相應(yīng)的HttpSession對(duì)象內(nèi),第一次請(qǐng)求,響應(yīng),服務(wù)器創(chuàng)建一個(gè)HttpSession對(duì)象 并把該對(duì)象的ID返回給用戶,同時(shí),服務(wù)器在內(nèi)存中開(kāi)辟 一空間,用來(lái)保存該對(duì)象數(shù)據(jù),把ID發(fā)送給客戶端,第二次請(qǐng)求把ID一 起發(fā)送給服務(wù)器,根據(jù)ID號(hào)服務(wù)器尋找 內(nèi)存中相應(yīng)的數(shù)據(jù),11,會(huì)話跟蹤,請(qǐng)求 1,請(qǐng)求 2,請(qǐng)求 n,.,什么是會(huì)話 當(dāng)前瀏覽器與服務(wù)器間多次的請(qǐng)求、響應(yīng)關(guān)
4、系,被稱作一個(gè)會(huì)話,12,使用會(huì)話的示例,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; /將第一次計(jì)數(shù)存入session session
5、.setAttribute(COUNTER, new Integer(1); else counter = (Integer) count).intValue(); counter+;/計(jì)數(shù)加一 /將計(jì)數(shù)存入session session.setAttribute(COUNTER, new Integer(counter); ,取出session對(duì) 象內(nèi)存儲(chǔ)的值,把數(shù)據(jù)存儲(chǔ)在 session對(duì)象內(nèi),記錄不同用戶的訪問(wèn)次數(shù),演示示例1:網(wǎng)頁(yè)計(jì)算Counter.java,獲得session對(duì)象,13,會(huì)話的創(chuàng)建和使用,public HttpSession getSession(); public
6、HttpSession getSession( boolean value);,會(huì)話的創(chuàng)建 使用HttpServletRequest 的 getSession() 方法創(chuàng)建會(huì)話, 語(yǔ)法如下:,會(huì)話的使用 使用HttpSession接口的方法,進(jìn)行 保存數(shù)據(jù): 取出數(shù)據(jù):,public void setAttribute(String param,Object value); public Object getAttribute(String param);,獲取session 對(duì)象的方法,getSession( ),getSession(boolean bool ),getSession( t
7、rue ),true,false,返回與當(dāng)前關(guān)聯(lián)的 會(huì)話,如果沒(méi)有就 創(chuàng)建后將其返回,返回與當(dāng)前關(guān)聯(lián) 的會(huì)話,如果沒(méi) 有返回null,使用時(shí),將其轉(zhuǎn)換成原來(lái)數(shù)據(jù)類(lèi)型,14,session對(duì)象的存在周期,session對(duì)象的存在周期 session的創(chuàng)建 瀏覽器訪問(wèn)服務(wù)器時(shí),服務(wù)器為每個(gè)瀏覽器創(chuàng)建不同的session對(duì)象 session的關(guān)閉 調(diào)用session. invalidate()方法,使session對(duì)象失效 訪問(wèn)時(shí)間間隔大于非活動(dòng)時(shí)間間隔, session對(duì)象失效 關(guān)閉瀏覽器時(shí),session對(duì)象失效,請(qǐng)求,在內(nèi)存開(kāi)辟空間 保存數(shù)據(jù)信息,清空內(nèi)存內(nèi)當(dāng)前瀏 覽器相關(guān)數(shù)據(jù)信息,setMa
8、xInactiveInterval(),15,現(xiàn)場(chǎng)編程,在登錄頁(yè)面用戶已錄入用戶名,現(xiàn)在編寫(xiě)一個(gè)Servlet接 收該數(shù)據(jù),并把用戶名值保存在HttpSession對(duì)象內(nèi), 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,實(shí)現(xiàn)電子書(shū)店的購(gòu)物車(chē),需求描述,查看所有商品,選擇商品 放入購(gòu)物車(chē),繼續(xù)購(gòu)物,結(jié)賬,滿載而歸,17,電子書(shū)店演示,顯示所有書(shū)籍的列表 點(diǎn)擊某本書(shū),顯示書(shū)籍的詳細(xì)信息 添加當(dāng)前書(shū)籍到購(gòu)物車(chē),18,電子書(shū)店的數(shù)據(jù)庫(kù)設(shè)計(jì),數(shù)據(jù)庫(kù)設(shè)計(jì) 數(shù)據(jù)庫(kù)名:books 數(shù)據(jù)庫(kù)表:titles,19,電子書(shū)店的實(shí)體對(duì)象設(shè)計(jì),對(duì)象的設(shè)計(jì)-書(shū) 屬性 方法(getter、setter方法-為了得到和設(shè)置屬性值),20,實(shí)體類(lèi),書(shū)籍類(lèi)-BookBean.java,import java.io.Serializable; public class BookBean implements Seria
10、lizable private String ISBN;/ISBN編號(hào) private String title;/書(shū)名 private String copyright;/版權(quán) private String imageFile;/封面圖像 private int editionNumber;/版本 private int publisherID;/出版商ID private double price;/價(jià)格 public void setISBN(String isbn) / 設(shè)定ISBN編號(hào) ISBN = isbn; public String getISBN() / 返回ISBN編號(hào) r
11、eturn ISBN; ,使用get方法,獲得屬性值,BookBean類(lèi)的私有屬性,標(biāo)識(shí)該類(lèi)可序列化,使用set方法,設(shè)置屬性值,21,電子書(shū)店的購(gòu)物車(chē)設(shè)計(jì),購(gòu)物車(chē)的設(shè)計(jì)-書(shū)籍清單 書(shū)籍名稱 購(gòu)買(mǎi)數(shù)量 書(shū)籍價(jià)格 小計(jì) 總計(jì),22,數(shù)據(jù)庫(kù)連接類(lèi),數(shù)據(jù)庫(kù)連接類(lèi):ConnectionManager.java,public class ConnectionManager /打開(kāi)數(shù)據(jù)庫(kù)連接 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; /關(guān)閉數(shù)據(jù)庫(kù)連接 ,打開(kāi)數(shù)據(jù)庫(kù)連接,與JSP相同,演示示例2:數(shù)據(jù)庫(kù)連接類(lèi)ConnectionManager.java,23,數(shù)據(jù)庫(kù)訪問(wèn)類(lèi),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); . /設(shè)置其他的屬性值 titlesList.add(book); catch (Exception exception) exception.printStackTrace(); return titlesList; ,返回?cái)?shù)據(jù)列表,演示示例3:數(shù)據(jù)庫(kù)訪問(wèn)類(lèi)TitlesBean.java,讀取行數(shù)據(jù), 并存入List中,24,顯示所有書(shū)籍信息的頁(yè)面,顯示所有商品列表-books.jsp, ,調(diào)用方法,得到數(shù)據(jù)列表,把數(shù)據(jù)列表存入到session中,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)活動(dòng)板桿行業(yè)投資前景及策略咨詢研究報(bào)告
- 云南省紅河黃岡實(shí)驗(yàn)學(xué)校2025年高二下化學(xué)期末復(fù)習(xí)檢測(cè)試題含解析
- 2025年中國(guó)影像對(duì)講保全防盜室內(nèi)主機(jī)行業(yè)投資前景及策略咨詢研究報(bào)告
- 初中初二月考試題及答案
- 初二的考試題型及答案大全
- 常州自動(dòng)檔考試題庫(kù)及答案
- 北京中控員考試題目及答案
- 班級(jí)考試題及答案
- 2025年金融科技企業(yè)估值方法與投資策略研究報(bào)告-行業(yè)投資組合構(gòu)建策略
- 2025年金融科技對(duì)保險(xiǎn)行業(yè)風(fēng)險(xiǎn)管理與產(chǎn)品創(chuàng)新的啟示報(bào)告
- 外出提攜公章申請(qǐng)表
- 2023版押品考試題庫(kù)必考點(diǎn)含答案
- 【本田轎車(chē)燈光系統(tǒng)常見(jiàn)故障分析及排除8200字(論文)】
- 昆明天大礦業(yè)有限公司尋甸縣金源磷礦老廠箐-小凹子礦段(擬設(shè))采礦權(quán)出讓收益評(píng)估報(bào)告
- 尿動(dòng)力學(xué)檢查操作指南2023版
- 夢(mèng)幻西游古龍服務(wù)端安裝教程
- 食品安全地方標(biāo)準(zhǔn) 預(yù)制菜生產(chǎn)衛(wèi)生規(guī)范
- 亮化工程竣工驗(yàn)收?qǐng)?bào)告
- 《出生醫(yī)學(xué)證明》單親母親情況聲明
- PCS-915母差保護(hù)裝置介紹
- 第一套路面工程考試試題及答案
評(píng)論
0/150
提交評(píng)論