ホームページ  >  記事  >  Java  >  サーブレット RequestDispatcher

サーブレット RequestDispatcher

WBOY
WBOYオリジナル
2024-08-30 15:16:09969ブラウズ

RequestDispatcher インターフェイスを使用すると、リクエストを HTML、サーブレット、または JSP などの別のリソースにルーティングできます。このインターフェイスは、追加リソースのコンテンツを組み込むために利用することもできます。サーブレット連携方式の一つです。 RequestDispatcher インターフェースは Java の一部です。サーブレットパッケージ。このインターフェースを使用すると、サーブレットはリクエストを受信した後にオブジェクトを返します。

サーブレット RequestDispatcher

広告 このカテゴリーの人気コース JAVA サーブレット - 専門分野 | 18 コース シリーズ | 6 つの模擬テスト

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

サーブレット RequestDispatcher の概要

サーブレット RequestDispatcher は、ユーザー インターフェイスを使用して、あるソース リンクを別のソース リンクにリクエストします。 requestdispatcher はフォーム データを検証サーブレット ページに送信します。サーブレット ページが情報を検証すると、リクエスト ディスパッチャーはパスまたは文字列名を使用してリンクを別のサーブレットまたは JSP ページに転送します。 Web ページで情報が検証されない場合、リクエスト ディスパッチャ オブジェクトには HTML または JSP ページが含まれ、エラー メッセージが表示されます。

サーブレット RequestDispatcher を作成するには?

RequestDispatcher オブジェクトは、リソースにリクエストを送信したり、レスポンスにリクエストを含めたりできます。リソースは静的または動的のいずれかです。サーブレット ページでサーブレット requestdispatcher を作成するには 3 つの方法があります。まず、パスの文字列名またはページのパスを使用する必要があります。

方法 1

次の構文は、パスを使用してリクエスト ディスパッチャのオブジェクトを作成する方法を示しています。

構文:

RequestDispatcher requestdispatcherObject = ServletContext.getRequestDispatcher(" String file_path");

説明:

  • サーブレットがサーブレット コンテナと通信するために ServletContext を利用するパブリック インターフェイス。
  • パスは、リソースのパス名を指定する文字列です。
  • リソース ファイルの形式は、サーブレット、HTML、または JSP のいずれかである必要があります。

方法 2

次の構文は、リクエスト ディスパッチャーのオブジェクトを作成する方法を示しています。

構文:

RequestDispatcher requestdispatcherObject = ServletContext.getNamedDispatcher(" String name");

説明:

  • パブリック インターフェイス ServletContext は、サーブレットがコンテナと通信するために使用するメソッドのコレクションを定義します。
  • 「名前」は、ラップするサーブレットを指定する文字列です。

方法 3

次の構文は、リクエスト インターフェイスを使用してリクエスト ディスパッチャーのオブジェクトを作成する方法を示しています。

構文:

RequestDispatcher requestdispatcherObject = request.getRequestDispatcher(" String file_path");

説明:

  • 「リクエスト」は HttpServletRequest タイプのオブジェクトです。
  • file_Path は、リソースのパス名を指定する文字列です。現在のサーブレットに対して相対的である必要があります。

サーブレット RequestDispatcher のメソッド

requestdispatcher には、サーブレットと HTML ページ用の 2 つのメソッドがあります。このメソッドは、ファイル ソースを次のソースに転送するか、含めます。

  • 転送メソッド
  • インクルードメソッド

1.転送メソッド

情報が検証され、Web ページが次のサーブレット ページに転送される場合は、forward メソッドを使用します。

構文:

次の構文は、forward メソッドの使用方法を示しています。

void forward(ServletRequest req, ServletResponse resp) throws ServletException, IOException

説明:

  • 修飾子/タイプ: void.
  • この手法は、サーブレットからのリクエストを別のサーバー リソースにリダイレクトします。
  • このメソッドは、応答がクライアントに送信される前に呼び出されます。
  • 応答がすでに送信されている場合、プロシージャは IllegalStateException をスローします。
  • リクエスト(req) とレスポンス(resp) は、サーブレットのサービス メソッドに提供される同一のオブジェクトです。
  • この関数は、リクエストのディスパッチャ タイプを「DispatcherType.FORWARD」に設定します。

例:

コード:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Register extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter printout = resp.getWriter();
String first_id = req.getParameter("fn");
RequestDispatcher rdispatcher = req.getRequestDispatcher("/index.html");
rdispatcher.include(req, resp);
}
}

2.インクルードメソッド

情報が検証されない場合、そのページにはエラー メッセージが表示された同じページが含まれます。

構文:

次の構文は、include メソッドの使用方法を示しています。

void include(ServletRequest req, ServletResponse resp) throws ServletException, IOException

説明:

  • 修飾子/タイプ: void
  • リクエスト(req) とレスポンス(resp) は、サーブレットのサービス メソッドに提供される同一のオブジェクトです。
  • この手法は、リソースの応答を現在のサーブレット応答に含めるために使用されます。
  • この関数は、リクエストのディスパッチャ タイプを「DispatcherType.INCLUDE」に設定します。

例:

コード:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Register extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter printout = resp.getWriter();
String first_id = req.getParameter("fn");
printout.print("Sorry!! Wrong UserId!");
RequestDispatcher rdispatcher = req.getRequestDispatcher("/index.html");
rdispatcher.include(req, resp);
}
}

Servlet RequestDispatcher Interface

The servlet requestdispatcher requires the following four files:

  • Index.html: Insert the information in the form.
  • Register.java: Use the servlet requestdispatcher interface with the method.
  • FinalServlet.java: Use the servlet page for the final output.
  • Web.xml: A deployment descriptor file that contains the information about the servlet. A deployment descriptor file that contains the information about the servlet.

index.html: create the required form

Code:

<!DOCTYPE html>
<html>
<head>
<title> Basic form </title>
</head>
<body>
<form action = "first_servlet" method = "post">
<label for = "fn"> User Id: </label>
<input type = "text" id = "fn" name = "fn"><br><br>
<label for = "ln"> First name: </label>
<input type = "text" id = "ln" name = "ln"><br>
<input type = "submit" value = "Submit">
</form>
</body>
</html>

Register.java: create the first servlet with a request dispatcher interface

Code:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Register extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter printout = resp.getWriter();
String first_id = req.getParameter("fn");
String first_name = req.getParameter("ln");
if(first_id.equals("servlet"){
RequestDispatcher rdispatcher = req.getRequestDispatcher("sec_servlet");
rdispatcher.forward(req, resp);
}
else{
printout.print("Sorry!! Wrong UserId!");
RequestDispatcher rdispatcher = req.getRequestDispatcher("/index.html");
rdispatcher.include(req, resp);
}
}
}

FinalServlet.java: create a second servlet page for the required output

Code:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class FinalServlet extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter printout = resp.getWriter();
String name = req.getParameter("ln");
printout.print("Welcome "+name);
}
}

Web.xml: create servlet parameters with its page

Code:

<web-app>
<servlet>
<servlet-name> Register </servlet-name>
<servlet-class> Register </servlet-class>
</servlet>
<servlet>
<servlet-name> FinalServlet </servlet-name>
<servlet-class> FinalServlet </servlet-class>
</servlet>
<servlet-mapping>
<servlet-name> Register </servlet-name>
<url-pattern> /first_servlet </url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name> FinalServlet </servlet-name>
<url-pattern> /sec_servlet </url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file> index.html </welcome-file>
</welcome-file-list>
</web-app>

Output 1: form page

サーブレット RequestDispatcher

Output 2: servlet page output with an error message

サーブレット RequestDispatcher

Output 2: servlet page final output

サーブレット RequestDispatcher

Conclusion

The servlet requestdispatcher interface moves users from one source to another web application source. It is forward and includes the file path per requirement and source output.

以上がサーブレット RequestDispatcherの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。