IDEA2021 tomcat10 サーブレットの新しいバージョンの落とし穴

IDEA2021 tomcat10 サーブレットの新しいバージョンの落とし穴

私が学習していたときに使用していたバージョンは比較的新しいものであり、インターネット上のチュートリアルはすべて古いバージョンであったため、多くの問題が発生しました。以下は、他の初心者が落とし穴を回避するのに役立つ要約です。
さっそくですが:

1:
ファイル->新規->プロジェクトで通常の Java プロジェクトを作成します。

プロジェクト名は任意に付けることができます

2:
プロジェクト名を右クリック -> フレームワーク サポートの追加:

Webアプリケーションをチェックして[OK]をクリックします

3:
プロジェクト名 -> web -> WEB-INF を展開し、WEB-INF の下に classes と lib という 2 つの新しいフォルダーを作成します。

4:
Ctrl + Alt + Shift + S を押してプロジェクト構造を表示します。
[モジュール] -> [パス] を選択し、ラジオ ボタンで [モジュール xxxxx を使用する] を選択して、作成したクラスへの 2 つのパスを変更します。

次に、依存関係を選択し、下の + 記号をクリックして、jars または dirxxxxxxxx を選択し、作成した lib ディレクトリを選択します。使用するディレクトリを選択する場合は、jar direxxxxxxx を選択してチェックし、適用をクリックして、OK をクリックします。

5:
tomcat/lib ディレクトリにある servlet-api.jar を、作成した lib ディレクトリにコピーします。

6:
右上隅のハンマーの横にある [構成の追加] をクリックし、プラス記号をクリックして、tomcat サーバー -> ローカルを選択します。ここで tomEE を選択しないように注意してください。 2 つのアイコンは同じですが、同じものではありません。その他の構成は変更されません。aply で [fix] をクリックします。アプリケーション コンテキストには好きな名前を付けることができます。/ で十分であることが推奨されます。それでは申請してください。OK。

7:
index.jsp のタイトルと末尾を変更して実行します。以下のようになっていれば基本的にOKです。

8:
src に新しい Java クラスを作成し、サーブレットを記述してみます。
これも他のバージョンとは異なります。古いバージョンはすべて javax.servlet.xxxxx をインポートしますが、ここでは jakarta.servlet.xxxxx をインポートします。servlet-api.jar を展開すると、インポートする必要がある特定のパッケージを確認できます。

ここに画像の説明を挿入

jakarta.servlet.ServletException をインポートします。
jakarta.servlet.annotation.WebServlet をインポートします。
jakarta.servlet.http.HttpServlet をインポートします。
jakarta.servlet.http.HttpServletRequest をインポートします。
jakarta.servlet.http.HttpServletResponse をインポートします。
java.io.IOException をインポートします。
java.io.PrintWriter をインポートします。

@WebServlet(名前 = "ログイン")
パブリッククラスLoginはHttpServletを拡張します{
    @オーバーライド
    保護された void doPost(HttpServletRequest リクエスト、HttpServletResponse レスポンス)
            ServletException、IOException をスローします {
        レスポンス.setContentType("text/html");
        PrintWriter 出力 = response.getWriter();
        out.println("<!DOCTYPE HTML>");
        out.println("<HTML>");
        out.println(" <HEAD><TITLE>ログイン</TITLE></HEAD>");
        out.println(" <BODY>");
        out.print(" これはログインページです");
        out.print(this.getClass());
        out.println(" </BODY>");
        出力をprintln("</HTML>");
        出力をフラッシュします。
        out.close();
    }

    @オーバーライド
    保護された void doGet(HttpServletRequest リクエスト、HttpServletResponse レスポンス)
            ServletException、IOException をスローします {
        レスポンス.setContentType("text/html");
        PrintWriter 出力 = response.getWriter();
        out.println("<!DOCTYPE HTML>");
        out.println("<HTML>");
        out.println(" <HEAD><TITLE>ログイン</TITLE></HEAD>");
        out.println(" <BODY>");
        out.print(" これはログインページです");
        out.print(this.getClass());
        out.println(" </BODY>");
        出力をprintln("</HTML>");
        出力をフラッシュします。
        out.close();
    }
}

次に、web.xml ファイルを次のように変更します。

サーブレット

-name は、大文字と小文字が一致していれば任意の名前にすることができます。servlet-class はクラス名と同じである必要があります。url-pattern は、Java クラスの @WebServlet(name="xxxx") の xxxx と同じである必要があります。ここで、xxxx はパスです。
この時点でコンパイルして実行し、アドレスバーに書き込んだ URL を入力すると、動的リソースにアクセスできます。

これで、IDEA2021 tomcat10 サーブレットの新しいバージョンの落とし穴に関するこの記事は終わりです。idea2021 tomcat サーブレットの関連コンテンツの詳細については、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • IntelliJ IDEA2021.1 設定完了 (超詳細チュートリアル)
  • 最新のidea2021最新のアクティベーション超詳細なチュートリアル
  • 最新のidea2021登録コードは永久に有効化されます(2100まで有効化)
  • 最新のIDEA2020.2.1、2.2、3以降のクラッキング、アクティベーション失敗、再アクティベーションの問題について
  • IntelliJ IDEA 2020.2.3 永久クラッキングおよびアクティベーション チュートリアル (テスト済み、効果的)
  • IDEA2021.2 のインストール後の設定と再インストールの問題の詳細な説明

<<:  CSS を使用して要素のスクロールバーを非表示にするサンプルコード

>>:  JavaScript と CSS を最適化してウェブサイトのパフォーマンスを向上させる

推薦する

ES6スプレッド演算子の使用例

目次スプレッド演算子とレスト演算子とは何ですか?配列スプレッド演算子残り演算子(コレクション関数)ス...

goaccess を使用して nginx ログを分析する詳細な方法

最近、goaccess を使って nginx ログを分析したいのですが、nginx ログの設定形式が...

MySQL の連結で複数の一重引用符と三重引用符を使用する際の問題

文字列を動的に連結する場合、文字連結を使用することが多いです。次のような連結の引用符の意味がわかりま...

Nginx のパフォーマンスを向上させるための提案

Web アプリケーションが 1 台のマシンでのみ実行される場合、パフォーマンスを向上させるのは非常に...

WeChatアプレットはシンプルなチャットルームを実装します

この記事では、WeChatアプレットの具体的なコードを共有し、簡単なチャットルームを実装します。具体...

Promise カプセル化 wx.request メソッド

前回の記事では、Promise を使用して小さなプログラム wx.request をカプセル化する実...

MySQL データベースの最適化: インデックスの実装原則と使用状況の分析

この記事では、例を使用して、MySQL データベースの最適化のためのインデックス実装の原則と使用方法...

CSS 共通スタイルで二重矢印を描画するサンプルコード

1. 単一の矢印への複数の呼び出し単一の矢印を実装したら、二重矢印を実装するのは簡単です。上では、単...

Dockerfile 内の予約語命令の解析処理

目次1. Dockerfile とは何ですか? 2. Dockerfile構築プロセスの分析3. D...

画像をラベルとして使用すると、IE では for 属性が機能しません。

例えば:コードをコピーコードは次のとおりです。 <input type="check...

CentOS での MySQL ワークベンチのインストールと設定のチュートリアル

この記事では、MySQL Workbenchのインストールと設定のチュートリアルを参考までに紹介しま...

MySQL ファントムリードとその排除方法の詳細な説明

目次トランザクション分離レベルファントムリーディングとは何ですか?ファントムリードを排除する方法要約...

Vue2.x における双方向バインディングの原理と実装

目次1. 実施プロセス2. オブザーバーを表示する3. ウォッチャーを実装する4. コンパイルを実装...

Javascriptはセキュリティ検証に整合性属性を使用します

目次1. スクリプトタグを使用してファイルをインポートする1. ローカルファイルをインポートする2....

Linuxアカウントファイル制御管理の詳細な手順

Linux システムでは、ユーザーが手動で作成したさまざまなアカウントに加えて、システムまたはプログ...