javawebステージはいくつかの質問を満たす必要があります。

9つの暗黙オブジェクトの1.jsp

レスポンス(ページ):レスポンスjavax.servlet.http.HttpServletResponseのオブジェクトは、オブジェクトのインスタンスです。サーバは、リクエストオブジェクトを作成しますように、それはクライアントへの応答を表すオブジェクトを作成します。応答オブジェクトは、新しいHTTPヘッダインタフェースを作成するプロセスを定義します。このオブジェクトによって、JSPプログラマは新しいクッキーや日付スタンプ、HTTPステータスコードを追加することができます。

リクエスト(要求):要求するjavax.servlet.http.HttpServletRequestオブジェクトは、オブジェクトのインスタンスです。クライアントがページを要求するたびに、JSPエンジンは、要求を表す新しいオブジェクトを作成します。要求オブジェクトは、情報を取得する方法は、フォームデータ、クッキー、HTTPメソッドHTTPヘッダを含む提供します。

OUT(ページ): OUT暗黙するjavax.servlet.jsp.JspWriterオブジェクトは、応答のコンテンツを送信するため、オブジェクトのインスタンスです。JspWriterは、ページが異なってインスタンス化キャッシュされているかどうかに基づいてオブジェクトを初期化します。バッファは=「偽」属性をバッファリングpageディレクティブを使用して無効にすることができます。JspWriterオブジェクトは、同じクラスで最もてjava.io.PrintWriterのメソッドが含まれています。しかし、のJspWriterがバッファリングに対処するためのいくつかの追加の方法があります。異なるとのPrintWriterオブジェクト、のJspWriter IOExceptionsは例外をスローします。

セッション(セッション):セッションオブジェクトは、セッションオブジェクトJavaサーブレット同じ挙動と一体に動作しjavax.servlet.http.HttpSessionのインスタンスです。クライアント要求の間でクライアントセッションを追跡するためのセッションオブジェクト。

aplication(aplication):ファイルアプリケーションオブジェクトを直接生成されたサーブレットServletContextオブジェクトをパッケージ化されたオブジェクトは、そのライフサイクル全体を示すファイルアプリケーションのJSPページで、実際のjavax.servlet.ServletContextオブジェクトのインスタンスです。JSPページが初期化されると、このオブジェクトを作成し、JSPページがアプリケーションオブジェクトに属性値を追加することにより、jspDestroy()メソッドを削除されたときにアプリケーションオブジェクトも削除されます、あなたが確保できるよう、Webアプリケーションの缶を構成するすべてのJSPファイルそれにアクセスします。

設定(ページ): configコンjavax.servlet.ServletConfigオブジェクトがインスタンス化され、直接パッケージServletConfigオブジェクトサーブレットの周りに生成されます。

pageContext(ページ)のpageContext javax.servlet.jsp.PageContextのオブジェクトは、オブジェクトのインスタンスです。pageContextオブジェクトは、JSPページ全体を表現するために使用されます

ページ(ページ):ページオブジェクトは、実際にページインスタンスへの参照です。これは、JSPページ全体を表すオブジェクトと考えることができ、ページオブジェクトは、このオブジェクトの直接の同義語です。

例外(ページ):例外は、前のオブジェクトが含まれていますがラッパーにスローされる例外です。典型的には、エラー状態に対する適切な応答を生成するために使用されます

スコープは、括弧内に属しています

2.四つのドメインオブジェクトとその範囲

4つのJavaWebスコープ:ページ、リクエスト、セッション、アプリケーション

ページ:全体のスコープJSPページは、4つのスコープの最小のものであり、ライフサイクルは、いつ終了応答破壊JSP、要求を開始します。リファレンスは通常、オブジェクトのpageContextのページオブジェクトに格納されます。

要求:Requestスコープは、現在では有効であり、ライフサイクルは、サービスメソッドの呼び出しは、着信サービスメソッドの前にサーバによって作成されます。全体の要求、要求寿命の終わりの終わり。サーブレットのHttpServletRequestインターフェイスによって2つの方法の間の情報共有が実現します。
setAttributeメソッド(文字列名、オブジェクト値) : リクエストスコープに名前を保存するために、オブジェクトの値の名前を入力します。
ObjectgetAttribute(文字列名):指定リクエストスコープから情報を入手するための名前。

