Servlet中的请求分派器

RequestDispatcher is an interface, implementation of which defines an object which can dispatch request to any resources(such as HTML, Image, JSP, Servlet) on the server.

RequestDispatcher是一个接口,该接口的实现定义了一个对象,该对象可以将请求分派到服务器上的任何资源(例如HTML,Image,JSP,Servlet)。

Servlet:RequestDispatcher的方法 (Servlet: Methods of RequestDispatcher)

RequestDispatcher interface provides two important methods

RequestDispatcher接口提供了两种重要的方法

MethodsDescription
void forward(ServletRequest request, ServletResponse response)forwards a request from a servlet to another resource (servlet, JSP file, or HTML file) on the server
void include(ServletRequest request, ServletResponse response) includes the content of a resource (servlet, JSP page, HTML file) in the response
方法 描述
无效forward(ServletRequest request, ServletResponse response) 将请求从servlet转发到服务器上的另一个资源(servlet,JSP文件或HTML文件)
无效include(ServletRequest request, ServletResponse response) 在响应中包含资源的内容(servlet,JSP页面,HTML文件)

如何获取RequestDispatcher的对象 (How to get an Object of RequestDispatcher)

getRequestDispatcher() method of ServletRequest returns the object of RequestDispatcher.

ServletRequest的 getRequestDispatcher()方法返回RequestDispatcher的对象。

RequestDispatcher rs = request.getRequestDispatcher("hello.html");
rs.forward(request,response);
RequestDispatcher detail and instantiation using forward

OR

要么

RequestDispatcher rs = request.getRequestDispatcher("hello.html");
rs.include(request,response);
RequestDispatcher detail and instantiation using include

演示RequestDispatcher用法的示例 (Example demonstrating usage of RequestDispatcher)

In this example, we will show you how RequestDispatcher is used to forward or include response of a resource in a Servlet. Here we are using index.html to get username and password from the user, Validate Servlet will validate the password entered by the user, if the user has entered "studytonight" as password, then he will be forwarded to Welcome Servlet else the user will stay on the index.html page and an error message will be displayed.

在此示例中,我们将向您展示如何使用RequestDispatcher来转发包括 Servlet中资源的响应。 这里我们使用index.html从用户那里获取用户名和密码, Validate Servlet将验证用户输入的密码,如果用户输入“ studytonight”作为密码,那么他将被转发给Welcome Servlet,否则用户将停留在index.html页面上,将显示一条错误消息。

Files to be created :

要创建的文件:

  • index.html will have form fields to get user information.

    index.html将具有表单字段以获取用户信息。

  • Validate.java will validate the data entered by the user.

    Validate.java将验证用户输入的数据。

  • Welcome.java will be the welcome page.

    Welcome.java将成为欢迎页面。

  • web.xml , the deployment descriptor.

    web.xml ,部署描述符。

index.html

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

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("studytonight"))
            {
                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

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

This will be the first screen. You can enter your Username and Password here.

这将是第一个屏幕。 您可以在此处输入您的用户名和密码。

request dispatcher example

When you click on Submit, Password will be validated, if it is not 'studytonight' , error message will be displayed.

当您单击Submit时,密码将被验证,如果不是'studytonight',则会显示错误消息。

request dispatcher example

Enter any Username, but enter 'studytonight' as password.

输入任何用户名,但输入“ studytonight”作为密码。

request dispatcher example

Password will be successfully validated and you will be directed to the Welcome Servlet.

密码将被成功验证,并且您将被定向到Welcome Servlet。

request dispatcher example

翻译自: https://www.studytonight.com/servlet/request-dispatcher.php

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值