首页 >Java >java教程 >Servlet 请求调度程序

Servlet 请求调度程序

WBOY
WBOY原创
2024-08-30 15:16:091016浏览

RequestDispatcher 接口允许将请求路由到另一个资源,该资源可以是 HTML、Servlet 或 JSP。该界面还可用于合并附加资源的内容。是Servlet协作方式之一。 RequestDispatcher 接口是 java.io.RequestDispatcher 接口的一部分。 Servlet 包。使用此接口,Servlet 在收到请求后返回一个对象。

Servlet 请求调度程序

广告 该类别中的热门课程 JAVA SERVLET - 专业化 | 18 门课程系列 | 6 次模拟测试

开始您的免费软件开发课程

网络开发、编程语言、软件测试及其他

Servlet RequestDispatcher 概述

servlet RequestDispatcher 使用用户界面来请求一个源链接到另一个源。 requestdispatcher 将表单数据发送到验证 servlet 页面。如果 servlet 页面验证了该信息,则请求调度程序会使用路径或字符串名称将链接转发到另一个 servlet 或 JSP 页面。如果网页未验证信息,请求调度程序对象将包含 HTML 或 JSP 页面并显示错误消息。

如何创建Servlet RequestDispatcher?

RequestDispatcher 对象可以向资源发送请求或将其包含在响应中。资源可以是静态的或动态的。在 servlet 页面上创建 servlet requestdispatcher 有三种方法。首先,我们必须使用路径或页面路径的字符串名称。

方法一

以下语法展示了如何创建带有路径的请求调度程序对象。

语法:

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

说明:

  • servlet 的公共接口利用 ServletContext 与其 servlet 容器进行通信。
  • 路径是指定资源路径名的字符串。
  • 资源文件格式必须是 servlet、HTML 或 JSP。

方法2

以下语法展示了如何创建请求调度程序的对象。

语法:

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

说明:

  • 公共接口 ServletContext 定义 servlet 用于与其容器通信的方法集合。
  • “name”是一个字符串,指定要包装的 servlet。

方法3

以下语法展示了如何使用请求接口创建请求调度程序的对象。

语法:

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

说明:

  • “请求”是 HttpServletRequest 类型的对象。
  • file_Path 是一个指定资源路径名的字符串。它必须是相对于当前 servlet 的。

Servlet RequestDispatcher 的方法

requestdispatcher 有两种方法用于 servlet 和 Html 页面。此方法将文件源转发或包含到下一个源。

  • 转发方法
  • 包含方法

1.转发方法

如果信息有效并且网页被转发到下一个servlet页面,则使用forward方法。

语法:

以下语法展示了如何使用forward方法。

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

说明:

  • 修饰符/类型:void。
  • 此技术将请求从 servlet 重定向到不同的服务器资源。
  • 该方法在响应传输到客户端之前调用。
  • 如果响应已经发送,该过程将抛出 IllegalStateException。
  • 请求(req)和响应(resp)是提供给 servlet 的服务方法的相同对象。
  • 此函数将请求的调度程序类型设置为“DispatcherType.FORWARD”。

示例:

代码:

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.包含方法

如果信息无效,则该页面将包含带有错误消息的同一页面。

语法:

以下语法展示了如何使用 include 方法。

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

说明:

  • 修饰符/类型:void
  • 请求(req)和响应(resp)是提供给 servlet 的服务方法的相同对象。
  • 此技术用于将资源的响应包含到当前 servlet 响应中。
  • 此函数将请求的调度程序类型设置为“DispatcherType.INCLUDE”。

示例:

代码:

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 请求调度程序

Output 2: servlet page output with an error message

Servlet 请求调度程序

Output 2: servlet page final output

Servlet 请求调度程序

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.

以上是Servlet 请求调度程序的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn