ホームページ  >  記事  >  Java  >  Javaのサーブレットの基礎知識を詳しく解説

Javaのサーブレットの基礎知識を詳しく解説

黄舟
黄舟オリジナル
2017-07-26 15:11:202446ブラウズ

この記事では主にサーブレットの基本情報を詳しく紹介します。興味のある方は参考にしてください。

サーブレットは、動的 Web リソースを開発するために特別に使用されるテクノロジーであり、サーブレット インターフェイスを提供します。したがって、狭義のサーブレットはこのインターフェイスを指し、広義のサーブレットはこのサーブレット インターフェイスのクラスを指します。 。 サーブレットを使用して動的 Web リソースを開発することは、実際にはブラウザにデータを出力する Java プログラムを開発することになります。

サーブレットは、実際にはサーバー上で実行される Java プログラムです。したがって、初心者の方は、J2SE の API ドキュメントを読むことをお勧めします。サーブレット。サーブレットのドキュメントの紹介を見てみましょう:

このサーブレット インターフェイスの紹介から、サーブレット インターフェイスを実装したい場合は、そのすべてのメソッドを実装する必要があることがわかります。 Web サーバー。クライアントからのリクエストを受信して​​応答するために使用します。もちろん、前に述べたように、サーブレット インターフェイスを実装するクラスを作成する場合は、サーブレットのすべてのメソッドをオーバーライドする必要がありますが、GenericServlet クラスや HttpServlet クラスなどの実装クラスを継承できます。オーバーライドしたいものだけをオーバーライドする必要があるということです。メソッドを使用するだけです。

サーブレットのメソッドには、ライフサイクル メソッドと非ライフサイクル メソッドが含まれます。サーブレットのライフサイクル メソッドには、init(ServletConfig config)、destroy()、service(ServletRequest req、ServletResponse res)、つまりサーブレットの初期化、リクエストに対する応答サービス、およびサーブレットの破棄が含まれます。

サーブレットのライフサイクル メソッドに加えて、サーブレットに関する情報を取得できる getServletConfig() メソッドや getServletInfo() メソッドなどの非ライフサイクル メソッドもあります。

サーブレットのライフサイクルとは、サーブレットインスタンスの作成からクライアントリクエストへの応答、そして最終的に破棄までのプロセスを指します。具体的なプロセスは次のとおりです:

1. サーバーはサーブレットのインスタンスを作成します、つまり init() メソッドを呼び出します

2. クライアントのリクエスト (オブジェクト) がサーバーに到着します

3. サーバーがリクエストを送信します。サーブレットへ;

4. サーブレットはリクエストに対するレスポンス(オブジェクト)を生成します

5. サーバーはリクエストオブジェクトとレスポンスオブジェクトをパラメータとして渡します。 ) メソッドはリクエスト オブジェクトの情報を取得し、それを処理します リクエストを行い、リソースにアクセスし、必要な情報を取得します

7. Service() メソッドは、レスポンス オブジェクトのメソッドを使用してレスポンスをサーバーに送り返し、最終的にクライアントに到達します。 。 Service メソッドは、doGet() メソッドや doPost() メソッドなどの他のメソッドを起動してリクエストを処理することもあります

8. さらに多くのクライアント リクエストに対して、サーバーは新しいリクエスト オブジェクトと応答オブジェクトを作成し、引き続きこのサービス メソッドを起動します。サーブレット。これら 2 つのオブジェクトはパラメータとして渡されるため、init() メソッドを再度呼び出す必要はありません。通常、サーブレットは 1 回だけ初期化されます。サーバーがサーブレットを必要としなくなった場合 (通常、サーバーはシャットダウンされます)、サーバーはサーブレットの destroy() メソッドを呼び出してサーブレットを破棄します。

上記のことから、サーブレットのライフサイクルにおける 3 つのメソッドはサーバーによって呼び出されることはわかりますが、これらはサーブレットの存在開始から開始に至るまでのプロセスのある時点で必ず実行されると言えます。 (イベントがトリガーされた場合) メソッドはライフサイクル メソッドと呼ばれます。

したがって、サーブレットで最も重要なことは、サーバーからクライアントにリソースを転送したり、クライアントにデータを送信したりする場合、service()メソッドで行われます。

