頭條專案收穫01

2021-08-28 03:09:50 字數 3573 閱讀 6324

一、第一階段是完成註冊登入功能。

註冊我是利用郵箱註冊完成的。

注:關於郵箱註冊和手機註冊在我另一篇文章中有專門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條專案管理心得

在從產品部轉到交付部後,經歷過企業版的幾個專案後,逐漸意識到,企業版的專案往往周期短 資源緊張 需求變動大,而作為乙個專案管理的新人,在資源不足的情況下,經常要自己參與功能的設計開發 需求分析 制定專案計畫 培養新人等等 經常要既當爹又當媽。作為一名技術人員,常常會因為參與某些技術難點的討論而絞盡腦...