會話技術及三天免登入案例詳解

2021-09-23 15:44:00 字數 4011 閱讀 2624

會話技術

會話:一次會話中包含多次請求和相應

一次會話:瀏覽器第一次給伺服器資源傳送請求,會話建立,一方斷開位置

功能:在一次會話的範圍內多次請求間,共享資料

方式:

客戶端會話技術:cookies

伺服器端會話技術:session

cookes

概念:客戶端會話技術,將資料儲存在客戶端

使用步驟:

建立cookie物件,繫結資料

new cookie(string name ,string value);

傳送cookie物件

獲取cookie,拿到資料

實現原理

基於響應頭set-cookie和請求頭cookie實現

cookie的細節

一次可不可以傳送多個cookie?

*可以*可以建立多個cookie物件,使用response呼叫多次addcookie方法傳送cookie即可

cookie在瀏覽器中儲存多長時間?

*預設情況下,當瀏覽器關閉後,cookie資料被銷毀

*持久化儲存:

setmaxage(int seconds);

1. 正數:將cookie資料寫到硬碟的檔案中,持久化儲存。cookie存活時間

2. 負數:預設值

3. 零:刪除cookie資訊

cookie能不能存中文?

*在tomcat 8 之前 cookie中不能直接儲存中文資料(需要將中文資料轉碼)

*在tomcat 8 之後 cookie 支援中文資料

cookie共享問題?

1. 假設在乙個tomcat伺服器中,部署了多個web專案,那麼這些web專案中cookie能不能共享?

* 預設情況下cookie不能共享

* setpath(string path): 設定cookie的獲取範圍。預設情況下設定當前的虛擬目錄

如果要共享則可以將path設定為「/」

2. 不同的tomcat伺服器間cookie共享問題?

* setdomain(string path) : 如果設定一級網域名稱相同,那麼多個伺服器之間cookie可以共享

setdomain(".baidu.com"),那麼tieba.baidu.com和news.baidu.com中cookie可以共享

cookie的特點和作用

cookie儲存資料在客戶端瀏覽器

瀏覽器對於單個cookie的大小有限制(4kb)以及對同乙個網域名稱下的總cookie數量也有限制(20個)

*作用:

cookie一般用於儲存少量的不太敏感的資料

在不登入的慶康下,完成伺服器對客戶端的身份識別

三天免登入案例

三天免登入核心內容

伺服器內部:檢驗到cookie附帶資訊,根據處理類對cookie資訊獲取,進行請求**或重定向,向客戶端響應登入成功後的頁面

使用者視角:看到的是登入後的主頁面

對資料庫的優化

1.設計方面:考慮最優字段,盡量不要設定空值資料,雖然稍微的放空填入的資料值會使使用者操作體驗更好

2.查詢方面:盡量使用子查詢完成多個邏輯的sql操作,多使用join,對於臨時表,多使用聯合查詢來解決,這樣能夠保證資料庫整齊性

4.使用索引:索引能夠更有效率的查詢資料

5.查詢時最好不要使用*號查詢概括,在有索引的字段盡量不要使用函式操作,盡量不要使用like進行模糊查詢,因為影響系統效能。

理解servlet邏輯處理

首先理解httpservletrequest

httpservletrequest物件代表客戶端的請求,當客戶端通過http協議訪問伺服器時,http請求頭中的所有資訊都封裝在這個物件中,通過這個物件提供的方法,可以獲得客戶端請求的所有資訊。

request常用方法

獲得客戶端請求引數(客戶端提交的資料)

getparameter(string o) 方法 (常用)

getparametervalues(string name) 方法 (常用)

getparametername() 方法 (不常用)

getparametermap() 方法 (編寫框架時常用)

拓展:request物件也是乙個域物件(map容器),開發通過request物件來實現**,即把資料通過request物件帶給其他web資源處理。request物件作為乙個域物件(map容器)使用時,主要通過以下的四個方法來操作(實現請求**的方式)

理解請求**和重定向的區別

1.乙個web資源收到客戶端請求後,通知伺服器呼叫另外乙個web資源進行處理,稱之為請求**

2.乙個web資源收到客戶端請求後,通知瀏覽器訪問另外乙個web資源進行處理,稱為為重定向

req.getrequestdispatcher(),forward();

request.getrequestdispatcher(),forward();它屬於**,在執行當前檔案的過程中,轉向執行的目標檔案,兩個檔案(當前檔案和目標檔案)屬於同一請求,前後頁面共用乙個request物件,可以通過request.setattribute()和request.getattribute();來傳遞一些資料或者session資訊。

response.senredirect();

response.senredirect(),屬於重定向,相當於客戶端向伺服器端傳送請求後,伺服器端返回乙個響應,客戶端接收到響應之後,又向伺服器傳送了一次請求,一共兩次請求,前後頁面不共用乙個request物件,不能轉向前通過request.setattribute()設定的值。

科普:重要的資料最好不要用請求**,因為如果此時再對當前頁面重新整理的話,就會 重新傳送一次請求,對資料進行修改,這也就是有的人在重新整理一次頁面就增加一條資料的原因。

拓展session、cookie的區別

1、cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上。

2、cookie不是很安全,別人可以分析存放在本地的cookie並進行cookie欺騙

考慮到安全應當使用session。

3、session會在一定時間內儲存在伺服器上。當訪問增多,會比較占用你伺服器的效能

考慮到減輕伺服器效能方面,應當使用cookie。

4、單個cookie儲存的資料不能超過4k,很多瀏覽器都限制乙個站點最多儲存20個cookie。

登入頁面展示

表單標記

簡單地來說,表單就是在網頁上用於輸入資訊的區域,其主要功能是收集使用者資訊,並將這些資訊傳遞給後台伺服器。表單主要由表單域、表單控制項和提示資訊三部分構成

1.表單域

在html中,在上述語法中,action、method和name是標記中的常用屬性

2.表單控制項

在乙個表單中,大部分的表單控制項(如單行文字輸入框、單選按鈕、複選按鈕、核取方塊等)都是由元素定義的,語法如下:

流程拓展

登入、查詢所有使用者之類的功能,不管是什麼功能點,流程是一樣,只是處理的資料不一樣,邏輯不一樣

會話及其會話技術(三)

瀏覽器與伺服器建立一次請求與對話的過程。sesssionid 類似於診療卡 session基於cookie來實現的 sessionid產生過程 瀏覽器訪問web伺服器,servlet容器會建立乙個session物件和id屬性 session物件 病歷檔案 id 醫療卡 客戶端後續訪問伺服器,只傳遞標...

Hadoop集群搭建(三) 配置SSH免金鑰登入

1,生成公鑰和私鑰 命令 root hadoop2 ssh keygen t rsa 2,檢視檔案 在 root ssh 目錄下會生成兩個檔案 3,將被管理機上剛才生產的id rsa.pub賦值成authorized keys 命令 root hadoop2 ssh cat id rsa.pub a...

技術雜談 linux登入開發板簡化和免密登入方法

問題現象 每次登陸開發版都要輸入長長一串使用者 ip位址,還有登入密碼,有什麼方法可以簡化嗎?問題解決 以下都是針對開發版使用者名稱是hwhiaiuser,開發版ip位址為192.168.1.2 第一步 登陸開發版,免密碼登陸的設定 概念 ssh目錄 儲存有關於ssh配置的資訊在使用者的家目錄下,即...