當前位置:首頁 » 服務存儲 » web客戶端存儲數據的方式
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

web客戶端存儲數據的方式

發布時間: 2022-05-28 08:21:20

1. 介紹HTML5幾種存儲方式

HTML5 提供了兩種在客戶端存儲數據的新方法:..兩者都是僅在客戶端(即瀏覽器)中保存,不參與和伺服器的通信;
localStorage - 沒有時間限制的數據存儲,第二天、第二周或下一年之後,數據依然可用。
如何創建和訪問 localStorage:

<scripttype="text/javascript">
localStorage.lastname="Smith";
document.write(localStorage.lastname);
</script>

下面的例子對用戶訪問頁面的次數進行計數:

<scripttype="text/javascript">
if(localStorage.pagecount){
localStorage.pagecount=Number(localStorage.pagecount)+1;
}
else{
localStorage.pagecount=1;
}
document.write("Visits"+localStorage.pagecount+"time(s).");
</script>

sessionStorage - 針對一個 session 的數據存儲,當用戶關閉瀏覽器窗口後,數據會被刪除。
創建並訪問一個 sessionStorage:

<scripttype="text/javascript">
sessionStorage.lastname="Smith";
document.write(sessionStorage.lastname);
</script>

下面的例子對用戶在當前 session 中訪問頁面的次數進行計數:

<scripttype="text/javascript">
if(sessionStorage.pagecount){
sessionStorage.pagecount=Number(sessionStorage.pagecount)+1;
}
else{
sessionStorage.pagecount=1;
}
document.write("Visits"+sessionStorage.pagecount+"time(s)thissession.");
</script>

sessionStorage 、localStorage的區別
共同點:都是保存在瀏覽器端,且同源的。
區別:數據有效期不同,sessionStorage:僅在當前瀏覽器窗口關閉前有效,自然也就不可能持久保持;localStorage:始終有效,窗口或瀏覽器關閉也一直保存,因此用作持久數據;cookie只在設置的cookie過期時間之前一直有效,即使窗口或瀏覽器關閉。
作用域不同,sessionStorage不在不同的瀏覽器窗口中共享,即使是同一個頁面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。Web Storage 支持事件通知機制,可以將數據更新的通知發送給監聽者。Web Storage 的 api 介面使用更方便。

2. 說一下前端數據存儲方式(cookies,localstorage,sessionstorage,indexedDB)的區別

Cookie最初是在客戶端用於存儲會話信息的,其要求伺服器對任意HTTP請求發送Set-CookieHTTP頭作為響應的一部分。cookie
以name為名稱,以value為值,名和值在傳送時都必須是URL編碼的。瀏覽器會存儲這樣的會話信息,在這之後,通過為每個請求添加Cookie
HTTP頭將信息發送回伺服器。

localstorage

存儲方式:

以鍵值對(Key-Value)的方式存儲,永久存儲,永不失效,除非手動刪除。

sessionstorage

HTML5 的本地存儲 API 中的 localStorage 與 sessionStorage 在使用方法上是相同的,區別在於 sessionStorage 在關閉頁面後即被清空,而 localStorage 則會一直保存。

IndexedDB

索引資料庫(IndexedDB) API(作為 HTML5 的一部分)對創建具有豐富本地存儲數據的數據密集型的離線 HTML5 Web 應用程序很有用。同時它還有助於本地緩存數據,使傳統在線 Web 應用程序(比如移動 Web 應用程序)能夠更快地運行和響應。

3. 在java web中怎樣將數據存儲在資料庫中

