更新時間:2022-01-04 10:34:25 來源:動力節點 瀏覽1630次
Servlet Redirect, HttpServletResponse是一個由SendRedirect()組成的接口,該方法的功能是將響應重定向到其他頁面,例如JSP,HTML。它在瀏覽器端工作,因為它使用 URL 欄并且它總是發送一個新請求。它將在服務器內部和外部使用。以下是聲明SendRedirect()的語法。
response.sendRedirect("URL")
Servlet Redirect,下圖演示了web應用中的Servlet Redirect方法
HTML servlet1(Servlet程序)的輸出將被丟棄,并且僅servlet2的HTML輸出將瀏覽器窗口作為響應上顯示。
瀏覽器窗口向 servlet1 程序發出初始請求。
servlet1 程序的所有語句都執行,包括res.sendRedirect方法。
Servlet1 根據作為參數值放置在sendRedirect()方法中的 URI 生成對瀏覽器窗口的隱式響應。隱式響應狀態碼為300-399,該碼表示重定向。
瀏覽器窗口使用來自隱式響應代碼的 URL 向 servlet2 程序生成一個隱式請求,servlet2 程序的所有語句都會執行。
servlet1 的輸出被丟棄,只有 servlet2 程序的 HTML 輸出顯示為最終響應。
向前() | 發送重定向() |
---|---|
執行 servlet 鏈接的 forward() 模式 | 執行 sendRedirect() 通信模式 |
servlet 程序直接與目標 Web 資源程序通信。 | servlet 程序通過與瀏覽器窗口的網絡往返來與目標 servlet 程序通信 |
servlet 程序和目標 Web 資源程序使用相同的請求和響應對象,因此請求在目標 Web 資源程序中是可見和可訪問的。 | servlet 程序和目標 Web 資源程序不會使用相同的請求和響應對象。所以請求數據在目標程序中是不可見和不可訪問的。然后sendRedirect 發送新請求。 |
在轉發請求期間 URL 顯示在瀏覽器窗口中并且不會更改。 | 在 sendRedirect 操作期間,瀏覽器窗口中的 URL 將被更改。 |
索引.html
<html>
<form action="./welcome">
<input type="submit" value="click here for splessons">
</form>
</html>
這里剛剛創建了“點擊這里查看 splessons”的提交按鈕,給定的 URL 是“./welcome”,確保這個 URL 應該與web.xml文件 URL匹配。
網頁.xml
<web-app>
<servlet>
<servlet-name>DemoSendRedirect</servlet-name>
<servlet-class>sendredirect.SimpleSendRedirect</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DemoSendRedirect</servlet-name>
<url-pattern>/welcome</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>welcome.html</welcome-file>
</welcome-file-list>
</web-app>
如前所述,即DemoSendRedirect在兩個servlet和servlet-mapping中都應該相同。
SimpleSendRedirect.java
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SimpleSendRedirect extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String tutorialName = request.getParameter("name");
response.sendRedirect("https://www.splessons.com");
out.flush();
out.close();
}
}
Servlet 重定向,這里 setContentType(“text/html”) 的目的是,它基本上告訴客戶端它是什么內容類型,以便它知道如何處理它。將對象的格式化表示打印到文本輸出流。HttpServletResponse 接口的sendRedirect()方法可用于將響應重定向到另一個資源,它可能是 servlet、jsp 或 html 文件。
輸出:
通過編譯程序,將顯示以下輸出。
當單擊搜索按鈕時,所需頁面將顯示如下。
歡迎.html
<html>
<form action="./welcome">
<h2>Enter your tutorial name<input type="text"name="name/">
<input type="submit"value="search">
</form>
</html>
這里創建了一個文本框來搜索所需的頁面,并創建了提交按鈕以將輸入提供給服務器。
網頁.xml
<servlet>
<servlet-name>DemoSendRedirect</servlet-name>
<servlet-class>sendredirect.SimpleSendRedirect</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DemoSendRedirect</servlet-name>
<url-pattern>/welcome</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>welcome.html</welcome-file>
</welcome-file-list>
</web-app>
正如所討論的servlet 名稱應該相同并且URL應該與 HTML 表單匹配。
DemoSendRedirect.java
package sendredirect;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SimpleSendRedirect extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String tutorialName = request.getParameter("name");
response.sendRedirect("https://www.splessons.com/lesson/"+tutorialName+"+tutorial/");
out.flush();
out.close();
}
}
所述的doGet()方法被用于參數與所述報頭信息一起發送到一個URL。HttpServletResponse 接口的sendRedirect()方法可用于將響應重定向到另一個資源,它可能是 servlet、jsp 或 html 文件。
輸出:
編譯后,將顯示以下輸出程序。
單擊搜索按鈕時,將顯示所需頁面。
在doGet() 中,參數與標頭信息一起發送,而在doPost() 中,參數在正文中發送。
doGet() 將有發送數據的限制,而 doPost() 沒有限制。
doGet() 中的參數未加密,而 doPost() 中的參數已加密。
doGet() 方法用于從服務器獲取一些信息,doPost() 用于將一些信息發布到服務器。
所述的doGet()方法被用于參數與所述報頭信息一起發送到一個URL。
所述的doPost()方法被用于龐大的信息發送到一個URL。
這里的代碼應該從 HTML 頁面調用。
以上就是關于“Servlet重定向詳解”的介紹,大家如果想了解更多相關知識,可以關注一下動力節點的Servlet教程,教程內容由淺到深,通俗易懂,即使沒有基礎也很容易理解,希望對大家能夠有所幫助。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習