セッション:範囲の役割は、単一のセッションです。最初のコールでrequest.getSession()メソッドの時のライフサイクル、セッションがメモリ戻るに作成されていない場合、対応するセッションが存在するか否かをサーバがチェック。時間セッションの期間(デフォルトは30分です)使用しない場合、サーバーは、セッションを破棄します。サーバが(近くに強制的に)異常終了した場合、有効期限が切れていないセッションの破壊に従います。あなたが提供する無効化セッションを()を呼び出す場合は、すぐにセッションを破棄することができます。セッションを介して、メインインターフェイスのHttpSessionを提供する方法は、以下:
ObjectHttpSession.getAttribute(文字列名):セッションから情報を取得します。
voidHttpSession.setAttribute(文字列名、オブジェクト値) : セッションに情報を保存します。
HttpSessionHttpServletRequest.getSession()配置されている現在の要求のセッションオブジェクトを取得します。

アプリケーション: Webアプリケーションの全範囲の役割。Webアプリケーション・サーバーは、ServletContextオブジェクトの破壊に伴って、ダウンしているか、削除されたときにWebアプリケーションがWebアプリケーション全体のServletContextオブジェクトの代わりにコンテナにロードされたときに作成。サーバは全体の時間をシャットダウンし始め適用範囲は、この範囲で提供される情報は、すべてのアプリケーションで使用することができています。:以下達成するために、メインのServletContext方法を提供するアプリケーションスコープによる情報の伝送
ObjectgetAttribute(文字列名):アプリケーションから情報を取得します。
空のsetAttribute(文字列名、オブジェクト値 ): アプリケーションスコープに情報を設定します。

あまりの小さな範囲:ページ(JSPページ)、要求(リクエスト)、セッション(セッション)、アプリケーション(Webアプリケーション全体)。

3.servletライフサイクル

クラスローディング手順の(1)実施例及び

サーブレットコンテナプロモーターまたはクライアントが要求を送信すると、それが存在する場合、直接応答要求インスタンスを読み取り、メモリに格納されているサーブレットコンテナサーブレットの例かどうかを見つける;いない場合は、サーブレットの例を作成します。

(2)のinit()初期化プロセス

インスタンス化した後、サーブレットコンテナは、(いくつかの準備作業やリソースプリロード作業)を初期化するためのinitサーブレット()メソッドを呼び出します。

(3)サービス()サービスプロセス、選択のdoGet / doPostメソッド

初期化後、サーブレットが要求に応答してレディ状態にすることができます。クライアント要求を処理するクライアント要求、コールサービス()メソッドを受信すると、HttpServletをのサービス()メソッドは、要求に応じてのdoXxx異なるが移調されます()メソッド、doGetメソッド/ doPostメソッドは、データを送信することができます指定されたページ。

破壊(4)破壊()プロセスが
コンテナがサーブレット閉じられたときに、サーブレットの例は、任意の時点で破壊しました。一方、サーブレットサーブレットコンテナがサーブレットを解放する必要があるかどうかを判断するために破壊する()メソッドを呼び出します(または資源回収)

そして、リンクと違い、4.cookieセッションの作品

(1)クッキーの作品

クッキーを作成します。1.

あなたが最初にクッキーを使用してWebサイトにアクセスすると、ウェブサイトのサーバーが動作します次のように:
①ユーザーは一意の識別子(クッキーID)を生成し、Cookieオブジェクトを作成し、
②それが会話されているデフォルトユーザーがブラウザを終了した後、ブラウザのメモリに保存されたクッキーのレベルは、削除されます。あなたがしたい場合は、サイトのCookieにブラウザがディスク上に保存されている、あなたは最高の年齢(MAXAGE)を設定する必要があり、秒単位の時間を与える(最大年齢は0に設定されているブラウザのCookieを削除するコマンドである);
③ HTTPレスポンスヘッダに入れクッキーは、クッキーは、Set-CookieのHTTPリクエストヘッダに挿入されます。
④は、HTTP応答メッセージを送信します。

図2に示すように、提供される記憶クッキー

ブラウザは、応答パケットを受信した後、セットCookiedの事前に特別な指示メッセージに従ってクライアントに格納された対応するクッキーを形成します。現在のユーザーを記録Cookie情報。

3、クッキーを送信

