セッショントラッキング技術
サーバー側では、いくつかのリソースファイルがある、あなたは、要求のステータスを決定するためにあなたがアクセス要求を聞かせている場合、要求は、リソースファイルにアクセスする権利を有するかどうかを確認するために、またはアクセス要求を許容する必要はありません。これを実現するには、セッショントラッキング技術を使用する必要があります。
二つの方法でセッショントラッキング技術を実装します。
1.Cookie
2.Session(フォーカス)
クッキー:
- 1.cookieは、サーバーの外に作成されます。
- 2.Cookieは、ブラウザ側で保存されます。
- 3.ブラウザのクッキー情報たら、ブラウザは、プロジェクトは自動的にクッキー関連情報を搬送するプロジェクトのすべてのリソースを要求します。
把握するためにクッキーのニーズを学ぼう:
1.クッキーを作成する方法サーバ
クッキーを=(フラグ値に)新しい新しいクッキーのクッキー; // 2つのパラメータはクッキーフラグを表し、クッキーの値。
2.サーバーがブラウザにクッキーを送信した場合
response.addCookie(クッキー);
ブラウザのクッキーを保存する方法3.
心配するプログラマなし。ブラウザは、すでにこの機能を持っているので。
4.ブラウザは、要求を運ぶためにどのように再びクッキーの時間を送信します。
ご心配なく。
5.どのようにプライバシーのリソースサーバをチェッククッキーに。
Cookie[] cookies = request.getCookies();//获取到所有的跟本项目相关的所有的cookie。
If(cookies!=null){
For(Cookie c:cookies){//遍历每一个cookie看是否有需要的cookie信息
String name=c.getName();//得到cookie的标记
String value=c.getValue();//得到cookie的值
}
}
概要クッキーの機能:
- 1.cookie文字列がブラウザに保存されています。クッキーはマークされ、値が構成されています。タグと値は文字列です。中国ではありません。
- 2.ブラウザのリクエストプロジェクトのリソースが自動的にプロジェクトのクッキーに関連付けられて頂きます。
- ブラウザを閉じたときに3.Cookieは自動的に削除されます。長さは、あなたがクッキーを制御したい場合は、我々はクッキーオブジェクト(60)を作成し、有効である。クッキーの寿命を設定するにはsetMaxAge呼び出すことができます。秒で。あなたはクッキーを観察したい場合は、ブラウザでクッキーに関連するコンテンツを見るために内部に設定することができます。
- 4.Cookieデータ不安、内部の重要なデータをクッキーはありません。
クッキー短所:
- 安全でありません
- これは、無効にすることができます
- データ4Kのクッキー限られた量
- クッキーは、直接、中国はのURLEncoderおよびURLDecoderのエンコードおよびデコードするために使用することができます保存することができません
重要度の低いデータを保存し、一般的にクッキーを。
セッション(セッション)
各ブラウザのセッションサーバは、専用のストレージスペースを確立します。
1.どのようにセッションオブジェクトを取得する
HttpSessionのセッション=でrequest.getSessionを(); //セッションオブジェクトを取得し
、ブラウザがサーバに初めてアクセスした後、方法、セッションオブジェクトを作成することとなっている意味を呼び出します。
ブラウザがサーバーにアクセスするのは初めてではない場合は、コードを呼び出すと、コードの意味は、対応するブラウザセッションを得ることです。
session.getId();一意のタグにセッションを取得します。
2.sessionスコープ
にsession.setAttribute(キー、値); //セッションスコープにデータを置く
session.getAttribute(キー); //セッションスコープからデータを取得
session.removeAttibute(キー); //セッションスコープどのデータを削除しました。
3.Sessionライフサイクル
A.デフォルトのセッションは30分間生き残るだろう。長い生存はweb.xml構成ラベル、次のセッションで決定することができます。
B.ブラウザがサーバーがブラウザを閉じる要求します。この時間の後、同じを取得していないセッションを閉じる前に結果のセッションで、サーバーにアクセスし、ブラウザを開きます。サーバと30分後に前のセッションの破壊を出しました。
C.session.invalidate();このメソッドは、セッション内のすべてのデータを消去することができます。
セッション機能
- ブラウザで1.session 1で対応。
- 2.Sessionは、サーバー側に保存されます。
- 任意のデータ型の3.Sessionストレージ。
- データを解放するために自由ではない4.Sessionスコープ。
違いのクッキーとセッション
同じポイント:ブラウザ関連に関連するすべてのセッショントラッキング技術、。
違い:
- 1.保存位置は同じではありません。ブラウザ、セッションサーバでクッキー。内部セッションに、重要なデータを保存します。
- 2.データ型を保存同じではありません。クッキーは、文字列型です。セッションのいずれかのタイプ。
セッションの2つの典型的な使用事例:
力にログイン
2.検証コードは、達成するために
変化する画像:本質を
効果:悪意のあるユーザ操作を避けます。
セッションの基礎となる原則:
ブラウザのリクエストがサーブレットを受信した場合、サーブレットは、対応するセッションのブラウザを選択する方法である内部セッションの数からでしょうか?
サーブレットが最初でrequest.getSession()を実行したとき1.、サーブレットは、セッションオブジェクトを作成し、それはクッキーオブジェクトを作成します。クッキーC =新しいクッキー( "JSESSIONID"、session.getId());
2.ブラウザが要求すると、ブラウザが自動的にクッキーを運ぶでしょう、でrequest.getSession();この基本的なコードでしょうJSESSIONID取得した値。セッションを介して対応する値を検索します。
擬似コード:
Map<String,HttpSession> sessionMap=new ConcurrentHashMap<>();//存放所有session的集合
//第一次请求
HttpSession session=new HttpSession();//第一次请求过来时,实例化出来session对象。
Cookie c=new Cookie(“JSESSIONID”,session.getId());//session的id放入cookie里面响应。
response.addCookie(c);
Session.put(session.getId(),session);//把session放入到sessionMap的集合里面。
//第n次请求
Cookie[] cookies=Request.getCookies();//获取到所有的cookie
String value=null;
For(Cookie c:cookies){
String name=c.getName();//获取到cookie的标记
If(“JSESSION”.equals(name)){
Value=c.getValue();
}
}
If(value!=null){
HttpSession session=sessionMap.get(value);
}