Java Servlet請求重定向的方法
阿新 • • 發佈:2020-11-11
HttpServletResponse介面的sendRedirect()方法可用於將響應重定向到另一個資源,它可以是Servlet,Jsp或Html檔案。
它接受相對和絕對URL。
它在客戶端起作用,因為它使用瀏覽器的網址欄發出另一個請求。因此,它可以在伺服器內部和外部工作。
1 轉發和重定向的區別
RequestDispatcher的forward()方法與HttpServletResponse介面的sendRedirect()方法之間有很多區別。具體區別如下:
forward()方法 | sendRedirect()方法 |
---|---|
forward()方法在伺服器端起作用。 | sendRedirect()方法在客戶端執行。 |
只有1個請求。轉發到另一個Servlet的請求和原來請求是同一個。 | 每次重定向都有2個請求。重定向到另一個Servlet的請求是由瀏覽器重新發出的新請求。 |
只能轉發到當前伺服器內部的資源。 | 重定向可以請求當前伺服器內部的資源或者外部伺服器資源。 |
示例:request.getRequestDispacher("servlet2").forward(request,response); | 示例:response.sendRedirect(" servlet2"); |
2 重定向的示例
在下面示例中,我們將請求重定向到百度。注意sendRedirect方法在客戶端工作,這就是為什麼我們可以將請求傳送到任何地方的原因。我們可以在伺服器內外發送請求。
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class DemoServlet extends HttpServlet{ public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException { res.setContentType("text/html;charset=utf-8"); PrintWriter pw=res.getWriter(); res.sendRedirect("http://www.baidu.com"); pw.close(); } }
3 重定向建立自定義百度搜索
在下面示例中,我們使用sendRedirect方法將請求與請求資料一起傳送到百度伺服器。
3.1 編寫搜尋表單
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <meta charset="UTF-8"> <title>一點教程網-請求重定向案例</title> <meta http-equiv="content-type" content="text/html" charset="UTF-8"> </head> <body> <form action="search"> <input type="text" name="name"> <input type="submit" value="百度搜索"> </form> </body> </html>
3.2 編寫SearchServlet
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SearchServlet extends HttpServlet{ public void doGet(HttpServletRequest req,IOException { String name=req.getParameter("name"); res.sendRedirect("https://www.baidu.com/s?wd="+name); } }
3.3配置web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <servlet> <servlet-name>SearchServlet</servlet-name> <servlet-class>SearchServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>SearchServlet</servlet-name> <url-pattern>/search</url-pattern> </servlet-mapping> </web-app>
3.4 執行測試
輸入搜尋關鍵詞,點選百度搜索,效果如下:
以上就是使用Java Servlet請求重定向的詳細內容,更多關於Java Servlet請求重定向的資料請關注我們其它相關文章!