web-dev-qa-db-ja.com

Java Servletとは何ですか?

Javaサーブレットを理解するために多くの記事を読みましたが、成功しませんでした。

Javaサーブレットの簡単な紹介を(簡単な言語で)お願いします。サーブレットとは何ですか?アドバンテージとは何ですか?そして、すべて。

サーバー側のプログラミング言語(PHP、ASP)とサーブレットの違いを理解できません。

234
hardik

サーブレットは、特定のタイプのネットワーク要求(最も一般的にはHTTP要求)に応答する単なるクラスです。基本的に、サーブレットは通常、Webアプリケーションの実装に使用されますが、サーブレット(たとえばStruts)上で動作するさまざまなフレームワークもあり、「ここにHTTPリクエスト、このHTTPレスポンスに書き込む」レベルよりも高い抽象度を与えます提供します。

サーブレットは、サーブレットコンテナで実行されます。このコンテナは、ネットワーク側を処理します(たとえば、HTTPリクエストの解析、接続処理など)最も有名なオープンソースサーブレットコンテナの1つは、 Tomcat です。

283
Jon Skeet

サーブレットの中核はJavaクラスです。 HTTPリクエストを処理できます。一般的に、HTTPリクエストとレスポンスをネットワーク経由で読み取る内部の要点は、Tomcatのようなコンテナによって処理されます。これは、サーバー側の開発者として、HTTP要求と応答の処理に集中でき、ネットワークなどを処理するコードの処理に煩わされることがないようにするためです。コンテナは、 HTTP応答オブジェクトをクライアント(ブラウザなど)に送信します。

次の論理的な質問は、コンテナが何をすべきかを誰が決めるかということです。そして答えは次のとおりです。少なくともJavaの世界では、仕様によってガイドされています(Wordで制御されることに注意してください)。たとえば、サーブレットの仕様(リソース2を参照)は、サーブレットができることを規定しています。したがって、仕様の実装を作成できる場合は、コンテナを作成したばかりです(技術的にはTomcatのようなコンテナは他の仕様も実装し、カスタムクラスローダーなどのトリッキーな処理を行いますが、アイデアは得られます)。

コンテナがあるとすると、サーブレットはJavaクラスになり、そのライフサイクルはコンテナによって維持されますが、着信HTTPリクエストに対する反応はユーザーが決定します。これを行うには、init()、doGet()、doPost()などの事前定義されたメソッドでやりたいことを記述します。リソース3を見てください。

ここにあなたのための楽しい運動があります。リソース3のような単純なサーブレットを作成し、そのコンストラクターメソッドにいくつかのSystem.out.println()ステートメントを記述します(はい、サーブレットのコンストラクターを持つことができます)、init()、doGet()、doPost()メソッドを実行しますTomcatのサーブレット。コンソールログとTomcatログを参照してください。

これがお役に立てば幸いです。

リソース

  1. HTTPサーブレットの外観を確認してください here (Tomcatの例)。

  2. サーブレット 仕様

  3. シンプルなサーブレット

  4. book online/PDFの読み取りを開始します。また、書籍全体のダウンロードも提供されます。これが役立つかもしれません。サーブレットを開始したばかりの場合は、サーブレットAPIとともに資料を読むことをお勧めします。学習プロセスは遅くなりますが、基本を明確にするのに非常に役立ちます。

78
Ayusman

上記に加えて、明らかなブリードインを指摘するために...

多くの人にとってこれは非常に明白ですが、実行して終了するだけのアプリを作成するのに慣れている人にとっては、サーブレットはほとんど何もせずにぶらぶらしています...何かを送信するのを待ってから、リクエストに応答します。このため、サーブレットには有効期間があります。つまり、サーブレットは初期化されてから待機し、スローされたものに応答して破棄されます。これは、他の何か(フレームワーク)によって作成(および後で破棄)する必要があること、独自のスレッドまたはプロセスで実行すること、および要求されない限り何もしないことを意味します。また、何らかの方法で、この「エンティティ」がリクエストを「リッスン」できるメカニズムを実装する必要があります。

スレッド、プロセス、およびソケットについて読むことで、これにいくらかの光を当てることをお勧めします。これは、基本的な「hello world」アプリの機能とはまったく異なります。

「サーバー」または「サーブレット」という用語はちょっとやり過ぎだと主張できます。より合理的でシンプルな名前は「レスポンダー」かもしれません。

26
mike rodent

あなたが初心者であれば、このチュートリアルはサーブレットとは...についての基本的なアイデアを与えると思います

いくつかの貴重なポイントが特定のリンクから下にあります。

サーブレット技術は、サーバー側に存在し、動的なWebページを生成するWebアプリケーションを作成するために使用されます。

サーブレットは、コンテキストに応じてさまざまな方法で記述できます。

  • サーブレットは、Webアプリケーションの作成に使用される技術です。
  • サーブレットは、ドキュメントを含む多くのインターフェイスとクラスを提供するAPIです。
  • サーブレットは、サーブレットを作成するために実装する必要があるインターフェースです。
  • サーブレットは、サーバーの機能を拡張し、着信要求に応答するクラスです。あらゆるタイプの要求に応答できます。
  • サーブレットは、動的なWebページを作成するためにサーバーにデプロイされるWebコンポーネントです。参照: ここ
5
Sandun Madola

サーブレットは、Webアプリケーションで動的Webページを作成するために使用されるサーバー側テクノロジーです。実際、サーブレットは、いくつかの機能を備えたクラスとインターフェースのグループで構成されるAPIです。サーブレットAPIを使用する場合、サーブレットクラスとインターフェイスの定義済み機能を使用できます。

サーブレットのライフサイクル:

Webコンテナは、サーブレットインスタンスのライフサイクルを維持します。

1。読み込まれたサーブレットクラス

2。作成されたサーブレットインスタンス

。init()メソッドが呼び出されます

4。service()メソッドの呼び出し

5。destroy()メソッドの呼び出し

Client(browser)によってリクエストが発生すると、Webコンテナはサーブレットが実行されているかどうかを確認し、実行されている場合はservice()メソッドを呼び出してブラウザに応答を返します。

サーブレットが実行されていない場合、Webコンテナは次の手順に従います。

1。クラスローダーがサーブレットクラスをロードする

2。サーブレットをインスタンス化します

。サーブレットを初期化する

4。service()メソッドを呼び出す

リクエストWebコンテナにサービスを提供した後、特定の時間待機します。今回は、リクエストが来たらservice()メソッドのみを呼び出し、そうでない場合はdestroy()メソッドを呼び出します。

4
Navnath Adsul

Javaサーブレットは、顧客の要求を処理して回答し、サーブレットインターフェースを実現するサーバー側のJavaプログラムモジュールです。無視できるオーバーヘッド、維持、サポートでWebサーバーの有用性を向上させるのに役立ちます。

サーブレットは、顧客とサーバー間の仲介役として機能します。サーブレットモジュールはサーバー上で実行され続けるため、顧客からの要求を取得して対応できます。サーブレットのデマンドオブジェクトとリアクションオブジェクトは、HTTPの要求を処理し、コンテンツ情報を顧客に送信するための便利な方法を提供します。

サーブレットはJavaダイアレクトと調整されるため、たとえば、高い可動性、ステージの自律性、セキュリティ、Javaデータベースの可用性など、すべてのJavaの特長があります。

サーブレットとは何ですか?

  • サーブレットは、特定のタイプのネットワーク要求(最も一般的にはHTTP要求)に応答する単なるクラスです。
  • 基本的に、サーブレットは通常、Webアプリケーションの実装に使用されますが、サーブレット(たとえばStruts)の上で動作するさまざまなフレームワークもあります。提供します。
  • サーブレットは、ネットワーク側を処理するサーブレットコンテナで実行されます(HTTPリクエストの解析、接続処理など)。最も有名なオープンソースサーブレットコンテナの1つはTomcatです。

  • 要求/応答パラダイムでは、Webサーバーは静的なページのみをクライアントに提供できます

  • 動的ページを提供するには、サーブレットが必要です。
  • サーブレットはJavaプログラムにすぎません
  • このJavaプログラムには、メインメソッドはありません。コールバックメソッドのみがあります。
  • Webサーバーはどのようにサーブレットと通信しますか?コンテナまたはサーブレットエンジン経由。
  • サーブレットはWebコンテナ内で存続し、死にます。
  • Webコンテナは、サーブレットでメソッドを呼び出す役割を果たします。サーブレットが持っているコールバックメソッドを知っています。

