***servletパッケージの紹介

2974 ワード

最も重要なservletインタフェースのほかjavax.servletパッケージの他の重要なメンバーには、サーブレットRequestインタフェース、サーブレットResponseインタフェース、サーブレットコンフィグインタフェース、サーブレットContextインタフェース、Genericサーブレットクラスがあります.以下、それらを簡単に紹介します.
1.サーブレットリクエストインタフェース
各リクエストに対して、サーブレットコンテナは、このリクエストをカプセル化し、サーブレットのサービスメソッドに渡すサーブレットリクエストインスタンスを作成します.サーブレットRequestオブジェクトは、パラメータ名とパラメータの値、要求された様々なプロパティ、および入力フローを提供します.JavaEEのAPI Documentを参照して、インタフェースのメソッドを理解できます.
2.サーブレットResponseインタフェース
サーブレットリクエストと同様に、サーブレットのサービスメソッドを呼び出す前に、サーブレットコンテナはまずサーブレットResponseを作成し、それを2番目のパラメータとしてサービスメソッドに渡します.サーブレットResponseは、ブラウザに応答を送信する複雑なプロセスを非表示にします.
サーブレットResponseで定義されているメソッドの1つは、クライアントにテキストを送信できるPrintWriterを返すgetWriterメソッドです.ブラウザにバイナリデータを送信する方法もあります.getoutputStreamです.
HTMLタグを送信する前にsetContentTypeメソッドを呼び出し、レスポンスのコンテンツタイプを設定し、「text/html」をパラメータとして入力する必要があります.これは、コンテンツタイプがHTMLであることをブラウザに伝えています.
3.サーブレットコンフィグインタフェース
サーブレットコンテナがサーブレットを初期化すると、サーブレットコンテナはサーブレットのinitメソッドにサーブレットコンフィグオブジェクトを転送します.サーブレットコンフィギュレーションには、@WebServicelet注記またはデプロイメント記述子(@WebServicelet注記およびデプロイメント記述子の内容は後述)を介してサーブレットに伝達される構成情報がカプセル化されています.このようにして入力された各情報は初期パラメータと呼ばれます.1つの初期パラメータにはkeyとvalueの2つの要素があります.getServiceletConfigを使用して、Serviceletに渡されるServiceletConfigを取得できます.
サーブレット内部から初期パラメータの値を取得するには、サーブレットコンテナからサーブレットに渡されるinitメソッドのサーブレットコンフィグでgetInitParameterメソッドを呼び出します.サーブレットコンフィグは、getサーブレットContextというもう一つの有用な方法も提供しています.この方法でサーブレット内部からサーブレットContextを取得することができる.
4.サーブレットContextインタフェース
サーブレットContextは、サーブレットアプリケーションのコンテキストを表し、各アプリケーションには1つのコンテキストしかありません.1つのアプリケーションを複数のコンテナに同時に配置する分散環境では、Java仮想マシンのWebアプリケーションごとに1つのサーブレットContextオブジェクトがあります.
サーブレットコンフィグでgetServiceletContextメソッドを呼び出すことで、サーブレットContextを取得できます.サーブレットContextがあれば、アプリケーション内のすべての資料からアクセスした情報を共有し、Webオブジェクトを動的に登録することができます.サーブレットContextは、オブジェクトを内部Mapに保存します.サーブレットContextに保存されているオブジェクトを属性と呼びます.
5.GenericServiceletクラス
以前、私たちは自分で最初のサーブレットを実現しました.このサーブレットは直接サーブレットインタフェースを実現しているので、この方法にコードが含まれていなくても、インタフェースのすべての方法を実現しなければなりません.また、このサーブレットにサーブレットコンフィグを格納するメンバー変数を作成する必要があります.
GenericServiceletクラスはこの問題をよく解決した.サーブレットとサーブレットコンフィグインタフェースを実現し、次のタスクを完了しました.
  • は、サーブレットコンフィグを格納するメンバー変数を作成します.この変数にinitメソッドのサーブレットコンフィグを割り当て、getサーブレットコンフィグメソッドを呼び出すことでサーブレットコンフィグを取得できます.
  • は、サーブレットインタフェース内のすべての方法のデフォルトの実装を提供する.次はGenericServiceのinit実装です:
  • public void init(ServletConfig config) throws ServletException {
          this.config = config;
          this.init();
    }
    

    ただし、このメソッドをサブクラスで上書きすると、サブクラスのinitメソッドが呼び出され、superも呼び出す必要がある.Init(servletConfig)はサーブレットConfigを保存します.上記のトラブルを回避するために、GenericServiceletはパラメータを持たない2番目のinitメソッドを提供します.このメソッドは最初のinitメソッドによって呼び出されます.これにより、2番目のinitメソッドを上書きして初期化コードを記述することができます.
    GenericServicesメソッドは抽象メソッドであるため、GenericServicesは抽象クラスである.GenericServiceletはインスタンス化できません.サブクラスがサービスメソッドを実装しない場合、このサブクラスもインスタンス化できません.
    GenericServiceletを拡張することで、変更を計画していないメソッドを上書きする必要はありません.そのため、コードはよりきれいになります.ただし、GenericServiceletがServiceletを強化しても、HTTPの特性を体現していないため、あまり使われません.そのサブクラスHttpServletが主役であり,後述するHttpServletについて紹介する.
    ***servlet.httpパッケージの紹介