フロントエンドWebを学ぶ精神的な旅------セッションテクノロジーCookieとSession


ここに画像の説明を挿入

会話型テクノロジーの概念

  セッション:セッションには、複数の要求と応答が含まれます。

  1つのセッション:ブラウザは初めてサーバーリソースにリクエストを送信し、一方のパーティが切断されるまでセッションが確立されます。

  機能:セッションの範囲内で複数のリクエスト間でデータを共有します

  方法
    1。クライアント側のセッションテクノロジー:Cookie
    2.サーバー側のセッションテクノロジー:セッション

クッキー

  コンセプト:クライアント側のセッションテクノロジー、クライアントへのデータの保存

クイックスタート:

* 使用步骤:
	1. 创建Cookie对象,绑定数据
		* new Cookie(String name, String value) 
	2. 发送Cookie对象
		* response.addCookie(Cookie cookie) 
	3. 获取Cookie,拿到数据
		* Cookie[]  request.getCookies()  

  実装の原則:応答ヘッダーのset-cookieと要求ヘッダーのcookieの実装に基づく

クッキーの詳細:

1. 一次可不可以发送多个cookie?
	* 可以
	* 可以创建多个Cookie对象,使用response调用多次addCookie方法发送cookie即可。
2. cookie在浏览器中保存多长时间?
	1. 默认情况下,当浏览器关闭后,Cookie数据被销毁
	2. 持久化存储:
		* setMaxAge(int seconds)
			a. 正数:将Cookie数据写到硬盘的文件中。持久化存储。并指定cookie存活时间,时间到后,cookie文件自动失效
			b. 负数:默认值
			c. 零:删除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设置为"/"

クッキーの特徴と機能:

  • 特徴:
    1. Cookieはクライアントブラウザにデータを保存します
    2. ブラウザには、単一のCookieのサイズ(4kb)と、同じドメイン名でのCookieの総数(20)に制限があります。
  • 機能:
    1。Cookieは通常、機密性の低い少量のデータを保存するために使用されます
    。2.ログインせずにサーバーによるクライアントの識別を完了します。

ケース:前回の訪問時間を覚えておいてください

1. 需求:
	a. 访问一个Servlet,如果是第一次访问,则提示:您好,欢迎您首次访问。
	b. 如果不是第一次访问,则提示:欢迎回来,您上次访问时间为:显示时间字符串

2. 分析:
	a. 可以采用Cookie来完成
	b. 在服务器中的Servlet判断是否有一个名为lastTime的cookie
		a. 有:不是第一次访问
			1. 响应数据:欢迎回来,您上次访问时间为:201861011:50:20
			2. 写回Cookie:lastTime=201861011:50:01
		b. 没有:是第一次访问
			1. 响应数据:您好,欢迎您首次访问
			2. 写回Cookie:lastTime=201861011:50:01

セッション

  コンセプト:サーバー側のセッションテクノロジー。セッション内の複数のリクエスト間でデータを共有し、サーバー側のオブジェクトにデータを保存します。HttpSession

クイックスタート:

1. 获取HttpSession对象:
	HttpSession session = request.getSession();
2. 使用HttpSession对象:
	Object getAttribute(String name)  
	void setAttribute(String name, Object value)
	void removeAttribute(String name)  

  原則:Sessionの実装はCookieに依存しています。

セッションの詳細:

1.クライアントを閉じてもサーバーは閉じませんが、取得したセッションは2回同じですか?
  默认情况下。不是。

  如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。
  Cookiec = new Cookie(“ JSESSIONID”、session.getId());
  c.setMaxAge(60 * 60);
  response.addCookie(c);

2.クライアントは閉じられていません。サーバーが閉じられた後、セッションは2回同じように取得されますか?
  不是同一个,但是要确保数据不丢失。tomcat自动完成以下工作

  • セッションパッシベーション:
      サーバーが正常にシャットダウンする前に、セッションオブジェクトをハードディスクにシリアル化します
  • セッションのアクティブ化:
      サーバーの起動後、セッションファイルをメモリ内のセッションオブジェクトに変換できます。

3.セッションはいつ破棄されますか?
  1.サーバーがシャットダウンします
  。2。セッションオブジェクトがinvalidate()を呼び出します。
  3.デフォルトのセッション有効期限は30分です

  オプションの構成変更:

<session-config>
<session-timeout>30</session-timeout>
</session-config>

セッションの特徴:

  • セッションは、サーバー側に保存されているセッションに対する複数のリクエストのデータを保存するために使用されます
  • セッションは、任意のタイプとサイズのデータ​​を保存できます

セッションとCookieの違い:

	1. session存储数据在服务器端,Cookie在客户端
	2. session没有数据大小限制,Cookie有
	3. session数据安全,Cookie相对于不安全

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/S_yyuan/article/details/122602610