リクエストの流れ

  • クライアントがWebサーバーにHTTP要求を送信します
  • Webサーバーは、そのHTTP要求をWebコンテナーに転送します。
  • サーブレットはJavaプログラムであるHTTPを理解できないため、オブジェクトのみを理解するため、Webコンテナはそのリクエストを有効なリクエストオブジェクトに変換します
  • Webコンテナは、リクエストごとにスレッドをスピンします
  • すべてのビジネスロジックは、サーブレット内のdoGet()またはdoPost()コールバックメソッド内に入ります。
  • サーブレットはJava応答オブジェクトを構築し、それをコンテナに送信します。それを再びHTTP応答に変換してクライアントに送信します

コンテナはどのサーブレットクライアントがリクエストしたかをどのように知るのですか?

  • Web.xmlというファイルがあります
  • これはWebコンテナのマスターファイルです
  • このファイルにはサーブレットに関する情報があります-

    • servlets
      • サーブレット名
      • サーブレットクラス
    • servlet-mappings-/ Loginや/ Notificationsなどのパスは、にマッピングされます。
      • サーブレット名
      • url-pattern
    • 等々
  • Webアプリのすべてのサーブレットには、このファイルへのエントリが必要です。

  • したがって、この検索は次のように行われます-url-pattern-> servlet-name-> servlet-class

サーブレットを「インストール」する方法は?*さて、サーブレットオブジェクトはライブラリjavax.servlet。*から継承されます。 TomcatとSpringを使用して、これらのオブジェクトを使用してユースケースに適合させることができます。

Ref-これを1.5xで見る https://www.youtube.com/watch?v=tkFRGdUgCsE これには素晴らしい説明があります。

3
Sankalp

サーブレットは、HTTPリクエストに応答してHTTPレスポンスを生成するJavaクラスです...... HTMLを使用してページを作成すると、静的ページになるため、動的にするにはSERVLETを使用します{簡単な言葉で}.

1
Roopam

サーブレットは、WebサイトのユーザーがサーバーにURLを要求したときに特定の機能を実行するJavaクラスです。これらの関数は、データをデータベースに保存する、ロジックを実行する、ページの読み込みに必要な情報(JSONデータなど)を返すなどのタスクを完了できます。

ほとんどのJavaプログラムは、プログラムの実行時にコードを実行するmain()メソッドを使用します。 Javaサーブレットには、doGet()メソッドと同様に動作するdoPost()およびmain()メソッドが含まれています。これらの関数は、ユーザーがそのサーブレットにマップされたURLに対してGETまたはPOSTリクエストを行うと実行されます。そのため、ユーザーはGETリクエストのページをロードしたり、POSTリクエストのデータを保存したりできます。

ユーザーがGETまたはPOST要求を送信すると、サーバーはディレクトリ内の各サーブレットクラスの先頭にある@WebServletを読み取り、呼び出すサーブレットクラスを決定します。たとえば、ChatBoxクラスがあり、上部にこれがあるとします。

@WebServlet("/chat")
public class ChatBox extends HttpServlet {

ユーザーが/chat URLを要求すると、ChatBoxクラスが実行されます。

0
kundus

この記事 で説明しているように、サーブレットはJavaサーバーを拡張し、その機能にアクセスする標準的な方法です。

各サーブレットは、セッションのような他のコンテキストデータとともに、Javaコードでモデル化された要求と応答にアクセスする小さなサーバー(名前の由来)と見なすことができます。

これらを手に入れると、サーブレットのJavaコードは、HTMLビューを生成するためのJSPページへの引き渡しなど、応答をレンダリングするために必要なものとインターフェースできます。

0
mtyson