<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Java `RequestDispatcher` 原文:http://zetcode.com/java/requestdispatcher/ Java `RequestDispatcher`教程顯示了如何使用 Java `RequestDispatcher`將請求分派到資源。 ## `RequestDispatcher` `RequestDispatcher`從客戶端接收請求,并將其發送到服務器上的資源(例如 Servlet,HTML 文件,JSP 文件,FreeMarker 或 Thymeleaf 模板)。 ## `RequestDispatcher`方法 `RequestDispatcher`有兩種方法: * `forward()` - 將請求從 Servlet 轉發到另一個資源 * `include()` - 在響應中包含資源的內容 兩種方法之間的區別在于,`forward()`方法將在調用后關閉輸出流,而`include()`方法將打開輸出流。 `include()`方法從另一個資源獲取內容,并將其包含在 Servlet 中。 `forward()`方法將請求發送到另一個資源。 ## 獲取`RequestDispatcher` `RequestDispatcher`可以從請求對象或 servlet 上下文中獲得。 ```java RequestDispatcher dispatcher = request.getRequestDispatcher("greet.jsp"); dispatcher.forward(request, response); ``` 我們可以使用`getRequestDispatcher()`方法從請求對象中獲取`RequestDispatcher`。 ```java RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/greet.jsp"); dispatcher.forward(request, response); ``` 在這里,我們從 servlet 上下文中獲取`RequestDispatcher`。 在這種情況下,路徑必須以斜杠字符開頭。 ## Java `RequestDispatcher`轉發到 JSP 以下示例將來自客戶端的請求發送到 JSP 頁面。 `index.html` ```java <!DOCTYPE html> <html> <head> <title>Start Page</title> <meta charset="UTF-8"> </head> <body> <form action="MyServlet"> <label>Enter your name: <input type="text" name="name"> </label> <button type="submit">Submit</button> </form> </body> </html> ``` 在主頁中,我們有一個簡單的形式:它從用戶那里獲取一個值,并將其作為請求參數發送到`MyServlet`。 `MyServlet.java` ```java package com.zetcode.web; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(name = "MyServlet", urlPatterns = {"/MyServlet"}) public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); request.getRequestDispatcher("greet.jsp").forward(request, response); } } ``` 在`MyServlet`中,我們使用`RequestDispatcher`轉發到`greet.jsp`頁面。 `greet.jsp` ```java <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JSP Page</title> </head> <body> <p>Hello ${param.name}!</p> </body> </html> ``` 在`greet.jsp`頁面中,我們顯示`name`參數,該參數由用戶在表單中設置。 ## Java `RequestDispatcher`轉發到 Servlet 以下示例將來自客戶端的請求發送到 Servlet,該 Servlet 將處理轉發到另一個 Servlet。 `index.html` ```java <!DOCTYPE html> <html> <head> <title>Start Page</title> <meta charset="UTF-8"> </head> <body> <p> <a href="MyServlet">Call servlet</a> </p> </body> </html> ``` 主頁包含一個調用`MyServlet`的鏈接。 `MyServlet.java` ```java package com.zetcode.web; import java.io.IOException; import java.time.Instant; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(name = "MyServlet", urlPatterns = {"/MyServlet"}) public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); request.setAttribute("now", Instant.now()); request.getRequestDispatcher("AnotherServlet").forward(request, response); } } ``` 該請求首先到達`MyServlet`。 ```java request.setAttribute("now", Instant.now()); ``` 我們為請求設置一個屬性; 這是當前時間。 ```java request.getRequestDispatcher("AnotherServlet").forward(request, response); ``` 包括新屬性的請求被發送到`AnotherServlet`。 `AnotherServlet.java` ```java package com.zetcode.web; import java.io.IOException; import java.io.PrintWriter; import java.time.Instant; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.time.format.FormatStyle; import java.util.Locale; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(name = "AnotherServlet", urlPatterns = {"/AnotherServlet"}) public class AnotherServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/plain;charset=UTF-8"); PrintWriter out = response.getWriter(); DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT) .withLocale(Locale.ENGLISH) .withZone(ZoneId.of("UTC")); Instant now = (Instant) request.getAttribute("now"); String output = formatter.format(now); out.println(output); } } ``` `AnotherServlet`將即時對象格式化為簡短的英語日期時間格式,并將其打印到輸出流中。 ```java DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT) .withLocale(Locale.ENGLISH) .withZone(ZoneId.of("UTC")); ``` 我們使用`DateTimeFormatter`類格式化日期時間。 ```java Instant now = (Instant) request.getAttribute("now"); ``` 我們使用`getAttribute()`方法從請求中檢索屬性。 ```java String output = formatter.format(now); out.println(output); ``` 即時被格式化并打印到輸出中。 ## Java `RequestDispatcher`包括 下一個示例包括從另一個 servlet 到調用 servlet 的輸出。 `index.html` ```java <!DOCTYPE html> <html> <head> <title>Start Page</title> <meta charset="UTF-8"> </head> <body> <p> <a href="MyServlet">Call servlet</a> </p> </body> </html> ``` 主頁包含一個調用`MyServlet`的鏈接。 `MyServlet.java` ```java package com.zetcode.web; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(name = "MyServlet", urlPatterns = {"/MyServlet"}) public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/plain;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("Hello from MyServlet"); request.getRequestDispatcher("AnotherServlet").include(request, response); } } ``` `MyServlet`將數據打印到輸出流并轉發到`AnotherServlet`。 `AnotherServlet.java` ```java package com.zetcode.web; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(name = "AnotherServlet", urlPatterns = {"/AnotherServlet"}) public class AnotherServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/plain;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("Hello from AnotherServlet"); } } ``` `AnotherServlet`還將數據打印到輸出流。 最后,我們將兩條消息都寫入輸出流并發送給客戶端。 在本教程中,我們介紹了 Java `RequestDispatcher`。 我們已經介紹了`RequestDispatcher`,`forward`和`include()`方法。 您可能還需要查看相關的教程: [Java servlet JSON 教程](/articles/javaservletjson/),[從 Java servlet](/articles/javaservlettext/) , [Java servlet 復選框教程](/articles/javaservletcheckbox/),[提供純文本 Java Servlet 圖像教程](/articles/javaservletimage/), [Java Servlet HTTP 標頭](/articles/javaservlethttpheaders/)或 [Java 教程](/lang/java/),
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看