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


277

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

Javaサーブレットの簡単な紹介を(簡単な言語で)お願いできますか?サーブレットとは何ですか?利点は何ですか?そして、そのすべて。

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


38
servlets黒いボックスがポップアップするまで、質問の下にタグを置きます。その中の情報リンクをクリックします。
BalusC 2011

1
サーブレットあなたはそれを見ることができます。これは詳細で本物だと思います。
shohan 14

回答:


336

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

サーブレットは、ネットワーク側(HTTPリクエストの解析、接続処理など)を処理するサーブレットコンテナで実行されます。最もよく知られているオープンソースサーブレットコンテナの1つがTomcatです。


16
サーブレットは、Webサーバー自体の内部でWebサーバーによって呼び出されるJavaコードのスニペットです。PHPまたはASPのような外観が必要な場合は、JSP(特別な種類のサーブレット)が必要です。
ThorbjørnRavn Andersen

3
回答ありがとうございます。それでもサーブレットを実際に使用することはできません。サーブレットを使用できる状況などの例で説明できれば、より良いでしょう。他のサーバー側のプログラミング言語ではできないサーブレットのような、サーブレットの使い方を理解できませんでした。
hardik、2011

4
@Hardik:彼らが別の方法で行うことができないことを何でもできるということではありません。サーブレットは、サーバー側のJava作業の一般的なテクノロジーにすぎません。サーブレットは言語ではなく、ASPXでもありません。どちらも、別の言語(通常はサーブレットの場合はJava)と組み合わせて使用​​するプラットフォームです。
Jon Skeet、2011

7
@Hardik:私が投稿で書いたように、サーブレットはサーブレットコンテナ内で動作するクラスです。サーブレットコンテナは、複数のサーブレットを同時にホストできます。
Jon Skeet、2011

5
@Hardik:はい、その通りです。サーブレットはHTMLを提供してフォームを表示し、送信を処理することもできます。サーブレットは、Webサービスの実装にも使用できます。彼らはできる脇HTTPから他のプロトコルのために使用されるが、HTTPは圧倒的サーブレットによって処理される最も一般的なトランスポートです。
Jon Skeet、2011

102

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

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

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

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

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

資源

  1. HTTPサーブレットがどのように見えるかを見てここに(Tomcatの例)。

  2. サーブレット仕様

  3. 単純なサーブレットの

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


12
Stack Overflowでは、リンクのみの回答は推奨されません。リンク先のリソースが将来使用できなくなるか、変更される可能性があるためです。それを改善するために、回答のリンクの関連コンテンツを要約することを検討してください。

6
@Cupcakeは建設的なフィードバックに感謝しています。私は答えに肉を加えようとしました。コミュニティを改善してくれてありがとう。
Ayusman

34

上記に加えて、そして明らかなことを指摘するために...

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

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

「サーバー」または「サーブレット」という用語は少しやり過ぎだと主張することもできます。より合理的でシンプルな名前は「レスポンダー」かもしれません。「サーバー」という用語を選択した理由は歴史的です。最初のそのような配置は「ファイルサーバー」でした。複数のユーザー/クライアントターミナルが中央マシンから特定のファイルを要求し、このファイルが「提供されます」 「本やフィッシュアンドチップスのようなものです。


1
サーブレットを標準のMVCフレームワークの「コントローラー」に類似したものとして表示することは間違っていますか?
user2490003 2018年

個人的には、その類推がどのように成り立つのかわかりません。また、私の答えが役立つと思う人(説明がわかりやすくなる人)は、あなたの提案に混乱するかもしれません。
マイクげっ歯類

この回答は役に立ちます。しかし、私は(この回答とは無関係に、それを読む前に)@ user2490003が上で提起した同じ質問も疑問に思いました。サーブレットとMVCフレームワークコントローラーの違いは何ですか?なぜuser2490003による類推が成り立たないのですか?
cellepo

MVCの配置はより複雑ですが、それほど複雑ではありません。入力を待つ必要はありません。サーバークライアントセットアップの基本的な考え方を定義するにあたり、私が強調したいのはその単純さです。ここで基本的なMVCダイアグラムを見てください:en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller。単純なクライアント/サーバー設定では、ユーザーはクライアントとのみ対話し、ビューとコントローラーという2つのオブジェクトとは対話しません。MVCを使用すると、複数のビュー、複数のコントローラー、および複数のモデルを使用することもできます。そして、入力を待つことは(必ずしも)関与していません。
マイクげっ歯類

上記に加えて、サーバーは複数のユーザーにサービスを提供できますが、MVCセットアップではそのような要件はありません。MVCセットアップは、クラシックコンピューティングの世界、つまりスタンドアロンアプリに属します。サーバーにより、インタラクティブコンピューティングの世界への第一歩を踏み出します。アナロジーが100%間違っているということではなく、90%が間違っているということではなく、何よりも実際に人や何かを実際に役立たない場合、そのアナロジーはまったく役に立たないということではありません。サーバーとクライアントの配置は非常にシンプルなので、誰も理解する必要はなく、類推は一切必要ありません
マイクげっ歯類