ユーザーが再びサイトにアクセスすると、ブラウザ最初のチェックは、すべてのクッキーを保存し、サイトのクッキーが存在する場合、(つまりは、Cookieスコープは述べてリソースが要求に等しくなりますよりも大きい)、要求リソースに添付クッキーを置きますHTTPヘッド要求がサーバーに送信されます。

4、クッキーを読みます

サーバーがユーザーのクッキーにヘッダから取得したユーザーのHTTPリクエストを受信した後、彼らは内部から必要なものを見つけます。

注:クッキーは、ブラウザがアカウントのパスワード機能を覚えて意味するものではありません、またそれはあなたがあるため、自動的にパスワードを入力することができますクッキーの存在のアカウントを入力することができることを意味しています。あなたが淘宝網にログインしたときにクッキーを使用すると、再び淘宝網にログインしているとき、これはクッキー機能で開いたときに、このコンピュータ限り、偶数ページをオフにシャットダウン、またはかどうか、淘宝網のログインに似ています。クッキーは、サーバ取得request.getCookiesにより取得した全てのクッキー、ヘッダとクッキー格納さrequest.addCookie及びクライアントへの応答を取得しました。

(2)セッション作品

セッションの作成1.

サーバーが最初に要求を受信すると、スペースがセッションIDを生成している間、セッションを(Sessionオブジェクトが作成される)まで開き、Set-Cookieヘッダーの応答:「JSESSIONID = XXXXXXX」コマンドがクッキーを設定し、クライアントの要求に送信されます応答;クライアントが応答を受信し、ネイティブクライアントは、クッキー情報JSESSIONID = XXXXXXXを設定し、クッキーの有効期限は、ブラウザセッションの最後で、次のクライアントが同じWebサイトにリクエストを送信するたびに、これは、(セッションIDを含む)クッキー要求ヘッダー情報をもたらす。次いで、サーバは、JSESSIONIDセッションID要求を取得する名前の値を取得するヘッダ情報クッキー要求を読み出します。

2、セッション

あなたはクッキーを無効にした場合は、URL書き換えを使用することができ、追加の情報やクエリ情報として直接セッションIDのURL URLパスを追加する
もう一つのことは隠されたフォームフィールドです。つまり、サーバーは自動的にセッションIDにできるようにするためにフォームが送信されているサーバーにバックを渡され、隠されたフィールドを追加し、フォームを変更します。

(3)クッキーとセッションの間の差

格納位置と異なる1、

クライアントに保存されたクッキー、セッションはサーバーに保存されています。

2、異なるアクセスモード

クッキーはASCII文字列のストレージは、アクセス要求のUnicode文字またはバイナリデータのニーズをエンコードすることができます。クッキーはまた、直接Javaオブジェクトにアクセスすることはできません。クッキーを使用して、少し複雑な情報を格納するにはタフな試合です。
Aセッションは、制限なく、文字列、整数、リスト、地図などを含むデータ、任意のタイプへのアクセスが可能です。Sessionはまた、などの直接保管Java Beanが、あるいは任意のJavaクラス、オブジェクト、のことができるように、それは非常に使いやすいです。セッションは、Javaコンテナクラスとして見ることができます。

3、セキュリティ(プライバシーポリシー)異なります 

4、異なるの妥当性について

図5に示すように、サーバによる圧力差

クロスドメインサポート上の異なる6、

5.get提出違い、ポスト提出

(1)データがサーバから取得されるGET、POSTデータがサーバに送信されます。
URL(2)パラメータは、フォームを送信するためのデータキューに追加され得るACTION属性で参照され、各フィールドの値がフォームに対応する、それはURLで見ることができます。その内容と様々な分野へのHTTPポスト機構を介してポストは、属性が参照ACTIONで送信フォームHTML HEADER URLアドレスに配置されます。ユーザーは、このプロセスは表示されません。
(3)サーバがあるRequest.Formにより提出されたデータを取得し、実施の形態では、ポストの実施形態のサーバー場合、Request.QueryString変数値の取得を取得します。
転送され得るデータの量(4)は2キロバイトよりも大きくない、小さいです。データ伝送を大量に投稿し、一般的に無制限にデフォルト設定。しかし、理論的には、IIS4 80キロバイトの最大量、IIS5 100キロバイトのための
(5)GETセキュリティ高いセキュリティを投稿し、非常に低いです。

