一、第一階段是完成註冊登入功能。
註冊我是利用郵箱註冊完成的。
注:關於郵箱註冊和手機註冊在我另一篇文章中有專門demo介紹。
這個階段遇到的問題主要是如何儲存使用者登入資訊,也就是狀態管理——如何合理使用session和cookie。
二、cookie
1.什麼是cookie
伺服器臨時存放在瀏覽器端的少量資料,用於跟蹤使用者狀態。
2.cookie的工作原理
當瀏覽器訪問伺服器時,伺服器會將少量資料以set-cookie訊息頭形式傳送給瀏覽器,瀏覽器會儲存下來;
當瀏覽器再次訪問伺服器時,會將之前儲存的這些資料以cookie訊息頭的形式傳送給伺服器。
3.如何新增和獲取cookie
cookie cookie = new cookie(string name,string value);
response.addcookie(cookie);
cookie cookies = request.getcookies();(有可能返回null)
string name = cookie.getname();
string value = cookie.getvalue();
4.生存時間
1)預設情況下,cookie儲存在記憶體中,瀏覽器關閉,cookie就被刪除。
2)可以呼叫cookie.setmaxage(int seconds);
注: 單位是秒。 365 * 24 * 60 * 60
seconds > 0: 瀏覽器會將cookie儲存在硬碟上(一般是檔案的形式),
超過指定的時間,cookie會被刪除。
seconds < 0: 預設情況(即儲存在記憶體裡面)。
seconds = 0: 刪除cookie。
比如,要刪除乙個名稱為username的cookie:
cookie c = new cookie("username","");
c.setmaxage(0);
response.addcookie(c);
5.編碼問題
1).cookie只能儲存合法的ascii字元,如果是中文,需要轉換成對應的ascii字元的形式。
2).可以使用以下方法進行處理
string urlencoder.encode(string str,string charset);
string urldecoder.decode(string str,string charset);
3).建議,在新增cookie時,不管是否為中文,統一進行編碼處理。
6.路徑問題
1).什麼是cookie的路徑問題?
瀏覽器訪問伺服器上的某個位址時,會比較該位址是否符合cookie的路徑要求,只有符合條件cookie才會被傳送。
2).cookie的預設路徑
預設路徑等於新增該cookie的web元件的路徑。
比如,/day06/biz01/addcookie.jsp新增了乙個cookie,則該cookie預設的路徑是"/day06/biz01"。
3).哪一些cookie會被傳送?
請求位址等於cookie的路徑或者是其子路徑,則該cookie會被傳送。
比如,cookie的路徑是"/day06/biz01",則
"/day06/findcookie1.jsp", 不會被傳送;
"/day06/biz01/findcookie2.jsp",會被傳送;
"/day06/biz01/sub/findcookie3.jsp",會被傳送。
4).修改路徑
cookie.setpath(string path);
7.cookie的限制
1).cookie可以被使用者限制
2).不安全
3).儲存的資料大小有限制,一般4kb
4).儲存的數量也有限制,一般幾百個
5).只能存放字串
三、session
1.什麼是session
伺服器為了儲存使用者物件而建立的特殊物件。
2.工作原理
瀏覽器訪問伺服器時,伺服器建立乙個特殊的物件(即session物件,該物件
有乙個唯一的id,一般稱之為sessionid),伺服器將sessionid以cookie的方式傳送給瀏覽器。
當瀏覽器再次訪問伺服器,會將sessionid傳送過來,伺服器依據sessionid就可以找到對應的session物件。
3.如何獲得session
注:
httpsession是乙個介面,request.getsession方法會返回乙個
實現了該介面的物件,該物件我們稱之為session物件。
當flag為true時:
先檢視請求當中是否有sessionid,如果沒有,則建立乙個
session物件;如果有sessionid,則依據該sessionid查詢
對應的session物件,如果找到了,則返回該物件,找不到,
則建立乙個新的session物件。
當flag為false時:
先檢視請求當中是否有sessionid,如果沒有,返回null;
如果有sessionid,則依據該sessionid查詢
對應的session物件,如果找到了,則返回該物件,找不到,
返回null。
httpsession s = request.getsession(boolean flag) 等價於 request.getsession(true)
4.session物件的常用方法
1).獲得sessionid
string session.getid();
2).綁訂資料
session.setattribute(string name,object obj);
3).依據綁訂名獲得綁訂值
object session.getattribute(string name);
注:如果綁訂名對應的值不存在,返回null。
4).解除綁訂
session.removeattribute(string name);
雖然伺服器會自動繫結sessionid到瀏覽器cookie,但是我們也可以自己繫結,
cookie cookie = new cookie("jsessionid", session.getid());
5.session超時
伺服器會將空閒時間過長的session物件刪除掉。
注: 為了節省記憶體空間。
伺服器預設的超時時長一般是30分鐘。
6.修改session超時時間
方式一 修改伺服器的配置檔案
30 方式二 程式設計的方式
session.setmaxinactiveinterval(int seconds);
注: 設定兩次請求之間的最大間隔時間。如果超過這個間隔時間,
session物件會被刪除。
7.刪除session
session.invalidate();
頭條專案介面自動化測試 二 之測試用例設計
1 用例設計 模版 id 模組 介面名稱 請求url 用例名稱 請求方法 請求引數型別 請求引數 預期結果 實際結果 備註。注意 單介面顆粒度放的比較小 以測試資料為顆粒度 2 實踐 請求登陸介面 響應 設計用例 1 用例設計 模版 id 模組 介面名稱 請求url 用例名稱 請求方法 請求引數型別...
頭條專案介面自動化測試 六 之測試套件和報告
1 自動化測試的目錄結構 2 測試套件和報告run suite.py 目標 1 搜尋組裝測試套件 2 指定報告存放路徑及檔名稱 3 執行測試套件並生成測試報告 使用htmltestrunner import unittest import time from tools.htmltestrunner...
專案管理心得和10條專案管理心得
在從產品部轉到交付部後,經歷過企業版的幾個專案後,逐漸意識到,企業版的專案往往周期短 資源緊張 需求變動大,而作為乙個專案管理的新人,在資源不足的情況下,經常要自己參與功能的設計開發 需求分析 制定專案計畫 培養新人等等 經常要既當爹又當媽。作為一名技術人員,常常會因為參與某些技術難點的討論而絞盡腦...