JavaRush /Java Blog /Random-JA /Java の Tomcat

Java の Tomcat

Random-JA グループに公開済み
すべての開発者は、ある時点で十分なスキルを獲得し、知識を実践するために独自のプロジェクトを作成することを検討します。Web アプリケーションの実装はデスクトップ アプリケーションなどの制限に制約されないため、Web プロジェクトに取り組むのが最も簡単です。クライアントに必要なのはブラウザだけであり、ディストリビューションをダウンロードせずにアプリケーションと対話できます。彼らが言うように、登録とSMSはありません(ただし、これはアプリケーション自体によって異なります)。 Java の Tomcat - 1したがって、Java で優れた Web アプリケーションを実装するには、Tomcat と呼ばれるツールなしではできません。 コンテンツ:

Tomcat は Javarush を認識しています

Tomcat は、JavaRush コースの Java Collections クエストのレベル 9 で学習されます。Bilaabo は 2 つの講義で、 Tomcat のダウンロードと設定方法、および最初の Web アプリケーションの構築方法を説明します。

トムキャット - それは何ですか?

Tomcat は、Web サーバーとしても機能するオープン ソースのサーブレット コンテナです。一見すると、Tomcat というとかなり重いテーマのように思えますが、実はそうではありません。ほとんどの Java アプリケーションはコマンド ラインを使用して起動され、いくつかのアクションを実行します。このようなアプリケーションは 1 つの事前定義関数を実装し、その後は実行されなくなります。mainこのようなプログラムには通常、起動するためのメソッドが用意されています。Web アプリケーションは、クライアントと対話するように設計されています。クライアントからのリクエストがあれば処理され、ユーザーにレスポンスが送信されます。そうでない場合、アプリケーションはアイドル状態です。セッションをサポートしたり、HTTP リクエストを受け入れたりする必要がある場合、そのようなロジックを標準アプリケーションに実装するにはどうすればよいでしょうか? サイクルwhile-true?いいえ、ここでは信頼できるソリューションが必要です。それが Tomcat の目的です。実際、これはクライアントとの対話のためのポートのオープン、セッションのセットアップ、リクエストの数、ヘッダーの長さ、およびその他の多くの操作を処理する Java アプリケーションです。

Tomcat コンポーネント

Tomcat には、知っておく価値のある特定の機能を実行するコンポーネントがあります。詳しく見てみましょう。

カタリナ

このコンポーネントのおかげで、開発者はプログラムをコンテナにデプロイする機会が得られます。Catalina は、Java Web プログラミングの中核となる Web テクノロジーであるサーブレット API 仕様を実装しています。実際、Catalina はTomcat 内のサーブレット コンテナです(この概念については後で詳しく説明します)。

碧玉

このコンポーネントのおかげで、プログラマは JSP テクノロジを使用します。これらは HTML ファイルに似ていますが、ページがユーザーに送信されるときに実行できる Java コードが埋め込まれているだけです。これにより、任意のデータをページに動的に埋め込むことができます。Jasper は Java コードを HTML に変換し、変更を追跡して自動的に更新します。

コヨーテ

これは、特定のポートでクライアントからの HTTP リクエストをリッスンし、そのデータをアプリケーションで処理するために提供し、ユーザーに応答を返す重要なコンポーネントです。つまり、Coyote は HTTP サーバーの機能を実装します。これらのコンポーネントは、次の図で構造的に説明できます。 Java の Tomcat - 2ここでは、コンポーネントの相互作用の概略図が「指上」に示されています。実際、Tomcat の動作方法はさらに複雑ですが、基本を理解するにはこれで十分です。

Tomcatのインストール

Java で Tomcat を使用するには、システムに Tomcat をインストールする必要があります。Tomcat のインストール方法については、この記事を参照してください。他のアプリケーション サーバーについても説明しています。したがって、動作する Tomcat が IDEA に組み込まれているので、最初のサーブレットの準備を試みることができます。

Webアプリケーションの作成方法

Web アプリケーションを作成するには、特定のフォルダー構造に従う必要があります。IntelliJ IDEAにはプロジェクト作成メニューにWebアプリケーション生成機能があります。この方法でプロジェクトを作成すると、単純な構造がわかります。 Java の Tomcat - 3いつものように src にはソースがあり、Web フォルダーには web.xml とindex.jsp が生成されます。web.xml は、リクエスト ハンドラーやその他の情報を探す場所を Tomcat に指示するものです。Index.jsp は Web アプリケーションのメイン ページであり、ユーザーが最初にアクセスする必要があります (これがデフォルトの構成です)。最初の実行では、index.jsp ファイルを編集するだけです。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
 <head>
   <title>$Title$</title>
 </head>
 <body>
   <h1>Hello world!</h1>
 </body>
