Cookie&Session筆記

      網友投稿 696 2025-03-31

      今日內容

      1. 會話技術 1. Cookie 2. Session 2. JSP:入門學習

      1

      2

      3

      4

      會話技術

      1. 會話:一次會話中包含多次請求和響應。 * 一次會話:瀏覽器第一次給服務器資源發送請求,會話建立,直到有一方斷開為止 2. 功能:在一次會話的范圍內的多次請求間,共享數據 3. 方式: 1. 客戶端會話技術:Cookie 2. 服務器端會話技術:Session

      1

      2

      3

      4

      5

      6

      Cookie:

      1. 概念:客戶端會話技術,將數據保存到客戶端 2. 快速入門: * 使用步驟: 1. 創建Cookie對象,綁定數據 * new Cookie(String name, String value) 2. 發送Cookie對象 * response.addCookie(Cookie cookie) 3. 獲取Cookie,拿到數據 * Cookie[] request.getCookies() 3. 實現原理 * 基于響應頭set-cookie和請求頭cookie實現 4. cookie的細節 1. 一次可不可以發送多個cookie? * 可以 * 可以創建多個Cookie對象,使用response調用多次addCookie方法發送cookie即可。 2. cookie在瀏覽器中保存多長時間? 1. 默認情況下,當瀏覽器關閉后,Cookie數據被銷毀 2. 持久化存儲: * setMaxAge(int seconds) 1. 正數:將Cookie數據寫到硬盤的文件中。持久化存儲。并指定cookie存活時間,時間到后,cookie文件自動失效 2. 負數:默認值 3. 零:刪除cookie信息 3. cookie能不能存中文? * 在tomcat 8 之前 cookie中不能直接存儲中文數據。 * 需要將中文數據轉碼---一般采用URL編碼(%E3) * 在tomcat 8 之后,cookie支持中文數據。特殊字符還是不支持,建議使用URL編碼存儲,URL解碼解析 4. 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可以共享 5. Cookie的特點和作用 1. cookie存儲數據在客戶端瀏覽器 2. 瀏覽器對于單個cookie 的大小有限制(4kb) 以及 對同一個域名下的總cookie數量也有限制(20個) * 作用: 1. cookie一般用于存出少量的不太敏感的數據 2. 在不登錄的情況下,完成服務器對客戶端的身份識別 6. 案例:記住上一次訪問時間 1. 需求: 1. 訪問一個Servlet,如果是第一次訪問,則提示:您好,歡迎您首次訪問。 2. 如果不是第一次訪問,則提示:歡迎回來,您上次訪問時間為:顯示時間字符串 2. 分析: 1. 可以采用Cookie來完成 2. 在服務器中的Servlet判斷是否有一個名為lastTime的cookie 1. 有:不是第一次訪問 1. 響應數據:歡迎回來,您上次訪問時間為:2018年6月10日11:50:20 2. 寫回Cookie:lastTime=2018年6月10日11:50:01 2. 沒有:是第一次訪問 1. 響應數據:您好,歡迎您首次訪問 2. 寫回Cookie:lastTime=2018年6月10日11:50:01 3. 代碼實現: package cn.itcast.cookie; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLDecoder; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.Date; @WebServlet("/cookieTest") public class CookieTest extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //設置響應的消息體的數據格式以及編碼 response.setContentType("text/html;charset=utf-8"); //1.獲取所有Cookie Cookie[] cookies = request.getCookies(); boolean flag = false;//沒有cookie為lastTime //2.遍歷cookie數組 if(cookies != null && cookies.length > 0){ for (Cookie cookie : cookies) { //3.獲取cookie的名稱 String name = cookie.getName(); //4.判斷名稱是否是:lastTime if("lastTime".equals(name)){ //有該Cookie,不是第一次訪問 flag = true;//有lastTime的cookie //設置Cookie的value //獲取當前時間的字符串,重新設置Cookie的值,重新發送cookie Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); String str_date = sdf.format(date); System.out.println("編碼前:"+str_date); //URL編碼 str_date = URLEncoder.encode(str_date,"utf-8"); System.out.println("編碼后:"+str_date); cookie.setValue(str_date); //設置cookie的存活時間 cookie.setMaxAge(60 * 60 * 24 * 30);//一個月 response.addCookie(cookie); //響應數據 //獲取Cookie的value,時間 String value = cookie.getValue(); System.out.println("解碼前:"+value); //URL解碼: value = URLDecoder.decode(value,"utf-8"); System.out.println("解碼后:"+value); response.getWriter().write("

      歡迎回來,您上次訪問時間為:"+value+"

      "); break; } } } if(cookies == null || cookies.length == 0 || flag == false){ //沒有,第一次訪問 //設置Cookie的value //獲取當前時間的字符串,重新設置Cookie的值,重新發送cookie Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); String str_date = sdf.format(date); System.out.println("編碼前:"+str_date); //URL編碼 str_date = URLEncoder.encode(str_date,"utf-8"); System.out.println("編碼后:"+str_date); Cookie cookie = new Cookie("lastTime",str_date); //設置cookie的存活時間 cookie.setMaxAge(60 * 60 * 24 * 30);//一個月 response.addCookie(cookie); response.getWriter().write("

      您好,歡迎您首次訪問

      "); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      61

      62

      63

      64

      65

      66

      67

      68

      69

      70

      71

      72

      73

      74

      75

      76

      77

      78

      79

      80

      81

      82

      Cookie&Session筆記

      83

      84

      85

      86

      87

      88

      89

      90

      91

      92

      93

      94

      95

      96

      97

      98

      99

      100

      101

      102

      103

      104

      105

      106

      107

      108

      109

      110

      111

      112

      113

      114

      115

      116

      117

      118

      119

      120

      121

      122

      123

      124

      125

      126

      127

      128

      129

      130

      131

      132

      133

      134

      135

      136

      137

      138

      139

      140

      141

      142

      143

      144

      145

      146

      147

      148

      149

      150

      151

      152

      153

      154

      155

      156

      157

      158

      159

      160

      161

      JSP:入門學習

      1. 概念: * Java Server Pages: java服務器端頁面 * 可以理解為:一個特殊的頁面,其中既可以指定定義html標簽,又可以定義java代碼 * 用于簡化書寫!!! 2. 原理 * JSP本質上就是一個Servlet 3. JSP的腳本:JSP定義Java代碼的方式 1. <% 代碼 %>:定義的java代碼,在service方法中。service方法中可以定義什么,該腳本中就可以定義什么。 2. <%! 代碼 %>:定義的java代碼,在jsp轉換后的java類的成員位置。 3. <%= 代碼 %>:定義的java代碼,會輸出到頁面上。輸出語句中可以定義什么,該腳本中就可以定義什么。 4. JSP的內置對象: * 在jsp頁面中不需要獲取和創建,可以直接使用的對象 * jsp一共有9個內置對象。 * 今天學習3個: * request * response * out:字符輸出流對象。可以將數據輸出到頁面上。和response.getWriter()類似 * response.getWriter()和out.write()的區別: * 在tomcat服務器真正給客戶端做出響應之前,會先找response緩沖區數據,再找out緩沖區數據。 * response.getWriter()數據輸出永遠在out.write()之前 5. 案例:改造Cookie案例

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      Session:主菜

      1. 概念:服務器端會話技術,在一次會話的多次請求間共享數據,將數據保存在服務器端的對象中。HttpSession 2. 快速入門: 1. 獲取HttpSession對象: HttpSession session = request.getSession(); 2. 使用HttpSession對象: Object getAttribute(String name) void setAttribute(String name, Object value) void removeAttribute(String name) 3. 原理 * Session的實現是依賴于Cookie的。 4. 細節: 1. 當客戶端關閉后,服務器不關閉,兩次獲取session是否為同一個? * 默認情況下。不是。 * 如果需要相同,則可以創建Cookie,鍵為JSESSIONID,設置最大存活時間,讓cookie持久化保存。 Cookie c = new Cookie("JSESSIONID",session.getId()); c.setMaxAge(60*60); response.addCookie(c); 2. 客戶端不關閉,服務器關閉后,兩次獲取的session是同一個嗎? * 不是同一個,但是要確保數據不丟失。tomcat自動完成以下工作 * session的鈍化: * 在服務器正常關閉之前,將session對象系列化到硬盤上 * session的活化: * 在服務器啟動后,將session文件轉化為內存中的session對象即可。 3. session什么時候被銷毀? 1. 服務器關閉 2. session對象調用invalidate() 。 3. session默認失效時間 30分鐘 選擇性配置修改 30 5. session的特點 1. session用于存儲一次會話的多次請求的數據,存在服務器端 2. session可以存儲任意類型,任意大小的數據 * session與Cookie的區別: 1. session存儲數據在服務器端,Cookie在客戶端 2. session沒有數據大小限制,Cookie有 3. session數據安全,Cookie相對于不安全

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      案例:驗證碼

      1. 案例需求: 1. 訪問帶有驗證碼的登錄頁面login.jsp 2. 用戶輸入用戶名,密碼以及驗證碼。 * 如果用戶名和密碼輸入有誤,跳轉登錄頁面,提示:用戶名或密碼錯誤 * 如果驗證碼輸入有誤,跳轉登錄頁面,提示:驗證碼錯誤 * 如果全部輸入正確,則跳轉到主頁success.jsp,顯示:用戶名,歡迎您 2. 分析:

      1

      2

      3

      4

      5

      6

      7

      8

      9

      Java JSP

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:標題區內容太多太雜,如何減少(文檔標題上面空太多了怎么設置)
      下一篇:excel2007表格打印報表的教程(電腦打印報表步驟)
      相關文章
      亚洲大尺度无码专区尤物| 亚洲AⅤ优女AV综合久久久| 国产精品亚洲高清一区二区| 亚洲福利精品一区二区三区| 亚洲AV成人精品一区二区三区| 中国亚洲呦女专区| 国产精品亚洲综合五月天| 亚洲制服丝袜第一页| 亚洲一区二区三区无码国产 | 亚洲天堂在线视频| 亚洲国产精品第一区二区三区| 最新亚洲人成无码网www电影| 亚洲AV日韩AV一区二区三曲| 亚洲youwu永久无码精品| 亚洲av午夜国产精品无码中文字| 亚洲第一第二第三第四第五第六| 亚洲日韩中文字幕一区| 亚洲成av人无码亚洲成av人| 国产精品亚洲专区无码牛牛| 日本中文一区二区三区亚洲 | 亚洲国产美女精品久久| 亚洲午夜电影一区二区三区| 亚洲videos| 亚洲精品无码日韩国产不卡av| 亚洲av日韩专区在线观看| va亚洲va日韩不卡在线观看| 亚洲国产婷婷香蕉久久久久久| 久久久久亚洲AV成人网| 国产亚洲一区二区精品| 无码专区—VA亚洲V天堂| 久久亚洲国产精品成人AV秋霞 | 久久国产成人精品国产成人亚洲| 在线精品亚洲一区二区三区| 亚洲男同帅GAY片在线观看| 亚洲av午夜福利精品一区人妖| 久久久亚洲AV波多野结衣| 久久亚洲国产最新网站| 亚洲av日韩av永久在线观看| 亚洲综合区小说区激情区| 亚洲AV无码精品色午夜果冻不卡 | 亚洲精品黄色视频在线观看免费资源|