RequestDispatcher インターフェイスを使用すると、リクエストを HTML、サーブレット、または JSP などの別のリソースにルーティングできます。このインターフェイスは、追加リソースのコンテンツを組み込むために利用することもできます。サーブレット連携方式の一つです。 RequestDispatcher インターフェースは Java の一部です。サーブレットパッケージ。このインターフェースを使用すると、サーブレットはリクエストを受信した後にオブジェクトを返します。
広告 このカテゴリーの人気コース JAVA サーブレット - 専門分野 | 18 コース シリーズ | 6 つの模擬テスト無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
サーブレット RequestDispatcher は、ユーザー インターフェイスを使用して、あるソース リンクを別のソース リンクにリクエストします。 requestdispatcher はフォーム データを検証サーブレット ページに送信します。サーブレット ページが情報を検証すると、リクエスト ディスパッチャーはパスまたは文字列名を使用してリンクを別のサーブレットまたは JSP ページに転送します。 Web ページで情報が検証されない場合、リクエスト ディスパッチャ オブジェクトには HTML または JSP ページが含まれ、エラー メッセージが表示されます。
RequestDispatcher オブジェクトは、リソースにリクエストを送信したり、レスポンスにリクエストを含めたりできます。リソースは静的または動的のいずれかです。サーブレット ページでサーブレット requestdispatcher を作成するには 3 つの方法があります。まず、パスの文字列名またはページのパスを使用する必要があります。
次の構文は、パスを使用してリクエスト ディスパッチャのオブジェクトを作成する方法を示しています。
構文:
RequestDispatcher requestdispatcherObject = ServletContext.getRequestDispatcher(" String file_path");
説明:
次の構文は、リクエスト ディスパッチャーのオブジェクトを作成する方法を示しています。
構文:
RequestDispatcher requestdispatcherObject = ServletContext.getNamedDispatcher(" String name");
説明:
次の構文は、リクエスト インターフェイスを使用してリクエスト ディスパッチャーのオブジェクトを作成する方法を示しています。
構文:
RequestDispatcher requestdispatcherObject = request.getRequestDispatcher(" String file_path");
説明:
requestdispatcher には、サーブレットと HTML ページ用の 2 つのメソッドがあります。このメソッドは、ファイル ソースを次のソースに転送するか、含めます。
情報が検証され、Web ページが次のサーブレット ページに転送される場合は、forward メソッドを使用します。
構文:
次の構文は、forward メソッドの使用方法を示しています。
void forward(ServletRequest req, ServletResponse resp) throws ServletException, IOException
説明:
例:
コード:
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); } }
情報が検証されない場合、そのページにはエラー メッセージが表示された同じページが含まれます。
構文:
次の構文は、include メソッドの使用方法を示しています。
void include(ServletRequest req, ServletResponse resp) throws ServletException, IOException
説明:
例:
コード:
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); } }
The servlet requestdispatcher requires the following four files:
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
Output 2: servlet page output with an error message
Output 2: servlet page final output
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 サイトの他の関連記事を参照してください。