Rumah  >  Artikel  >  Java  >  Servlet RequestDispatcher

Servlet RequestDispatcher

WBOY
WBOYasal
2024-08-30 15:16:09923semak imbas

Antara muka RequestDispatcher membenarkan permintaan dihalakan ke sumber lain, yang mungkin HTML, Servlet atau JSP. Antara muka ini juga boleh digunakan untuk menggabungkan kandungan sumber tambahan. Ia adalah salah satu kaedah kerjasama servlet. Antara muka RequestDispatcher adalah sebahagian daripada java. Pakej Servlet. Menggunakan antara muka ini, servlet mengembalikan objek selepas menerima permintaan.

Servlet RequestDispatcher

IKLAN Kursus Popular dalam kategori ini JAVA SERVLET - Pengkhususan | 18 Siri Kursus | 6 Ujian Olok-olok

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Ikhtisar Servlet RequestDispatcher

Servlet RequestDispatcher menggunakan antara muka pengguna untuk meminta satu pautan sumber kepada yang lain. Requestdispatcher menghantar data borang ke halaman servlet pengesahan. Jika halaman servlet mengesahkan maklumat, penghantar permintaan memajukan pautan ke halaman servlet atau JSP lain menggunakan laluan atau nama rentetan. Jika halaman web tidak mengesahkan maklumat, objek penghantar permintaan termasuk halaman HTML atau JSP dan menunjukkan mesej ralat.

Bagaimana untuk Mencipta Servlet RequestDispatcher?

Objek RequestDispatcher boleh menghantar permintaan kepada sumber atau memasukkannya dalam respons. Sumber mungkin sama ada statik atau dinamik. Terdapat tiga cara untuk mencipta servlet requestdispatcher pada halaman servlet. Pertama, kita perlu menggunakan nama rentetan laluan atau laluan halaman.

Kaedah 1

Sintaks berikut menunjukkan cara mencipta objek penghantar permintaan dengan laluan.

Sintaks:

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

Penjelasan:

  • Antara muka awam servlet menggunakan ServletContext untuk berkomunikasi dengan bekas servletnya.
  • Laluan ialah rentetan yang menentukan nama laluan sumber.
  • Format fail sumber mestilah sama ada servlet, HTML atau JSP.

Kaedah 2

Sintaks berikut menunjukkan cara mencipta objek penghantar permintaan.

Sintaks:

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

Penjelasan:

  • Antara muka awam ServletContext mentakrifkan koleksi kaedah yang digunakan oleh servlet untuk berkomunikasi dengan bekasnya.
  • "Nama" ialah rentetan yang menentukan servlet untuk dibalut.

Kaedah 3

Sintaks berikut menunjukkan cara membuat objek penghantar permintaan dengan antara muka permintaan.

Sintaks:

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

Penjelasan:

  • "permintaan" ialah objek jenis HttpServletRequest.
  • File_Path ialah rentetan yang menentukan nama laluan sumber. Ia mestilah relatif kepada servlet semasa.

Kaedah Servlet RequestDispatcher

Requestdispatcher mempunyai dua kaedah untuk halaman servlet dan Html. Kaedah ini sama ada memajukan atau memasukkan sumber fail ke sumber seterusnya.

  • Kaedah ke hadapan
  • Sertakan kaedah

1. Kaedah Hadapan

Jika maklumat disahkan dan halaman web dimajukan ke halaman servlet seterusnya, kemudian gunakan kaedah ke hadapan.

Sintaks:

Sintaks berikut menunjukkan cara menggunakan kaedah ke hadapan.

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

Penjelasan:

  • Pengubahsuai/Jenis: batal.
  • Teknik ini mengubah hala permintaan daripada servlet kepada sumber pelayan yang berbeza.
  • Kaedah ini digunakan sebelum respons dihantar kepada pelanggan.
  • Prosedur akan membuang IllegalStateException jika respons telah dihantar.
  • Permintaan(req) dan respons(resp) ialah objek yang sama yang dibekalkan kepada kaedah perkhidmatan kepada servlet.
  • Fungsi ini menetapkan jenis penghantar permintaan kepada "DispatcherType.FORWARD".

Contoh:

Kod:

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. Sertakan kaedah

Jika maklumat tidak disahkan, maka halaman tersebut termasuk halaman yang sama dengan mesej ralat.

Sintaks:

Sintaks berikut menunjukkan cara menggunakan kaedah sertakan.

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

Penjelasan:

  • Pengubahsuai/Jenis: batal
  • Permintaan(req) dan respons(resp) ialah objek yang sama yang dibekalkan kepada kaedah perkhidmatan kepada servlet.
  • Teknik ini digunakan untuk memasukkan respons sumber ke dalam respons servlet semasa.
  • Fungsi ini menetapkan jenis penghantar permintaan kepada "DispatcherType.INCLUDE".

Contoh:

Kod:

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

Servlet RequestDispatcher

Output 2: servlet page output with an error message

Servlet RequestDispatcher

Output 2: servlet page final output

Servlet 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.

Atas ialah kandungan terperinci Servlet RequestDispatcher. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Rangka kerja dalam JavaArtikel seterusnya:Rangka kerja dalam Java