歴史の本が表示さ
セッション
セッションの概要
- (デフォルトでは)専用のセッションオブジェクトブラウザを:WEB開発では、サーバは注意し、各ユーザのブラウザのセッションオブジェクト(セッションオブジェクト)のために作成することができます。このように、ユーザーデータを保存する必要が、サーバープログラムのように、ユーザーは他のプログラムにアクセスするためにブラウザを使用する場合、他のプログラムは、ユーザーのセッション内のユーザデータから取り出すことができ、ユーザーの排他ブラウザセッションのユーザーデータに書き込むことができるとき顧客サービス。
- 主な違いは、そのセッションとクッキーです。
リットルのクッキーは、ユーザーのブラウザに宛てのユーザデータです。
リットルセッション技術ユーザー排他的なセッションに書き込まれたユーザデータ。プレゼンスサーバ、Tomcatのもあります
Sessionオブジェクトがサーバーによって作成され、開発者はセッションオブジェクトを取得するのgetSessionリクエストオブジェクトのメソッドを呼び出すことができます。
- 各ブラウザがセッションに独自のデータを格納します
- セッションデータは、他のブラウザで共有することはできません
- セッションユーザーがログインしているかどうかを決定するために一般的に有用
パッケージcom.zx.web.servlet.lesson04。 インポートにjava.io.IOException; 輸入javax.servlet.ServletException; 輸入javax.servlet.annotation.WebServlet; 輸入javax.servlet.http.HttpServlet。 インポートのjavax.servlet.http.HttpServletRequest; インポートのjavax.servlet.http.HttpServletResponse; 輸入javax.servlet.http.HttpSession。 @WebServlet( "/ Lesson04Servlet1" ) パブリック クラス Lesson04Servlet1が延びているのHttpServlet { @Overrideが 保護 ボイド doGetメソッドを(HttpServletRequestのREQ、HttpServletResponseのRESP)スローServletExceptionがは、IOException { // TODO自動生成されたメソッドスタブ // セッション・オブジェクト要求によって取得された HttpSessionのセッション= req.getSessionを(); //は、セッションにデータを保存する にsession.setAttribute(「名前」、「ZX」); } }
パッケージcom.zx.web.servlet.lesson04。 インポートにjava.io.IOException; 輸入javax.servlet.ServletException; 輸入javax.servlet.annotation.WebServlet; 輸入javax.servlet.http.HttpServlet。 インポートのjavax.servlet.http.HttpServletRequest; インポートのjavax.servlet.http.HttpServletResponse; 輸入javax.servlet.http.HttpSession。 @WebServlet( "/ Lesson04Servlet2" ) パブリック クラス Lesson04Servlet2が延びているのHttpServlet { @Overrideが 保護 ボイド doGetメソッドを(HttpServletRequestのREQ、HttpServletResponseのRESP)スローServletExceptionが、IOExceptionが{ // TODO自動生成されたメソッドスタブ // セッションオブジェクト要求で取得した HttpSessionのセッション= req.getSession(); // 取得し、セッション値の 文字列名=(String)をsession.getAttribute( "名前" ) ; // クライアントへの応答 resp.getWriter()ライト(名);. } }
ブラウザが値を取得した後、他のブラウザではより少ないでしょう
ブラウザを閉じた後、再度開く、新しいセッションであるため、セッションも変更されます。
セッションは、単に次のように理解することができる。次に、ユーザは、ブラウザを閉じて、ブラウザを開き、複数のWebサーバのリソースにアクセスするために、複数のハイパーリンクをクリックして、全体のプロセスは、セッションと呼ばれています。
質問のセッション
質問:どのようにサーバーセッションを実装するために、ユーザーのブラウザサービスに?
Vサーバーは、各ブラウザのセッションIDを割り当て、クライアントによるセッションIDは、フォームのクッキーに保存されています
セッション実装の原則:
- ブラウザが背景にアクセスするときに、背景がSessionオブジェクトを作成し、IDを割り当てます
- の形でクライアントに返さこのクッキーレスポンスヘッダによるセッションID
- クライアントは、ローカル(ブラウザ)クッキーがあるJI入れます
- あなたがサイトを訪問する次回は、背中合わせにクッキーリクエストヘッダの形でセッションID意志
パッケージcom.zx.web.servlet.lesson07。 インポートにjava.io.IOException; 輸入javax.servlet.ServletException; 輸入javax.servlet.annotation.WebServlet; 輸入javax.servlet.http.HttpServlet。 インポートのjavax.servlet.http.HttpServletRequest; インポートのjavax.servlet.http.HttpServletResponse; / ** *サーブレット実装クラスがloginservlet * / @WebServlet( "/がloginservlet" ) パブリック クラスがloginservletが延びHttpServletを{ プライベート 静的 最終 長いのserialVersionUID = 1L 。 @Override 保護 ボイド doPostメソッドは、(HttpServletRequestのREQ、HttpServletResponseのRESP)スローは、IOException {ServletExceptionがを // TODO自動生成方法スタブ resp.setHeader( "コンテンツタイプ"、 "テキスト/ HTML;のcharset = UTF-8" )。 // 1.获取请求参数 文字列名= req.getParameter( "ユーザ名" ); 文字列のパスワード = req.getParameter( "パスワード" ); 文字列client_code = req.getParameter( "コード" )。 // 2.获取服务端的コードの 文字列server_code =(文字列)req.getSession()のgetAttribute( "コード" ); ); } } // 4.検証コードは、サーバから削除され // req.getSession()removeAttribute( "コード");. req.getSession()無効();. // すべてのデータが削除され、セッション } }
パッケージcom.zx.web.servlet.lesson07。 インポートにjava.io.IOException; 輸入javax.servlet.ServletException; 輸入javax.servlet.annotation.WebServlet; 輸入javax.servlet.http.HttpServlet。 インポートのjavax.servlet.http.HttpServletRequest; インポートのjavax.servlet.http.HttpServletResponse; 輸入cn.dsna.util.images.ValidateCode; / ** *サーブレット実装クラスValidateCodeServlet *验证码的サーブレット * / @WebServlet( "/ ValidateCodeServlet" ) パブリック クラス ValidateCodeServletは延びHttpServletを{ / ** * @see のHttpServlet#のdoGet(HttpServletRequestのリクエスト、HttpServletResponseの応答) * / 保護された ボイドのdoGet(HttpServletRequestのリクエスト、HttpServletResponseの応答)をスローServletExceptionがは、IOException { // TODO自動生成方法スタブ ValidateCodeのVC = 新しい ValidateCode(100、30、4、 6 )。 System.out.println( "生成的验证码:" + vc.getCode()); // 把验证码存在セッション でrequest.getSession()のsetAttribute( "コード" 、vc.getCode())。 vc.write(response.getOutputStream())。 } }
HttpSessionの一般的な方法
- HttpSessionオブジェクトに格納されたデータは、オブジェクトは、ドメイン・オブジェクトです。
- 空のsetAttribute(文字列名、オブジェクト値)、データメモリ
- getAttribute(文字列名)をオブジェクト。フェッチ
- キーのデータを削除する。removeAttribute(文字列名)を無効
- HttpSession.getId()
- setMaxInactiveInterval(int型の間隔)は、セッションの生存時間を設定します
- このセッションが無効になるように、無効()
getSession():内部の原理のインプリメンテーション
HttpSessionのでrequest.getSession():の原則の内部実装
1は、クッキーJSESSIONIDの値の名前を取得します。
2は、そのようなクッキーが存在しない、ユニークなセッションIDを割り当て、新しいHttpSessionオブジェクトを作成し、クッキーJSESSIONIDとしてクライアントに名前を書いた=セッションID
3は、そのようなクッキーがあり、IDに基づいて、サーバのメモリからそのHttpSessionオブジェクトを見つけるために、クッキー(オブジェクトのすなわちHttpSessionの値)の値を取得します:
結果:あなたを提供し続けて削除します。
見つかりません:2を最初から。
HttpSessionのでrequest.getSession(ブール値が作成)
パラメータ:
真:とのgetSession()は同じ機能します。
偽:クッキーのクライアントJSESSIONID値によると、対応するHttpSessionオブジェクトを見つけ、リターンヌルを見つけることができません(新しい、単にクエリを作成しません)。
ブラウザはSESSIONIDを渡すが、サーバーが対応するオブジェクトIDを持っていない、サーバーはnullを返します
3つの方法でセッション状態:
作成:ブラウザが最初に動的に作成されたサーバーのリソースにアクセスすると
アライブ:サーバーアプリケーションが実行されています
死:
session.invalidate();強制破壊
タイムアウト:デフォルトで30分
秒setMaxInactiveInterval(int型)
セッションの永続性
メモリ空間を節約します。
サーバーの再起動ことを確認してくださいまたは再起動する前に、セッションに対応できる単一のWebアプリケーションを再起動します。
方法:上記の所望のクラス直列化(セッション・ストレージ・オブジェクトの実装)を実装
JSP:
lesson1.jspにアクセスするときは、最初lession1_jsp.javaをコンパイルした後、lession1_jsp.classにコンパイルされます
- JSPは、Javaサーバーページの略で、それservle技術は、日によって定義された動的なWebリソースを開発するための技術です。JSP /サーブレットの仕様。JSPは実際にはサーブレットです。
- この技術のJSP最大の特徴は、JSP書き込みHTMLで記述されたように、ということですが、それは、HTMLのみに比べて、ユーザのための静的なHTMLデータを提供することができ、技術がユーザーに提供するページで、ネストされたとJSP、Javaコードが可能になります動的データ。
JSPベスト・プラクティス
- サーブレット:コントローラ。Javaコードのロジックを記述するキー(フォームデータ、ビジネスロジック処理を取得し、配布ステアリング)
- JSP:テンプレートコードが表示されます。強調表示データ
デモ:JSPフォームは、リクエストを処理しますが、一般的にその形に対処するためのサーブレットで使用することはできません
注意:リクエスト、アウト、応答が呼ばれるJSPは、組み込みオブジェクト、直接宣言する必要はありません
メソッドを指定する.JSPは二つの方法があることができます:
1.プロジェクト名を追加します。
2.直接書き込み.jspファイル名
- 小さなスクリプト<%Javaコード%>
- 式<3%+ 2%=> Out.print相当する(2 + 3)。
- 声明では、<%!%>のメンバーはグローバル、静的ブロックのクラスを定義する表現。
JSPのコメント:<% - コメントの内容 - %>特長:安全、地方の交通
コメントページ:<! - コメントページ - >特長:不安、交通費
ページ
属性:
控除:自己学習 |
セッションは:自動的にセッションオブジェクトを作成します。デフォルト値はtrueです。 |
バッファ:JSPがするjavax.servlet.jsp.JspWriter出力文字ストリームを持っています。セッティング。出力データのキャッシュサイズは、デフォルトでは8キロバイトです |
isErrorPage:スロー可能オブジェクトを作成するかどうか。デフォルトはfalseです。 |
共通:デモ |
輸入と輸入Javaコードは同じです <%@のページのインポート= "java.util.Date、java.util.Listに" %> または: <%@のページのインポート= "java.util.Date" %> <%@のページのインポート= "java.util.Listに" %> 注意:JSPが自動的に以下のパッケージをインポートします。 輸入されるjava.lang。*; インポートのjavax.servlet。*; 輸入のjavax.servlet.http *。; 輸入javax.servlet.jsp *。; |
errorPageでは:エラーページが存在する場合、特定のリソースにジャンプ あなたが書く場合errorPageでは=「/ URI」「/」ディレクトリアプリケーション、電流の絶対パスを表します。 あなたが書いていない場合は、「/」の相対パスを表します。 あり/ WebContentをからのパスを見つけることです |
contextType:response.setContextTypeに相当する( "テキスト/ HTML;のcharset = UTF-8"); |
pageEncodingは:変換に使用JSPエンジンエンコードされたファイルを伝えます。 |
isELIgnored:EL式をサポートするかどうか。デフォルトはfalseです |
含める
静的が含まれます:現在のページに含まれる他のリソースを。
<%@ファイル= "/含める/ header.jsp" %が含まれます>
ダイナミックは、次のとおりです。
<jsp:ページが含ま= "/ / header.jspを含める"> </ JSP:include>の
違い:異なる期間の翻訳
旧:翻訳にマージ2本の論文を置きます
後者:ザが含まれている場合、ファイルは、マージされないコードが実行され、別のファイルの内容のみを含みます。
JSPは、翻訳の過程を指し、次の場合は.jspファイルアクセス、hは.classファイルの.javaに、その後の.jspに変わります
原則:静的な動きを使用しないでください。
JSP 6一般的なアクション:
一般的なアクションJSP 6
- <jsp:include>の現在のJSPページに別のJSP動的コンテンツを含みます
- <jsp:フォワード>(転送要求に対応する)要求を転送
- <jsp:param>のパラメータ設定要求
- <jsp:useBeanの>オブジェクトを作成するには
- <jsp:setPropertyを>指定されたオブジェクトのプロパティの割り当てへ
- <jsp:getPropertyメソッド>指定されたオブジェクトのプロパティ値を削除します
次のオブジェクト名を持つIDが関連付けられています