HelloWorldサーブレット

環境整備

Windows環境

  1. インテリジ アイデア アルティメット 2018.1
  2. jdk1.8

始める

step1 初期プロジェクト構造

ここに画像の説明を挿入
プロジェクト名「HelloWorldServlet」を入力します

プロジェクト ファイル構造を表示します。デフォルトで web.xml
ここに画像の説明を挿入
web.xml コンテンツがあります。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
</web-app>

step2 サーブレットを書く

「src」を右クリック→「新規」→「サーブレット」を選択し、新しいサーブレットソースファイルを作成します。
ここに画像の説明を挿入
ここに画像の説明を挿入

import java.io.IOException;

public class HelloWorldServlet extends javax.servlet.http.HttpServlet {
    protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {

    }

    protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
    System.out.print("doGet");//自己添加代码段
    }
}

step3 war パッケージをコンパイルして生成し、Tomcat にデプロイして Tomcat を実行します

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

「デプロイメント」タブに切り替え、アーティファクトを追加して
ここに画像の説明を挿入
「OK」をクリックします。この時点で、ApplicationServer ビュー・ウィンドウで「開始」をクリックして
ここに画像の説明を挿入
エラーを報告します。
ここに画像の説明を挿入

サーブレットの依存関係が欠落しています
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

その後、tomcat jar パッケージがデフォルトで提供モードで導入されていることがわかりました。この時点で、プロジェクト ウィンドウには外部依存関係が導入されていることがわかります。
ここに画像の説明を挿入
ローカルにインストールされた lib フォルダー内の依存ライブラリの
ここに画像の説明を挿入
servet ソース ファイルtomcat プログラム ディレクトリは、エラーを示す赤色でマークされていないため、サーブレットをモジュールに追加します。依存関係は通常、ステップ 2 に移動する必要があります。これは、間違った使用法のデモンストレーションにすぎません。

引き続き ApplicationServer ビュー ウィンドウに戻り、「開始」をクリックすると、正常に開始できます。

ここに画像の説明を挿入
ただし、リクエストをカスタム サーブレットにルーティングする必要がある場合は、web.xml を変更し、サーブレット マッピングを追加して、「
ここに画像の説明を挿入
実行」->「「HelloWorldServletTomcat」を実行」を再実行し、http://localhost:8080 と入力する必要があります。 / ブラウザーの HelloWorldServlet で Enter を押すと、IDE の Tomcat サーバーの出力ウィンドウの下に「doGet」が表示され、カスタム サーブレット プログラムが有効になり、タスクが完了します。
ここに画像の説明を挿入

要約する

開発プロセス全体
コンパイル、
パッケージ化
、デプロイ
、公開

フロントエンド アプリケーション開発と比較すると、サーブレット プログラムは Web コンテナに依存し、Tomcat サーバーは Web コンテナとして Web アプリケーション サービス プログラムの形式を必要とするため、追加のデプロイメント プロセスが必要になります。

開発したサーブレット プログラムが実行できることを前提として、Web コンテナ (Tomcat サーバーなど) または解凍されたフォルダーにデプロイできる war パッケージを生成します。war パッケージの内容には (サーブレット関連のクラスが含まれます) 、web.xml、および一部のリソース ファイルなど)

キーワード:
アーティファクトは、コンパイルとパッケージ化のプロセスをカバーし、出力タイプのアーティファクトを指定する、構築プロセス全体で重要な役割を果たします
(これは Maven の概念ですか、それともアイデアの概念ですか??)
アーティファクトには主に 2 つのタイプがあります。 : アーカイブ型 (war パッケージ) と展開型 (フォルダー)
アーティファクトの出力ディレクトリと出力レイアウトの違いは何ですか?

質問: しかし、出力された war パッケージがローカルに見つかりません。次のリリース用に war パッケージを個別に生成するにはどうすればよいですか? ? ?
答え:

  1. 新しいアーカイブタイプのアーティファクトを作成します。
    「ファイル」->「プロジェクト構造」->「Artifcats」->「+」->「Web Application:Archive」->「From ...」を選択すると、war パッケージがプロジェクトに出力されます
    。デフォルトのルート ディレクトリは「out\artifacts\XXX_war」です (以下の図 1 を参照)。
  2. 図 2 に示すように、「実行」->「構成の編集...」で Tomcat を選択してタスクを実行し、新しいアーカイブ タイプのアーティファクトをデプロイして、「OK」をクリックします。
  3. Tomcat タスクを実行し、「out\artifacts\XXX_war」の下にある war パッケージを確認します。

図1
ここに画像の説明を挿入
図2

ここに画像の説明を挿入

延長された

上記は、war パッケージの作成、Tomcat への war パッケージのデプロイ、Tomcat の実行という統合タスクを実行する Tomcat 実行タスクに基づいていますが、プロセスをさらに細分化することはできますか?

1. 個別の戦争パッケージ

方法1. コマンドライン(原理を理解する)

以前に展開型アーティファクトを作成し、正常にコンパイルしたことがある場合は、すべてのクラス、XML、リソースをパッケージ化するjar -cvf xxx_war.war *など、プロジェクト ルート ディレクトリ \out\artifacts\xxx_war_exploded で直接実行します。jar -cvf HelloWorldServlet_war.war *

まだ実行していない場合は、javac を実行してすべての Java ソース ファイルをクラスにコンパイルしてから、jar パッケージ化を実行する必要があります。

方法 2. アイデアを使用する (推奨)

直接「Build」→「Build Artifacts...」でアーカイブタイプのアーティファクトを選択し、ビルドします。
ここに画像の説明を挿入

ここに画像の説明を挿入
プロジェクトのルート ディレクトリ \out\artifacts\xxx_war を表示して、出力された war パッケージを確認します。

方法 3. Maven を使用する (推奨)

方法 4. gradle を使用する (続き)

2. war パッケージを Tomcat のみにデプロイします

生成された war パッケージを Tomcat インストール ルート ディレクトリ\webapps ディレクトリに直接配置し、tomcat インストール ルート ディレクトリ\bin\startup.bat ファイルを直接実行します。tomcat はwebapps の下にあるすべての war パッケージを Tomcat に自動的にデプロイして実行します。

Tomcat インストール ルート ディレクトリ\conf\server.xml ファイルの一部を確認できます。このファイルには、Webapps ディレクトリに war パッケージを自動的に解凍してデプロイするために Tomcat がサポートするロジックが記述されています。

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

      </Host>

以下の図は、Tomcat の起動後に成功したデプロイメントのログ出力です。
ここに画像の説明を挿入
ブラウザを開き、「localhost:8080/HelloWorldServlet」と入力して Enter キーを押し、Tomcat コンソールに doGet が出力されていることを確認し、実験が成功したことを確認します。

おすすめ

転載: blog.csdn.net/weixin_41548050/article/details/116937649