Java可以使用JDBC對資料庫進行讀寫。JDBC訪問一般分為如下流程:
1、載入JDBC驅動程序:
在連接資料庫之前,首先要載入想要連接的資料庫的驅動到JVM(Java虛擬機),
這通過java.lang.Class類的靜態方法forName(String className)實現。
例如:
try{
//載入Mysql的驅動類
Class.forName("com.mysql.jdbc.Driver") ;
}catch(ClassNotFoundException e){
System.out.println("找不到驅動程序類 ,載入驅動失敗!");
e.printStackTrace() ;
}
成功載入後,會將Driver類的實例注冊到DriverManager類中。
2、提供JDBC連接的URL
?連接URL定義了連接資料庫時的協議、子協議、數據源標識。
?書寫形式:協議:子協議:數據源標識
協議:在JDBC中總是以jdbc開始
子協議:是橋連接的驅動程序或是資料庫管理系統名稱。
數據源標識:標記找到資料庫來源的地址與連接埠。
例如:(MySql的連接URL)
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk ;
useUnicode=true:表示使用Unicode字元集。如果characterEncoding設置為
gb2312或GBK,本參數必須設置為true 。characterEncoding=gbk:字元編碼方式。
3、創建資料庫的連接
?要連接資料庫,需要向java.sql.DriverManager請求並獲得Connection對象,該對象就代表一個資料庫的連接。
?使用DriverManager的getConnectin(String url,String username,String password )方法傳入指定的欲連接的資料庫的路徑、資料庫的用戶名和密碼來獲得。
例如:
//連接MySql資料庫,用戶名和密碼都是root
String url = "jdbc:mysql://localhost:3306/test" ;
String username = "root" ;
String password = "root" ;
try{
Connection con =
DriverManager.getConnection(url , username , password ) ;
}catch(SQLException se){
System.out.println("資料庫連接失敗!");
se.printStackTrace() ;
}
4、創建一個Statement
?要執行SQL語句,必須獲得java.sql.Statement實例,Statement實例分為以下3種類型:
1、執行靜態SQL語句。通常通過Statement實例實現。
2、執行動態SQL語句。通常通過PreparedStatement實例實現。
3、執行資料庫存儲過程。通常通過CallableStatement實例實現。
具體的實現方式:
Statement stmt = con.createStatement() ;
PreparedStatement pstmt = con.prepareStatement(sql) ;
CallableStatement cstmt = con.prepareCall("{CALL demoSp(? , ?)}") ;
5、執行SQL語句
Statement介面提供了三種執行SQL語句的方法:executeQuery 、executeUpdate和execute
1、ResultSet executeQuery(String sqlString):執行查詢資料庫的SQL語句,返回一個結果集(ResultSet)對象。
2、int executeUpdate(String sqlString):用於執行INSERT、UPDATE或DELETE語句以及SQL DDL語句,如:CREATE TABLE和DROP TABLE等
3、execute(sqlString):用於執行返回多個結果集、多個更新計數或二者組合的語句。
具體實現的代碼:
ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;
int rows = stmt.executeUpdate("INSERT INTO ...") ;
boolean flag = stmt.execute(String sql) ;
6、處理結果
兩種情況:
1、執行更新返回的是本次操作影響到的記錄數。
2、執行查詢返回的結果是一個ResultSet對象。
ResultSet包含符合SQL語句中條件的所有行,並且它通過一套get方法提供了對這些行中數據的訪問。
使用結果集(ResultSet)對象的訪問方法獲取數據:
while(rs.next()){
String name = rs.getString("name") ;
String pass = rs.getString(1); // 此方法比較高效(列是從左到右編號的,並且從列1開始)
}
7、關閉JDBC對象
操作完成以後要把所有使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲明順序相反:
1、關閉記錄集
2、關閉聲明
3、關閉連接對象
if(rs != null){ // 關閉記錄集
try{
rs.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(stmt != null){ // 關閉聲明
try{
stmt.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(conn != null){ // 關閉連接對象
try{
conn.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}

4. web storage有什麼用

Web Database用來存儲復雜的數據。
優點:
1. 存儲空間更大:IE8下每個獨立的存儲空間為10M,其他瀏覽器實現略有不同,但都比Cookie要大很多。
2. 存儲內容不會發送到伺服器:當設置了Cookie後,Cookie的內容會隨著請求一並發送的伺服器,這對於本地存儲的數據是一種帶寬浪費。而Web Storage中的數據則僅僅是存在本地,不會與伺服器發生任何交互。
3. 更多豐富易用的介面:Web Storage提供了一套更為豐富的介面,使得數據操作更為簡便。
4. 獨立的存儲空間:每個域(包括子域)有獨立的存儲空間,各個存儲空間是完全獨立的,因此不會造成數據混亂。

5. web緩存有哪幾種方式

1 應用程序實現的動態頁面緩存
應用程序把動態文件生成的html文件緩存到文件伺服器,以後用戶請求動態文件,直接從文件伺服器載入對應的靜態緩存的html文件返回給用戶,這裡面主要節省了動態語言的執行時間和資料庫訪問時間。但是會增加了緩存框架的載入和緩存查找的時間。

2 把解釋執行的開發語言編譯成為目標代碼
這個主要把解釋執行的高級語言,例如java,php直接編譯成為平台相關的目標代碼,匯編代碼。在java裡面,比較著名的就是即時編譯器(JIT),其他的語言也要類似的機制。這裡面主要節省了就是解釋執行代碼的時間。這個會增加即時編譯的時間。

3 利用反向代理伺服器的緩存
利用類似nginx的反向代理伺服器,對請求的url對應的輸出的進行緩存。這個緩存和應用程序實現的動態頁面緩存類似,只不過用反向代理充當了應用程序的緩存實現。主要節省了動態余元執行時間和資料庫訪問時間。

4 客戶端瀏覽器緩存
客戶端瀏覽器緩存主要是通過在http頭部增加
Last-Modified,If-Modified-Since,Expires,Cache-Control等標識,和伺服器進行協商,是否是採用客戶的本機緩存來實現。
其中這裡面也會分為三種方式
1 通過Last-Modified,If-Modified-Since方式和伺服器通信,客戶發出http請求中包含If-Modified-Since,如果伺服器端代碼沒有修改,伺服器端返回302響應代碼的請求響應頭(內容不返回)客戶端則直接用本機緩存的內容緩存顯示結果。相當於節省了伺服器執行代碼時間以及數據傳輸時間。
2 通過Expires,Cache-Control控制,客戶端發現如果上次請求的頁面還未過期,通過Expires或者Cache-Control進行辨別,則直接顯示本機緩存的內容,不與伺服器進行通信。

總結一下:1 一般的高並發的應用程序,都在web層採用了以上幾種緩存,一般靜態資源(圖片,js,css)都會採用nginx反向代理+客戶端緩存來實現。
2 對於門戶網站,尤其是首頁的新聞,一般都會緩存起來,可以通過反向代理也可以通過應用程序緩存實現方式
3 對於下載或者視頻網站,由於數據傳輸比較大,直接採用瀏覽器本地緩存實現。

6. javaweb中瀏覽器使用什麼存儲方式

1、資源文件放在伺服器下是完全沒問題的,一個網站發布後也不會隨便更新的。
2、如果資源文件過多、或都過大,是建議放到伺服器下的,會佔用伺服器過大的空間,你可以在tomcat中再配置一個虛擬路徑,指向一個盤符下一個文件夾(如:D:/images),在 tomcat 的 server.xml 中設置<Context docBase="D:/images" path="/img" />,然後你就可以用你的伺服器地址+/img/+資源路徑(注意:這個資源路徑是相對D:/images的相對路徑)去訪問資源了

7. 用vs2010新建的WebSite,想存儲一堆數據,然後所有的客戶端都可以訪問到,並可以修改數據怎樣存儲

設置成靜態變數,存儲只是一時的。因為網站在沒人訪問時候,會「休息」,再有人訪問時候,又會「重啟」。
要想永久保存數據,必須使用資料庫或者文件來存儲。
配套的資料庫一般用SQLServer,輕量型的資料庫可以用Access,文件形式保存的話可以保存成xml。

8. 手機app的web端開發,本地數據存儲都有什麼方法

Android無法直接連接資料庫,一般 android app通過http協議連接web( 數據格式可以是json,xml),由web處理業務數據及數據存取。

9. java web,由於Http協議是無狀態,採用如下的哪個方法保存客戶狀態的數據,沒有大小限制,而且性能表現最好

A.Session

session是通過操作瀏覽器cookie,生成隨機的cookie值(JSESSIONID),然後回傳給服務端,服務端根據該cookie值找到對應保存在服務端的數據。

session的方式是結合cookie為一體的,如果客戶端不支持Cookie(客戶端禁用),那就必須在訪問的URL後面傳遞SessionID來獲取保存在服務端的session值。

cookie不能說不安全,cookie如果保存在客戶端時,用可逆演算法加密後再保存在客戶端的話,也挺安全。但是,數據過多的話,導致每次都要把cookie回傳給伺服器,會影響效率。

urlrewrite只適合傳遞簡單的參數,而且有長度限制,更會引起安全問題(瀏覽器歷史記錄會完整的記錄訪問的URL)。

隱藏表單,同樣的,每次訪問需回傳給伺服器,造成速度緩慢(asp.net就喜歡這種方式)

4個選項當中安全性最高的是session,速度最快的也是session ,因為他要客戶端回傳的數據少