HTTPは、サーバーと対話するさまざまな方法を定義して、最も基本的な方法は、GETとPOSTです。実際にはほとんどの要求のためにGET、POSTしかし、更新サイト用に予約されています。HTTPの仕様によれば、情報検索のためのGET安全かつ冪等であるべきです。操作は情報を得るのではなく情報を変更するために使用することを、いわゆるセキュリティ手段。つまり、GET要求は、一般的に副作用があってはなりません。パワーと同じURLに対する複数の要求の他の手段は、同じ結果を返す必要があります。完全な定義は、それが思ったほど厳密ではありません。基本的に、目標は、ユーザーがリンクを開いたとき、彼女はビューの独自のポイントからのリソースを変更しないことを確認することができますということです。たとえば、ニュースサイトのフロントページは常に更新します。2番目の要求は、ニュースの異なるバッチを返しますが、それは常に現在のニュースを返すため、この操作はまだ、安全でべき等と考えられています。そして、その逆。POSTリクエストはそう簡単ではありません。サーバー上のリソースを変更することがありPOSTリクエスト。それでもニュースサイト、サイトの後に提出した別のノートとなっているので、例えば、記事のノートの読者は、POSTリクエストによって達成されなければならない
FORMの提出時に、GET要求への方法がデフォルトに指定されていない場合、フォームデータを提出?離れURL別々と、URLの最後に追加されます。これは、英数字として送信されるが、スペースが「+」に変換され、そして他の記号は、XXは、ASCII(またはISOラテン1)の値を16進数表現のためのシンボルであり%XXに変換されます。プロトコルヘッダ内に配置されたHTTP要求データのGETリクエストを送信し、送信POSTデータエンティティ内のデータは、POSTがそのように限定されないが、データのGET提出は、1024のバイトまでを有することができます。

6、およびリダイレクト差を要求する転送要求

フォワード:要求、応答(サーバー)
のリダイレクト:2つの要求、2つの応答(サーバー)

例:サーバー用ボローお金に要求を想定し、クライアント(ブラウザ)、B、C
に転送要求:(リクエストを開始A)借用金Bを見つけるために、Bはに行って、彼はお金が、良い男を持っていたと述べましたCは(ここかの要求)お金を借りるために彼に言われた、Cはの要求を受け入れ、その後、お金を借りる
(Cレスポンスに)に、それは要求、応答です。
リダイレクト:ボローお金を探してA、Bは、(Aが要求を開始するため)、Bは、彼がお金が、良い男がなかったと述べた、とA C Cは、借用金に金持ち(AとB応答)見つけることができることを彼に伝えるために彼に言った、
AそしてBは、リスニングは、ボローC(開始する要求ED C)を行った図であり、Cは要求を受け付けた後、A(Cレスポンスに)、二倍2つの応答要求を貸します。

関連コンテンツ7.HTTP契約

HTTPは、アプリケーション層プロトコルは、要求と応答で構成されている標準的なクライアントサーバモデルです、

多くの場合、上記があり、TCPプロトコル上でHTTPが含まれている(TLS / SSL)は、セキュアトランスポートプロトコルは、デフォルトのポート80、デフォルトのHTTPSポート443であります

HTTPは、常にクライアント要求、サーバーの応答によって開始される。クライアントが要求を送信しない場合には、クライアントに制限するメッセージが応答に失敗しました

HTTP操作は、作業プロセスは4つのステップに分けて、次トランザクションと呼ばれ、

1.最初の接続にクライアントとサーバーを確立することである、唯一のハイパーリンクのhttp作業が始まっクリックする必要があり
、接続、サーバーへの要求は、クライアントが開始確立した後2.
3.サーバは後で要求を受信し、適切な応答情報を与えます
前記クライアント情報は、ブラウザによって表示されるサーバ戻ると、クライアントとサーバが切断されている受信
HTTPはステートレス・プロトコル(トランザクションのメモリせずステートレスプロトコル処理手段された後、もし状態手段の欠如前面に必要な情報を処理し続け、サーバが前の情報を必要としないときに、データ伝送量の増加につながるが、一方で、それは)比較的速い応答で、再送されなければなりません

HTTPを理解するために、いくつかの要素が理解することがあり、そして4つの3ウェイハンドシェイクは、リクエストヘッダとレスポンスヘッダの構造を理解し、その上するだけでなく、手を振りました。

重複したフォームの送信を防止するための方法8.

理由:

ユーザー・エラーによる1、複数のクリック、フォーム送信ボタンを。
スピードや他の原因のページケイトンによる2、ユーザーが繰り返し提出するページを更新します。
図3は、郵便配達は悪質な繰り返しのような使用ツールへのハッカーや悪意のあるユーザーがフォーム(攻撃サイト)を提出します。

ソリューション:

1、JSは、送信ボタンを禁止する:無効送信ボタンフォームが送信された後、この方法が無効な場合、クライアントのJSが出て無効にした場合
、フォームを送信した後、POST /リダイレクト/ GETモード実行リダイレクトページを使用して、2、ターン成功した情報ページ提出する
符号の特別セッションに保存されている3は、サーバ側で一意の識別子を生成し、セッションに彼を入れて、セッションは、フォームが最初に最初に提出され、それは隠されたフィールドを等しく比較的示し、同時に書かれています次提出する初めてそれ未満に等しい示すコミットし、送信し、セッションを削除し
、ユーザが再送信フォームにリフレッシュボタンを使用していないので、場合でも、ヘッダ関数ステアリングを使用して、4
、5ユニーク制約を追加するか、データベース内の一意のインデックスを作成提出され、重複データを防止するための最も効果的な方法でデータの重複、予防
6をクライアントが無効になっクッキースワップが発効していないとされている場合、その状況に基づいて、フォームの状態を、使用して記録クッキーは形がこのように提出されているかどうかを確認することができます

9.jsとJQ共通機能セレクタと

JS:楽しい(この)
JQ:$(この)
2.親ラベルを取得
JS:のdocument.getElementById( "***")のparentNode。
JQ:$( "***")親を()
3.サブラベルを取得
JS:。のdocument.getElementById( "***")のchildNodes
JQ:$( "***")子供()。
4.ラベルの取得
JS:のdocument.getElementById( "テスト")previouselementsibling。
JQ:$( 。 "#test")PREV()
5.次のタグを取得し
ますdocument.getElementById( "テスト")nextSibling:JS
JQは:$( "#テスト")次の()。

またgetElementsByName(によって形成することがJS)、getElementsByTagNameの()、のgetElementsByClassName()、querySelector()、querySelectorAll()
A:getElementByIdを(ID):指定されたオブジェクトIDが基準となる戻り、もし特定の文書を検索し、要素、最も効果的な方法は、getElementByIdを()にある
B:getElementsByName(名):name属性値が一意でないため、文書名属性は、要素の名前値で返し、結果可能性の高いリターンへのクエリは配列で、ない要素。
C:getElementsByTagNameの(タグ名):要素のタグは、ドキュメントで指定戻り値
のgetElementsByClassName():指定された要素からドキュメントに戻るクラス名をD
E:querySelector()戻り値:文書指定するCSSの最初の整合要素セレクタ
F: querySelectorAll():文書指定するCSSセレクタの最初に一致した要素を返します

JQより便利に、$( "")とCSSセレクタのようなセレクタ文言
参照します。https://www.cnblogs.com/codingcc1/p/11073083.html

10.ゴミ問題を防ぐ方法

提出がポストされた場合は1)、文字化けしたくない、あなただけがオブジェクトを要求することができエンコーディングを設定する必要があります。
Request.setCharacterEncoding( "UTF-8");
( "2312")response.setCharacterEncoding、通知サーバから送信今ときデータコードテーブル//
response.setContentType( "テキスト/ HTML;のcharset = 2312"); //は、 ブラウザに通知どのようなストップウォッチで開かれている
注:クライアントデータは、要求がどのようなエンコーディングに設定する必要がありますどの方法提出されます。

提出が取得された場合2)、文字化け、唯一の手動変換を望んでいない、リクエストオブジェクトのエンコーディングが無効です設定。

Stringデータ= "???????"; //文字列の歪み
バイト源[] = data.getBytes( " ISO8859-1"); // クライアントから提出された元のデータ取得
データ=新しいString(データを。 GetBytesメソッド( "ISO8859-1")、 " UTF-8"); // ごみを解決

//同等に

データ=新しい文字列(ソース、 "UTF-8");

3)の方法をに.get化け、また方法サーバ構成を変更することによって達成することができます。Tomactのconfディレクトリにあるserver.xmlファイルを変更します。

 

 

おすすめ

転載: www.cnblogs.com/zn19961006/p/11879092.html