0107-2020-HTTP&サーブレット&Tomcatの

学習出典:XML教材JavaWebコースのダークホースJava57部分。

Tomcatの:動的なリソースを実行するためのオープンソースソフトウェア。
サーブレット:ブラウザ(Tomcatは識別することができる)のがアクセスするJava用のルールを定義するインターフェースです。
ここに画像を挿入説明

* 快速入门:
1. 创建JavaEE项目
2. 定义一个类,实现Servlet接口
	* public class ServletDemo1 implements Servlet
3. 实现接口中的抽象方法
4. 配置Servlet
	 在web.xml中配置:
    <!--配置Servlet -->
    <servlet>
        <servlet-name>demo1</servlet-name>
        <servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>demo1</servlet-name>
        <url-pattern>/demo1</url-pattern>
    </servlet-mapping>
  • 原則の実装:
    1. サーバは、リクエストURLパスを解析するクライアントブラウザの要求を受けたリソースパスは、サーブレットへのアクセスを取得するには
    2. 対応するタグ本文の内容があるかどうか、のweb.xmlファイルを検索します。
    3. その場合は、対応する完全なクラス名を見つけます
    4. Tomcatは、メモリにロードされ、そのオブジェクトを作成されたファイルをバイトコードになります
    5. そのメソッドを呼び出します

複数の実装クラスのHttpServletである
0要求モード決意

  1. データの取得
    HTTPを:
  • コンセプト:ハイパーテキスト転送プロトコルハイパーテキスト転送プロトコル

    • プロトコルを転送します、ときに、クライアントとサーバーの通信、データ伝送フォーマットを定義します

    • 特長:

      1. TCP / IPベースのハイレベル契約
      2. デフォルトのポート番号:80
      3. 要求/応答モデルに基づく:応答時間は最初の要求に対応
      4. ステートレス:各リクエストは独立しており、対話型のデータができません
    • 過去のバージョン:

      • 1.0:新しい接続の意志を確立するために、各要求に応じて、
      • 1.1:多重アクセス
  • データ要求メッセージのフォーマット

    1. リクエストライン
      リクエストメソッドリクエストURL要求プロトコル/バージョン
      GET /login.html HTTP / 1.1

      • 要求モード:
        • 7 HTTPプロトコルは、実施例を要求した、そこには、二つの一般的に使用されます
          • 取得する:
            1. URLの後に、要求行のパラメータを要求します。
            2. URLは、限られた長さを要求します
            3. 安全性の低いです
          • 役職:
            1. リクエストボディでリクエストパラメータ
            2. URLは、要求の長さに限定されるものではなく、
            3. 比較的安全
    2. リクエストヘッダ:サーバに関するいくつかの情報伝えるために、クライアントのブラウザ
      のリクエストヘッダー名を:リクエストヘッダの値

      • 一般的なリクエストヘッダ:
        1. ユーザーエージェント:ブラウザがサーバーに伝え、私はあなたが情報を使用しているブラウザのバージョンにアクセス

          • あなたは、解決のブラウザの互換性の問題を頭のサーバ側の情報を得ることができます
        2. リファラーます。http://localhost/login.html

          • サーバーに指示し、I(現在の要求は)から来るの?
            • 役割:
              1. セキュリティチェーン:
              2. 統計:
    3. 要求空白行
      ブランク要求ヘッダPOST要求を分割するため、あるラインと、リクエストボディ。

    4. リクエストボディ(ボディ):

      • パラメータ要求をカプセル化するPOSTリクエストメッセージ
    • 字符串格式:
      请求行:POST /login.html HTTP / 1.1
      请求头:ホスト:ローカルホスト
      のUser-Agent:Mozillaの/ 5.0(Windows NTの6.1; Win64の、x64の、RV:60.0)のGecko / 20100101 Firefoxの/ 60.0
      受け入れる:テキスト/html,application/xhtml+xml,application/xml;q=0.9、/ ; Q = 0.8
      受け入れ言語:ZH-CN、ZH; Q = 0.8、ZH-TWを、Q = 0.7、ZH-HKと、Q = 0.5、EN-US; Q = 0.3、EN; Q = 0.2
      のAccept-エンコード:gzipで、デフレート
      リファラーます:http://localhost/login.html
      接続:キープアライブ
      のアップグレード-安全でない-要求:1

リクエストボディ:ユーザ名= zhangsan(POSTのみ)
要求

  1. リクエストとレスポンスのオブジェクトの原理

    1. リクエストとレスポンスのオブジェクトがサーバーによって作成されます。私たちは、それらを使用します
    2. リクエストオブジェクトは、オブジェクトに応じてに設定され、要求メッセージ、応答メッセージを取得することです
  2. リクエストオブジェクト継承アーキテクチャ:
    のServletRequest -インターフェイス
    |継承
    のHttpServletRequest -インターフェイス
    |達成
    org.apache.catalina.connector.RequestFacadeクラス(Tomcatの)

  3. リクエスト機能:

    1. データ取得要求メッセージ
      1. ラインデータ取得要求

        • GET / day14 / DEMO1?名前= zhangsan HTTP / 1.1
        • 方法:
          1. 取得要求メソッド:GET

            • 文字列getMethod()メソッド
          2. / day14:(*)の仮想ディレクトリを取得します。

            • 文字列getContextPath()
          3. サーブレットパスを取得:/ DEMO1

            • 文字列getServletPath()
          4. 名前= zhangsan:リクエストパラメータ取得モードを取得します。

            • 文字列getQueryString()
          5. (*)の取得要求URI:/ day14 / DEMO1

            • 文字列getRequestURI():/ day14 / DEMO1

            • StringBufferのgetRequestURL()ます。http:// localhost / day14 / DEMO1

            • URL:ユニフォームリソースロケータます:http:中国の// localhost /をday14 / DEMO1人民共和国

            • URI:統一資源識別子:/ day14 / DEMO1共和国

          6. 取得プロトコルとバージョン:HTTP / 1.1

            • 文字列getProtocol()
          7. クライアントのIPアドレスを取得します。

            • 文字列getRemoteAddr()
      2. データ取得要求のヘッダ

        • 方法:
          • (*)文字列のgetHeader(文字列名):名前で要求ヘッダー要求ヘッダーの値を取得します
          • 列挙getHeaderNamesは():すべてのリクエストヘッダー名を取得します。
      3. ボリュームデータ取得要求:

        • 要求POSTリクエストパラメータのみのモード、唯一のリクエストボディ、リクエストボディでPOSTリクエストをカプセル化:リクエストボディ
        • ステップ:
          1. ストリームオブジェクトを取得します。

            • BufferedReaderのgetReader():文字入力ストリーム、文字データの操作のみを取得します。
            • サーブレット入力のgetInputStreamは():入力バイトストリームを取得し、あなたはすべてのタイプのデータを操作することができます
              • ファイルには、知識のポイントを説明するためにアップロードされた後
          2. そして、ストリーム・オブジェクトからデータを取ります

公開された98元の記事 ウォンの賞賛0 ビュー2206

おすすめ

転載: blog.csdn.net/weixin_43221993/article/details/103881436