</html>
Tomcat が IDEA に直接インストールされている場合は、アプリケーション サーバーを起動できます。 Java の Tomcat - 4クライアントは、「/」、つまりメイン ページに移動すると、ブラウザーでindex.jsp ファイルの内容を受け取ります。次に、現在のサーバー時刻が表示されるページへのリンクを追加しましょう。最初のサーブレットを作成するには、Tomcat に付属する servlet-api.jar ライブラリ (lib フォルダーにあります) を使用する必要があります。ページ上に現在のサーバー時間を表示するサーブレットを作成してみましょう。これを行うには、クラスを作成する必要がありますTimeWorker。これを src/ru/javarush/tomcat フォルダーに配置しましょう。
package ru.javarush.tomcat;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;

public class TimeWorker extends HttpServlet {
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
     Date date = new Date();
     req.setAttribute("date", date.toString());
     req.getRequestDispatcher("time.jsp").forward(req, resp);
  }
}
TimeWorkerクラスから継承しHttpServlet、 をオーバーライドしますdoGetrequestこのメソッドでは、と の2 つのパラメータを受け取りますresponse。例として、名前があり、現在の日付の文字列表現を含むrequest属性が保存されます。data次に、それが呼び出され、パラメータがrequestDispatcher渡されます。ハンドラーが作成されました。次に、具体的に彼にリクエストを送信する必要があります。あらゆる遷移がtime.jsp ページにつながるようにします。web.xml を開き、タグの間に次の設定を挿入します。 requestresponse/time<web-app>
<servlet>
   <servlet-name>timeWorker</servlet-name>
   <servlet-class>ru.javarush.tomcat.TimeWorker</servlet-class>
   </servlet>

<servlet-mapping>
   <servlet-name>timeWorker</servlet-name>
   <url-pattern>/time</url-pattern>
</servlet-mapping>

<welcome-file-list>
   <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
最初のタグ --servletはサーブレットの名前を定義し、リクエストを処理するサーブレット クラスへのパスを指定します。2 番目のタグ - servlet-mapping- は、次のリクエストが行われたときにその名前のサーブレットtimeWorkerが呼び出されることを示します。 URL/時間。3 番目のタグ - welcome-file-listは、 に切り替えるときに呼び出されるファイルを示します url /。デフォルトのファイルを変更する必要がある場合は、これを設定する必要があります。例としてここに記載されています。ここで、 に移動すると、クラス内のメソッド /timeが呼び出され、存在しないページ time.jsp... が返されます。これをindex.jspの隣に作成しましょう。 doGet TimeWorker
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
   <title>Hello</title>
</head>
<body>
   <h1>Current server time: <%=request.getAttribute("date")%></h1>
</body>
</html>
始まりは古典的ですが、タグには とで囲まれた h1オブジェクトへのアピールが含まれています。これらはテンプレートタグです。これらのタグで囲まれたコードは、クライアントに送信される前に呼び出されます。オブジェクトは、どの JSP ファイルでもそのようなタグで使用できます。この例では、サーブレットによって送信される現在のサーバー時刻がそこで置き換えられます。便宜上、index.jsp ファイルへのリンクを作成します。 request <%= %> request response TimeWorker /time
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
 <head>
   <title>$Title$</title>
 </head>
 <body>
   <h1>Hello world!</h1>
   <a href="/time">Узнать текущее время serverа</a>
 </body>
</html>
例を実行してみましょう: Java の Tomcat - 5リンクに従ってください: Java の Tomcat - 6素晴らしい、すべてが機能します。この例では、メイン ページから補助ページへの遷移を実装しました。補助ページにはパラメータが渡されてユーザーに表示されます。サーブレットの実行に問題がある場合は、この問題を解決するためのヒントが記載されている この投稿を読むことをお勧めします。サーブレットのより完全な入門については、著者がサーブレットと JSP を使用した単純なアプリケーションの作成について詳しく説明している 記事 ( パート 1パート 2 ) を読むことをお勧めします。

実行中のサーバーにアプリケーションを組み込む方法

