Request Dispatcher trong Servlet

RequestDispatcher là một interface, việc thực hiện xác định một đối tượng có thể gửi yêu cầu tới bất kỳ tài nguyên nào (như HTML, Image, JSP, Servlet) trên server.

Phương thức RequestDispatcher

Interface RequestDispatcher cung cấp hai phương thức quan trọng :

Phương pháp Sự miêu tả
void forward(ServletRequest request, ServletResponse response) Chuyển tiếp yêu cầu từ một servlet sang một tài nguyên khác (servlet, tệp JSP hoặc tệp HTML) trên server
void include(ServletRequest request, ServletResponse response) Bao gồm nội dung của một tài nguyên (servlet, trang JSP, tệp HTML) trong phản hồi.

Làm thế nào để tạo một đối tượng RequestDispatcher

getRequestDispatcher()Phương thức của ServletRequest trả về đối tượng của RequestDispatcher .

RequestDispatcher rs = request.getRequestDispatcher("hello.html");
rs.forward(request,response);

 

Request Dispatcher trong Servlet

OR

RequestDispatcher rs = request.getRequestDispatcher("hello.html");
rs.include(request,response);

request-dispatcher trong java

Ví dụ sử dụng RequestDispatcher

Trong ví dụ này, tôi sẽ chỉ cho bạn cách RequestDispatcher được sử dụng để forward or include phản hồi của một tài nguyên trong Servlet. Ở đây tôi đang sử dụng index.html để lấy tên người dùng và mật khẩu từ người dùng, Validate Servlet sẽ xác nhận mật khẩu đã nhập bởi người dùng, nếu người dùng đã nhập vào “phutranit0107” làm mật khẩu, thì  sẽ được chuyển tiếp tới Welcome Servlet khác mà người dùng sẽ Ở trên trang index.html và một thông báo lỗi sẽ được hiển thị.

Các tập tin cần được tạo ra:

  • Index.html sẽ có các trường mẫu để lấy thông tin người dùng.
  • Validate.java sẽ xác nhận dữ liệu được nhập bởi người dùng.
  • Welcome.java sẽ là trang chào đón.
  • Web.xml , descriptor triển khai.

Index.html

<form method="post" action="Validate">
Name:<input type="text" name="user" /><br/>
Password:<input type="password" name="pass" ><br/>
<input type="submit" value="submit">
</form>

Validate.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Validate extends HttpServlet {

   protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
      response.setContentType("text/html;charset=UTF-8");
     PrintWriter out = response.getWriter();
     try {
         String name = request.getParameter("user");
        String password = request.getParameter("pass");

        if(password.equals("phutranit0107"))
        {
           RequestDispatcher rd = request.getRequestDispatcher("Welcome");
           rd.forward(request, response);
        }
        else
         {
         out.println("<font color='red'><b>You have entered incorrect password</b></font>");
                RequestDispatcher rd = request.getRequestDispatcher("index.html");
                rd.include(request, response);
            }
        }finally {            
            out.close();
        }
        
    }
}

Welcome.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Welcome extends HttpServlet {

   protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            
            out.println("<h2>Welcome user</h2>");
        } finally {            
            out.close();
        }
    }
}

web.xml

<web-app>
    <servlet>
        <servlet-name>Validate</servlet-name>
        <servlet-class>Validate</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>Welcome</servlet-name>
        <servlet-class>Welcome</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Validate</servlet-name>
        <url-pattern>/Validate</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Welcome</servlet-name>
        <url-pattern>/Welcome</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        </welcome-file-list>
</web-app>

Đây sẽ là màn hình đầu tiên. Bạn có thể nhập Tên đăng nhập và Mật khẩu của bạn ở đây.


Khi bạn nhấn vào Submit, mật khẩu sẽ được xác nhận, nếu nó không phải là ‘phutranit0107’, thông báo lỗi sẽ được hiển thị.


Nhập bất kỳ Tên đăng nhập, nhưng nhập ‘phutranit0107’ làm mật khẩu.


Mật khẩu sẽ được xác nhận thành công và bạn sẽ được hướng tới Servlet Chào đón.

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận
x