10

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

  • サーブレットは、特定のタイプのネットワーク要求(通常はHTTP要求)に応答するクラスです。
  • 基本的にサーブレットは通常、Webアプリケーションの実装に使用されますが、サーブレット(たとえばStruts)の上で動作して、「ここにHTTPリクエストがあります。このHTTPレスポンスに書き込む」レベルよりも高いレベルの抽象化を提供するさまざまなフレームワークもあります。提供します。
  • サーブレットは、ネットワーク側(HTTPリクエストの解析、接続処理など)を処理するサーブレットコンテナで実行されます。最もよく知られているオープンソースサーブレットコンテナーの1つはTomcatです。

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

  • 動的なページを提供するには、サーブレットが必要です。
  • サーブレットはJavaプログラムに他ならない
  • このJavaプログラムにはmainメソッドがありません。いくつかのコールバックメソッドのみがあります。
  • Webサーバーはサーブレットとどのように通信しますか?コンテナまたはサーブレットエンジン経由。
  • サーブレットは、Webコンテナ内で動作し、停止します。
  • Webコンテナーは、サーブレット内のメソッドの呼び出しを担当します。サーブレットが持っているコールバックメソッドを知っています。

依頼の流れ

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

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

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

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

  • したがって、このルックアップは次のように行われます-url-pattern-> servlet-name-> servlet-class

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

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


1
ソリューションへのリンクは歓迎しますが、それがなくても回答が役立つことを確認してください。リンクの周りにコンテキストを追加して、他のユーザーがそれが何であるか、なぜそこにあるのかを理解し、ページの最も関連性の高い部分を引用してくださいターゲットページが利用できない場合にリンクし直します。リンクに過ぎない回答は削除される場合があります。
Mogsdad 2018年

1
世界が進んだことに注意してください。2020年には、XMLの中央の文字列ベースの構成ファイルの代わりに、コードに注釈を使用します。
するThorbjörnRavnアンデルセン

5

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

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

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

1。ロードされたサーブレットクラス

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

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

4。呼び出されたservice()メソッド

5。destroy()メソッドが呼び出された

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

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

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

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

3.サーブレットを初期化します

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

リクエストを処理した後、Webコンテナは特定の時間待機します。この時間にリクエストが来た場合は、service()メソッドのみを呼び出し、それ以外の場合はdestroy()メソッドを呼び出します。


5

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

いくつかの重要なポイントは、与えられたリンクから以下です。

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

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

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

1
これは基本からのコンセプトを説明する本当に良いチュートリアルです
Nikhil Sahu

3

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

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

サーブレットはJavaダイアレクトと連携しているため、移動性が高い、ステージの自律性、セキュリティ、Javaデータベースの可用性など、Javaのすべてのハイライトが追加されています。


2

サーブレットは、HTTPリクエストに応答してHTTPレスポンスを生成するJavaクラスです。HTMLを使用してページを作成すると、静的ページになり、動的にするためにSERVLET {単純な言葉でサーブレットを利用するには、JSPがコードとHTMLタグの両方を使用します。


2

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

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

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

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

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


0

この記事では説明し、サーブレットはJavaサーバーを拡張し、その機能にアクセスするための標準化された方法です。

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

これらを利用することで、サーブレットのJavaコードは、HTMLビューを生成するためのJSPページへのハンドオフを含め、応答をレンダリングするために必要なものとやり取りできます。


-1

サーブレットは基本的に、HTTPリクエストとHTTPレスポンスの中間的な役割を果たすJavaクラスであると思います。サーブレットは、Webページを動的にするためにも使用されます。たとえば、サーバー上の別のWebページにリダイレクトする場合は、サーブレットを使用する必要があるとします。もう1つの重要なことは、サーブレットがlocalhostおよびWebブラウザで実行できることです。


-2

通常のサーブレットに対する答えが得られました。ただし、サーブレット3.0について何かお話ししたいと思います。

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

サーブレットは、コンテナによって管理され、動的コンテンツを生成するWebコンポーネントです。サーブレットは、Javaテクノロジ対応のWebサーバーまたはサーブレットコンテナに動的にロードして実行できるバイトコードにコンパイルされたJavaクラスです。

サーブレット3.0は、既存のサーブレット2.5仕様のアップデートです。サーブレット3.0には、Java Platform、Enterprise Edition 6のAPIが必要でした。サーブレット3.0は、拡張性とWebフレームワークのプラグイン性に重点を置いています。サーブレット3.0は、開発の容易さ(EoD)、プラグ可能性、非同期サポート、セキュリティ拡張などの拡張機能を提供します

開発のしやすさ

サーブレット、フィルター、リスナー、Init Paramsを宣言でき、注釈を使用してほとんどすべてを構成できます。

プラグイン可能性

web-fragment.xmlを使用してサブプロジェクトまたはモジュールを作成できます。つまり、プラグ可能な機能要件を個別に実装することができます。

非同期サポート

サーブレット3.0は、非同期処理の機能を提供します。たとえば、リソースが利用可能になるのを待つ、非同期に応答を生成する、などです。

セキュリティの強化

認証、ログイン、およびログアウトのサーブレットセキュリティメソッドのサポート

Javaサーブレットチュートリアルから見つけました

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.