service(ServletTequest req, ServletResponse res) メソッドから判断すると、service() メソッドがサーバーによって呼び出されて実行されるだけでなく、必要に応じて ServletTequest リクエスト オブジェクトと ServletResponse レスポンス オブジェクトもサーバーによって提供されます。単純なデータを client に書き込むには、service() メソッドで ServletResponse 応答オブジェクトを操作できます:

手始めに、Servlet を記述するために開発ツール IDE を使用する必要はありませんが、最初に手動で記述します。これは、サーブレットの基礎となる原則を理解するのに役立ちます。 Tomcat の [webapps] ディレクトリに Web アプリケーションを作成します。Web アプリケーションが配置されているディレクトリは [myservlet] です。まず、[myservlet] ディレクトリに [WEB-INF] を作成し、次に [WEB] に [classes] を作成します。 -INF] ディレクトリ、[lib ディレクトリ]、および web.xml ファイルを [classes] ディレクトリに作成し、Java プログラム FirstServlet.java

作成するサーブレットはサーバーによって呼び出されるため、作成するサーブレット実装クラスは public である必要があります まず、サーブレットのすべてのメソッドを実装する必要はないため、サービスをコピーするだけでよいことを言っておきます。クライアントにデータを転送するには、() メソッドだけで十分なので、サーブレット実装クラスを継承し、対応するオブジェクト ServletResponse の出力ストリーム ServletOutputStream を取得して、同時にクライアントにデータを出力します。出力はバイト ストリームであるため、文字をバイト配列に変換し、カスタム パッケージ名とインポートする Java パッケージを手動で記述する必要があります:


package fjdingsd.web;
import java.io.*;
import javax.servlet.*;
public class FirstServlet extends GenericServlet{
  public void service(ServletRequest req, ServletResponse res) throws ServletException, java.io.IOException
  {
   OutputStream out = res.getOutputStream();
   out.write("Hello Servlet".getBytes());
  }
}

この Java プログラムをコンパイルするには cmd を使用しますが、 「javac」はデフォルトでインポートされる J2SE パッケージのみであり、J2EE パッケージは存在しないことに注意してください。では、J2EE サーブレット パッケージを見つけるにはどこに行けばよいのでしょうか?実際、Tomcat はサーブレットをサポートしているため、Tomcat の [lib] ディレクトリにはサーブレット JAR パッケージが含まれています:

したがって、最初に次の手順を実行して cmd で環境変数を設定する必要があります。 api.jar

これで、Java プログラムをコンパイルできます: javac -d 。プログラム名.java

(「-d」は、次のコマンド「.class ファイルが保存されるディレクトリを表します。」 " は現在のディレクトリを表します)

コンパイルが成功すると、Web アプリケーションが配置されているディレクトリにバイトコード ファイルとパッケージ名が既に存在していることがわかります:

もちろん、今はサーブレット プログラムがあります。しかし、このサーブレット プログラムはまだ外部アクセス パスを設定していないため、ブラウザはまだアクセスできません。それでは、作成したばかりのサーブレット バイトコード ファイルをブラウザがアクセスできるパスに設定するにはどうすればよいでしょうか?

答えはこの Web アプリケーションの web.xml ファイルにあります。ここでは「Tomcat の詳細な学習方法 (3)」で述べたように、Tomcat の web.xml を「テンプレート」にコピーします。 700b5f17c4d842e4bd410f680f40946b には一貫性があり、46309ed845064fdb06e746051efff9e0 には完全なパッケージ名とクラス名が必要です。 ;servlet-mapping> が設定できるものです。外部アクセス パスが利用可能になり、パスをカスタマイズできます。このパスの設定を記述する必要はありません。そうでない場合は、デフォルト値になります。その場合、ブラウザでの入力アドレスには Web アプリケーション名のみが必要ですが、デフォルト値に設定されている場合でも、その内容は保持されます。 66e1775cbd9d5002635ae3285442ba88 スラッシュ「/」も必要です。

この時点で、Tomcat サーバーを開くと、ブラウザーで作成したサーブレット プログラムにアクセスできます。入力形式は、ホスト名: ポート (80 は不要)/Web アプリケーション名/外部アクセス パスです。

サーブレットへのアクセスであれば、外部アクセスパスを記述するだけですが、以下のようにサーブレット名を記述するとアクセスできなくなります。 、複数の場合 xml ファイル内の各サーブレットの外部アクセス パスが同じに設定されている場合、以下に示すようにアクセスできなくなります:

したがって、カスタム .さまざまなサーブレットの web.xml。

以上がJavaのサーブレットの基礎知識を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。