當(dāng)前位置:
首頁(yè) >
day11-(cookiesession)
發(fā)布時(shí)間:2025/7/14
52
豆豆
生活随笔
收集整理的這篇文章主要介紹了
day11-(cookiesession)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
回顧:
response:響應(yīng)往瀏覽器寫東西響應(yīng)行操作狀態(tài)碼常用方法:setStatus(int code): 1 2 3響應(yīng)頭格式: key:value(value可以是多個(gè))常用方法:setHeader(String key,String value):設(shè)置字符串形式的響應(yīng)頭addHeader(String key,String value):添加字符串形式的響應(yīng)頭 若沒有設(shè)置則設(shè)置,若設(shè)置過則追加響應(yīng)體瀏覽器展示的內(nèi)容常用方法:getWriter()getOutputStream()注意:倆流互斥,服務(wù)器會(huì)把我們關(guān)閉//
常見的響應(yīng)頭location:重定向 配合302開發(fā)中:response.sendRedirect("路徑");refresh:定時(shí)刷新 response.setHeader("refresh","秒數(shù);url=路徑");//javameta//htmlcontent-type:設(shè)置文件的mimetype,設(shè)置響應(yīng)流的編碼且告訴瀏覽器用什么編碼打開開發(fā)中:response.setContentType("text/html;charset=utf-8");content-disposition:設(shè)置文件下載response.setHeader("content-disposition","attachment;filename="+文件名稱);文件下載:設(shè)置兩個(gè)頭一個(gè)流content-typecontent-dispositiongetOutputStream()//
request:請(qǐng)求獲取從瀏覽器發(fā)送過來數(shù)據(jù)請(qǐng)求行常用方法:獲取項(xiàng)目名:getContextPath()請(qǐng)求頭格式:key:value(value可以是多個(gè))常用方法:getHeader(String key)請(qǐng)求參數(shù)String getParameter(String key)String[] getParameterValues(String key)Map<String,String[]> getParameterMap()獲取參數(shù)中文亂碼:通用方式:new String(參數(shù).getBytes("iso-8859-1"),"utf-8");針對(duì)于post:request.setCharacterEncoding("utf-8");
常用的頭信息:user-agent:獲取瀏覽器內(nèi)核referer:頁(yè)面從那里跳轉(zhuǎn)過來
///
request域?qū)ο?xxxAttribute()請(qǐng)求轉(zhuǎn)發(fā):request.getRequestDispatcher("/內(nèi)部路徑").forward(request,response);
jsp cookie session
案例1-記錄用戶上次訪問時(shí)間
需求:當(dāng)用戶第一次登錄的時(shí)候,提示:你是第一次訪問,且記錄該次訪問時(shí)間,下一次訪問的時(shí)候,獲取上一次訪問時(shí)間且展示出來
技術(shù)分析:會(huì)話技術(shù)cookiejsp
//
jsp:java server pages(java服務(wù)器頁(yè)面)本質(zhì)上jsp就是一個(gè)servlet,在html代碼中嵌套java代碼,運(yùn)行在服務(wù)器端,處理請(qǐng)求,生成動(dòng)態(tài)的內(nèi)容.對(duì)應(yīng)的java和class文件在tomcat目錄下的work目錄后綴名 .jsp執(zhí)行流程:1.瀏覽器發(fā)送請(qǐng)求,訪問jsp頁(yè)面2.服務(wù)器接受請(qǐng)求,jspSerlvet會(huì)幫我們查找對(duì)應(yīng)的jsp文件3.服務(wù)器將jsp頁(yè)面翻譯成java文件.4.jvm會(huì)將java編譯成.class文件5.服務(wù)器運(yùn)行class文件,生成動(dòng)態(tài)的內(nèi)容.6.將內(nèi)容發(fā)送給服務(wù)器,7.服務(wù)器組成響應(yīng)信息,發(fā)送給瀏覽器8.瀏覽器接受數(shù)據(jù),解析展示jsp的腳本: <%...%> java程序片段生成成jsp的service方法中<%=...%> 輸出表達(dá)式生成成jsp的service方法中,相當(dāng)于在java中調(diào)用out.print(..)<%!...%> 聲明成員成員位置.
/
會(huì)話技術(shù)當(dāng)用戶打開瀏覽器的時(shí)候,訪問不同的資源,知道用戶將瀏覽器關(guān)閉,可以認(rèn)為這是一次會(huì)話. 作用:因?yàn)閔ttp協(xié)議是一個(gè)無狀態(tài)的協(xié)議,它記錄不論上次訪問的內(nèi)容.用戶在訪問過程中難免會(huì)產(chǎn)生一些數(shù)據(jù),通過會(huì)話技術(shù)就可以將起保存起來.例如:用戶登錄驗(yàn)證碼購(gòu)物車訪問記錄.....
分類:cookie:瀏覽器端會(huì)話技術(shù)session:服務(wù)器端會(huì)話技術(shù)
//
cookie:小餅干 小甜點(diǎn)cookie是由服務(wù)器生成,通過response將cookie寫回瀏覽器(set-cookie),保留在瀏覽器上,下一次訪問,瀏覽器根據(jù)一定的規(guī)則攜帶不同的cookie(通過request的頭 cookie),我們服務(wù)器就可以接受cookiecookie的api:new Cookie(String key,String value)寫回瀏覽器:response.addCookie(Cookie c)獲取cookie:Cookie[] request.getCookies()cookie的常用方法:getName():獲取cookie的key(名稱)getValue:獲取指定cookie的值
/
案例1-步驟分析:1.創(chuàng)建一個(gè)serlvet RemServlet 路徑:/rem2.在servlet中:獲取指定cookie 例如:名稱為 lastTimerequest.getCookies()判斷cookie是否為空若為空:提示信息 第一次訪問若不為空:獲取此cookie的value展示信息:你上次訪問時(shí)間是....將這次訪問時(shí)間記錄,寫會(huì)瀏覽器
cookie-總結(jié):常用方法:setMaxAge(int 秒):設(shè)置cookie在瀏覽器端存活時(shí)間 以秒為單位若設(shè)置成 0:刪除該cookie(前提必須路徑一致)setPath(String path):設(shè)置cookie的路徑.當(dāng)我們?cè)L問的路徑中包含此cookie的path,則攜帶默認(rèn)路徑: 訪問serlvet的路徑,從"/項(xiàng)目名稱"開始,到最后一個(gè)"/"結(jié)束例如:訪問的serlvet路徑:/day11/a/b/hello默認(rèn)路徑為:/day11/a/b手動(dòng)設(shè)置路徑:以"/項(xiàng)目名"開始,以"/"結(jié)尾;
/
案例2:記錄用戶瀏覽歷史
需求:當(dāng)用戶訪問一個(gè)商品的時(shí)候,需要將該商品保留在瀏覽記錄中
技術(shù)分析:cookie
步驟分析:1.先將product_list.htm轉(zhuǎn)成jsp2.點(diǎn)擊一個(gè)商品,展示該商品的信息,將該商品id記錄到cookie (GetProductById)獲取之前的瀏覽記錄 例如名稱:ids判斷cookie是否為空若為空 將當(dāng)前商品的id起個(gè)名稱 ids 放入cookie中 ids=1若不為空,獲取值 例如:ids=2-1 當(dāng)前訪問的id=1 使用"-"分割商品id判斷之前記錄中有無該商品若有:將當(dāng)前的id放入前面 結(jié)果 ids=1-2若沒有:繼續(xù)判斷長(zhǎng)度是否>=3若>=3,移除最后一個(gè),將當(dāng)前的id放入最前面若<3,直接將當(dāng)前的id放入最前面.若 ids=3-2-1 現(xiàn)在訪問1 結(jié)果 ids=1-3-2若 ids=4-3-2 現(xiàn)在訪問1 結(jié)果 ids=1-4-33.再次回到product_list.jsp頁(yè)面,需要將之前訪問商品展示在瀏覽記錄中獲取ids 例如:ids=2-3-1切割
/
擴(kuò)展:刪除瀏覽記錄
技術(shù)分析:cookie.setMaxAge(0)
步驟分析:1.在瀏覽器記錄中添加一個(gè)超鏈接 <a href="/day1101/clearHistroy">清空</a>2.創(chuàng)建servlet clearHistroy創(chuàng)建一個(gè)cookie 名稱路徑保持一致setMaxAge(0)寫回瀏覽器3.頁(yè)面跳轉(zhuǎn)重定向 product_list.jsp/
注意:cookie不能跨瀏覽器cookie中不支持中文
/
案例3-添加到購(gòu)物車
需求:在商品詳情頁(yè)面有一個(gè)添加到購(gòu)物車,點(diǎn)擊則將該商品添加到購(gòu)物車,點(diǎn)擊購(gòu)物車連接將里面的所有商品展示出來
技術(shù)分析:session
//
session:服務(wù)器端會(huì)話技術(shù).當(dāng)我們第一次訪問的服務(wù)器的時(shí)候,服務(wù)器獲取id,能獲取id要拿著這個(gè)id去服務(wù)器中查找有無此session若查找到了:直接拿過來時(shí)候,將數(shù)據(jù)保存,需要將當(dāng)前sessin的id返回給瀏覽器若查找不到:創(chuàng)建一個(gè)session,將你的數(shù)據(jù)保存到這個(gè)session中,將當(dāng)前session的id返回給瀏覽器不能獲取id創(chuàng)建一個(gè)session,將你的數(shù)據(jù)保存到這個(gè)session中,將當(dāng)前session的id返回給瀏覽器獲取一個(gè)session:HttpSession request.getSession()域?qū)ο?xxxAttribute生命周期:創(chuàng)建:第一次調(diào)用request.getsession()創(chuàng)建銷毀:服務(wù)器非正常關(guān)閉session超時(shí)默認(rèn)時(shí)間超時(shí):30分鐘 web.xml有配置 手動(dòng)設(shè)置超時(shí):setMaxInactiveInterval(int 秒) 了解手動(dòng)干掉session★session.invalidate()存放的私有的數(shù)據(jù).
步驟分析:1.點(diǎn)擊添加到購(gòu)物車的時(shí)候,提交到一個(gè)servlet add2CartServlet需要將商品名稱攜帶過去2.add2CartServlet中的操作獲取商品的名稱將商品添加到購(gòu)物車 購(gòu)物車的結(jié)構(gòu) Map<String 名稱,Integer 購(gòu)買數(shù)量>將購(gòu)物車放入session中就可以了將商品添加到購(gòu)物車分析:獲取購(gòu)物車判斷購(gòu)物車是否為空若為空:第一次添加創(chuàng)建一個(gè)購(gòu)物車將當(dāng)前商品put進(jìn)去.數(shù)量:1將購(gòu)物車放入session中若不為空:繼續(xù)判斷購(gòu)物車中是否有該商品若有:取出count 將數(shù)量+1 將商品再次放入購(gòu)物車中若沒有:將當(dāng)前商品put進(jìn)去 數(shù)量:1提示信息:你的xx已添加到購(gòu)物車中3.點(diǎn)擊購(gòu)物車連接的時(shí)候 cart.jsp從session獲取購(gòu)物車判斷購(gòu)物車是否為空若為空:提示信息若不為空:遍歷購(gòu)物車即可//
案例2-擴(kuò)展清空購(gòu)物車:思路1:將購(gòu)物車移除思路2:將session干掉
步驟分析:在cart.jsp上添加一個(gè)超鏈接 清空購(gòu)物車<a href="/day1101/clearCart">清空購(gòu)物車</a>在clearCart中需要調(diào)用session.invalidate()重定向到購(gòu)物車頁(yè)面
上午回顧:
jsp:java 服務(wù)器頁(yè)面就是在html代碼嵌套java代碼,本質(zhì)上就是一個(gè)servlet,運(yùn)行在服務(wù)器,接受請(qǐng)求,處理業(yè)務(wù)邏輯,生成動(dòng)態(tài)內(nèi)容jsp三個(gè)腳本:<%...%> java片段 生成在jsp的service方法中<%=...%> 輸出表達(dá)式生成service方法中不能";"結(jié)尾<%!...%> 聲明成員
cookie:瀏覽器端會(huì)話技術(shù)由服務(wù)器生成,key=value格式,通過響應(yīng)頭(set-cookie)寫回瀏覽器保存在瀏覽器端,當(dāng)瀏覽器下一次訪問的時(shí)候,根據(jù)一定的規(guī)則攜帶不同的cookie,通過請(qǐng)求頭(cookie)攜帶
常用方法:構(gòu)造:new Cookie(String key,String value);寫回瀏覽器:response.addCookie(Cookie c)獲取:Cookie[] request.getCookies();cookie的api:getName():獲取cookie的名稱getValue():獲取cookie的值setMaxAge(int 秒):設(shè)置cookie在瀏覽器的存活時(shí)間若設(shè)置為0:刪除cookie(前提必須路徑保持一致)setPath(String path):設(shè)置cookie的路徑 /day1101/若訪問的路徑中包含cookie的path,則攜帶過去注意:cookie不能跨瀏覽器cookie中不支持中文
///
session:服務(wù)器端會(huì)話技術(shù):依賴于cookie瀏覽器訪問服務(wù)器,服務(wù)器獲取jsessionid若獲取不到創(chuàng)建一個(gè)sesion,將數(shù)據(jù)保存,將當(dāng)前session的jsessionid通過cookie返回瀏覽器若獲取到拿著該jsessionid去session池中查找有無該session若查找到:直接拿過來使用,將jsessionid寫回瀏覽器若查找不到創(chuàng)建一個(gè)sesion,將數(shù)據(jù)保存,將當(dāng)前session的jsessionid通過cookie返回瀏覽器常用方法:獲取session:HttpSession request.getSession():域?qū)ο?session生命周期創(chuàng)建:java代碼中可以認(rèn)為 第一次使用request.getSession創(chuàng)建銷毀:服務(wù)器關(guān)閉session超時(shí)默認(rèn)超時(shí)手動(dòng)設(shè)置超時(shí)★手動(dòng)干掉session session.invalidate()/
?
轉(zhuǎn)載于:https://www.cnblogs.com/chenyanlong/p/9976074.html
總結(jié)
以上是生活随笔為你收集整理的day11-(cookiesession)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编程语言分类及变量
- 下一篇: 8.使用hydra对端口进行爆破