IDEA に組み込まれた Tomcat は便利な機能ですが、Web アプリケーションは別のサーバーや別のコンテナに移動できます。すでに実行中のサーバーにアプリケーションを埋め込む必要がある場合のオプションを検討してみましょう。 まず、サーブレット コンテナの目的と機能をさらに理解する必要があります。上の例で示したプログラムは Web アプリケーションです。クラスは TimeWorkerサーブレットです。コンポーネントはリクエスト処理を排他的に実行します。これらのコンポーネントは、特別なサーブレット コンテナに構築する必要があります。 サーブレット コンテナの目的は、サーブレットをサポートし、そのライフサイクルを保証することです。Tomcat の動作の最も簡単な例は、特定のフォルダーをスキャンして、そのフォルダー内に新しいサーブレットが出現したかどうかを確認することです。「はい」の場合は、初期化して、クライアントからのリクエストを受信できるように準備します。サーブレットが更新されている場合は、再初期化してコンポーネントを更新します。サーブレットを削除する場合は、リクエストの処理を停止し、Tomcat からサーブレットを削除します。

サーブレットコンテナの機能

  1. サーブレットとクライアント間のデータ交換。
  2. クライアントセッションの構成。
  3. サーブレットが機能するためのソフトウェア環境の作成。
  4. Идентификация и авторизация клиентов;
  5. В большинстве случаев — управление метаданными (заголовки, методы и прочее).
Во-вторых, необходимо разобраться, How установить свой сервлет.

Установка сервлета

Tomcat принимает для обработки веб-applications на Java, которые имеют расширение .war. Это How jar, только web. Файлы такого типа объединяют в себе JSP-файлы, сервлеты, class-файлы, статические ресурсы и прочее. При установке такого file в Tomcat происходит его распаковка, а затем запуск, поэтому существует строгое требование к структуре файлов в проекте. Если проект был создан в IDEA, вся структура создана автоматически. Файл war можно создать стандартными средствами IDEA. Для этого необходимо зайти в ProjectStructure -> Artifacts -> Нажать “ +” -> WebApplication: Archive. В открывшемся поле задать Name для итогового war-file, например deployed_war. Ниже необходимо нажать на кнопку Create Manifest… Далее необходимо указать way to папке web проекта. В ней будет создана папка META-INF, в которую будет помещен файл MANIFEST.MF. Далее следует нажать Apply и Ok. Whatбы собрать проект в war-файл, следует во вкладке Build выбрать опцию Build Artifact: Java の Tomcat - 7В появившемся поле нужно нажать на deployed_war. Затем начнется сборка проекта и Intellij IDEA создаст папку out, в которой появится папка artifacts с именем нашего артефакта. В этой папке будет лежать файл deployed_war.war: Java の Tomcat - 8Теперь можно деплоить этот файл в Tomcat. Деплой applications проще всего выполнить из веб-интерфейса Tomcat. Просто нажмите кнопку выбора file на вкладке Deploy, перейдите к местоположению file WAR и выберите его, затем нажмите кнопку развертывания. В обоих случаях, если все пойдет хорошо, консоль Tomcat сообщит нам, что развертывание прошло успешно примерно таким выводом в консоль: INFO: Deployment of web application archive \path\to\deployed_war has finished in 4,833 ms

Польза Tomcat для разработки

Для разработчиков контейнеры сервлетов имеют огромную роль, так How решают целый спектр проблем. Для программирования на Java Tomcat обеспечивает несколько серьезных преимуществ:
  1. Самое главное, Tomcat может выполнять роль полноценного web-serverа. Благодаря этому развертывание приложений происходит гораздо быстрее, чем было раньше.Также Tomcat может выступать в роли классического контейнера сервлетов, который можно встроить в более крупный веб-server.

  2. Tomcat способствует обмену данными между клиентом и сервлетом, обеспечивает программный контекст для веб-приложений, берет на себя функции идентификации и авторизации клиентов, создание сессий для каждого из них.

  3. JSP ページの非常に便利な管理を提供します。実際、Web サーバーは HTML のみを提供できます。Tomcat コンポーネントである Jasper は、JSP ページ テンプレート タグに含まれるコードを、クライアントが受信する有効な HTML ファイルにコンパイルします。すべてのテンプレート ロジックは Tomcat 内に存在するため、複雑なコンストラクターも従来の HTML フォームに追加できます。

そして最後に、 main初心者の開発者は、「 -methodなしで Java アプリケーションを実行することは可能ですか」という質問をされることがよくあります。上記の例を見ると、一見、それが可能であることがわかります。私たちのサーブレットは、 を使用せずに実行されました main。しかし、そうではありません。Tomcat には、 mainサーバーの起動時に呼び出される独自のメソッドがあります。面接でこの質問をすると捕まるかもしれません。

追加のリンク:

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION