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