SERVLET
3814 ワード
Webプロジェクトフォルダを作成するときに一緒に作成するWeb.xmlファイルは、クライアントがどのURLを要求したときにどのサーブレットファイルを実行するかをマッピングします.
TomcatはWebxmlにマッピングされたjavaファイルをサーブレットに変換し、要求に応答するためにサーブレットを実行します.
この場合、サーブレットに変換するには、開発者がサーブレットを宣言する必要があります.サーブレット構造で方法を理解します.
Tomcatによって作成されたHttpServeretクラスを継承
doGet()とdoPost()を上書きしてHTTPリクエストメソッドGetとPostを処理
パラメータは、HttpServeretResponseクラスとHttpServeretResponseクラスを定義します.
でもArnovationを利用するとWebxmlでマッピングを作成する必要はありません.
@WebServicelet("/hello")宣言は、上に作成したクラスから表示されます.
Tomcatはこの宣言をチェックし、「サーブレットにアクセスするにはURL/helloにアクセスするだけ」とマッピングします.
サーブレットクラスを作成すると、自動的にアシスタントが作成され、URLを置き換えるために変更することもできます.
下図に示すように、xmlを作成するとサーブレットとURLがマッピングされます.
(宣言されたアシスタントと重複している場合は、Tomcatは実行されません.)
MappingTest
hello
MappingTest
/hello
servlet-name
web.xmlでマッピングを区別する名前
との内容を表示できます.
servlet-class
サーブレットクラス名
url-pattern
Sellvetに対応するURL
ルートパスを省略します.
構文へのマッピングはずっと簡単なので、「サーブレットとURLを直接web.xmlファイルにマッピングする」ことを理解するだけです.
既存のタグには、URLに特定のファイルパス以外のドメインを入力した場合にのみ表示されるページがリストされていることに注意してください.
すなわち、代表ページのリストがリストされていると考えられます.
たとえば、クライアントがlocalhost:8080/テストを要求した場合(私のRootパスがテストであることを参照).
index.html
index.htm
index.jsp
...
ログインページを順番に参照します.
この部分はサーブレットマッピングとは関係ありませんが、参考にしてください.
各メソッドは、HttpServertRequestとHttpServertResponseの2つのオブジェクトをパラメータとして指定します.
両方のオブジェクトは、HTTPリクエストとレスポンスのすべての情報を含むTomcatで事前に作成されたクラスです.
後で簡単にrequest、responseオブジェクトと呼びます.
リクエスト・オブジェクト
クライアントリクエスト時に一緒に送信されるデータ.
例えば、URLパラメータとフォームで転送されるデータです.
応答オブジェクト
サーバからクライアントに応答する際に必要なデータ.
たとえば、結果ステータスコード、クライアント要求に応答するHTMLドキュメント.
この2つのオブジェクトは操作を続行するため、APIはこの時点で検証されます.
これでrequest,responseオブジェクトがHTTPリクエストとレスポンスを処理するオブジェクトであることを知るだけでよい.
応答
すなわち、MVCモードのコントローラであり、要求を管理する.
(MVCについてはこちらを参照)
ユーザーのドキュメントに応答してJSPファイルを使用するのですが、なぜサーブレットを使用せずにJSPを使用するのでしょうか.
その理由を理解するために、サーブレットの使用状況を確認します.
上記で作成したサーブレットクラスでは、クライアントに応答するためにdoGet()メソッドを簡単に変更します.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//ヘッダーはPrintWriterの上に書かなければなりません.
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<h1>하이</h1>");
}response.setContentType()
HTTP応答ヘッダのコードを作成します.
タイトルであるため、HTTP bodyの上に作成します.
response.getWriter()
ブラウザで出力するメッセージを作成します.
これで、サーバを実行した後、ブラウザからURLにリクエストしてみます.
(すでに実行されている場合は、コンパイルのために再実行する必要があります.)
プロジェクトルーティングがtestingであり、サーブレットクラス名がhelloであるため、localhost:8080/testing/helloパスにリクエストを送信します.
サーブレット応答により、ページ応答が良好であることがわかります.
ただしoutprintln()メソッドを使用してHTMLタグを自動的に完了しないで個々に書き込むのはつらいです.
またインデントがないため、読みやすさが悪く、エラーが発生する可能性もあります.
このようにhtmlを書くのは望ましくないようです.
次の図は、サーブレットを使用して作成したJSPファイルの一部を示しています.
JSPファイルでは60行、サーブレットに変換して200行です.
サーブレットを使用してレスポンスページを表示するのは無効です.
そのため、JavaコードをHTMLドキュメントのJSPに入れる必要があります.
JSPはMVCモードのViewに対応する.
まとめて、JSP/サーブレットを使用することは、「すべてのリクエストをサーブレットとして受信し、クライアントに表示されるページをJSPとして作成する」ということになります.
以上がサーブレットのコンセプトです.
もう1つの方法は、サーブレットではなくJSPから直接要求を受信し、モデル1と呼ばれるJSPで応答することである.
つまり、コントローラとビューはJSPが担当します.
本明細書で説明するサーブレットは、要求を受信し、JSP応答を使用する方法をモデル2と呼ぶ.
Reference
この問題について(SERVLET), 我々は、より多くの情報をここで見つけました https://velog.io/@wooni/SERVLETテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol