Servlet RequestDispatcher方法

来源:这里教程网 时间:2026-02-17 21:37:38 作者:

Servlet 中的 RequestDispatcher 方法,RequestDispatcher接口定义一个对象,该对象从客户端接收请求并将其分派给资源(例如 servlet,JSP,HTML 文件)。该接口有以下两种方法:

public void forward(ServletRequest request, ServletResponse response):它将请求从一个 servlet 转发到另一个资源(例如 servlet,JSP,HTML 文件)。

public void include(ServletRequest request, ServletResponse response):它包含响应中的资源内容(如 servlet,JSP,HTML 文件)。

forward()与include()方法的区别

为了理解这两种方法之间的区别,让我们举一个例子:假设你有两个页面X和Y。在页面X中你有一个include标签,这意味着控制流将在页面X中,直到它遇到包含标签,之后控制流将被转移到页面Y。在页面Y的处理结束时,控制流将返回到包含标签之后的页面X并保持在X直到结束。

在这种情况下,客户的最终回复将由X页面发送。

现在,我们正在采用相同的例子。我们有相同的页面X和Y。在页面X中,我们有转发标签。在这种情况下,控制流将在页面X中,直到它遇到转发,此后控制流将被转移到页面Y。这里的主要区别是控制流不会返回到X,它将在页面Y中直到结束它的。

在这种情况下,对客户的最终回复将由Y页面发送。

forward()与include()方法示例

在这个例子中,我将使用include和forward两种方法。使用include方法,我将更改当前页面的内容,当我准备将控制流转移到下一页时,我将使用forward方法。

index.html

<form action="loginPage" method="post">   User Name:<input type="text" name="uname"/><br/>   Password:<input type="password" name="upass"/><br/>   <input type="submit" value="SUBMIT"/> </form> 

Validation.java

import java.io.*;  import java.io.*;  import javax.servlet.*;  import javax.servlet.http.*;      public class Validation extends HttpServlet {       public void doPost(HttpServletRequest request,      HttpServletResponse response)        throws ServletException, IOException    {               response.setContentType("text/html");             PrintWriter pwriter = response.getWriter();                       String name=request.getParameter("uname");             String pass=request.getParameter("upass");                       if(name.equals("Chaitanya") &&           pass.equals("beginnersbook"))       {                    RequestDispatcher dis=request.getRequestDispatcher("welcome");                    dis.forward(request, response);             }            else       {                pwriter.print("User name or password is incorrect!");                    RequestDispatcher dis=request.getRequestDispatcher("index.html");                    dis.include(request, response);                                       }         }    }  

WelcomeUser.java

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class WelcomeUser extends HttpServlet {  public void doPost(HttpServletRequest request,  HttpServletResponse response)  throws ServletException, IOException  {     response.setContentType("text/html");     PrintWriter pwriter = response.getWriter();     String name=request.getParameter("uname");     pwriter.print("Hello "+name+"!");    pwriter.print(" Welcome to Beginnersbook.com");  } } 

web.xml

<web-app> <display-name>BeginnersBookDemo</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> <servlet> <servlet-name>Login</servlet-name> <servlet-class>Validation</servlet-class> </servlet> <servlet> <servlet-name>Welcome</servlet-name> <servlet-class>WelcomeUser</servlet-class> </servlet> <servlet-mapping> <servlet-name>Login</servlet-name> <url-pattern>/loginPage</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>

输出:

输入错误的凭据:

错误屏幕:

输入正确的用户名和密码时欢迎屏幕:

相关推荐