1. 程式人生 > 程式設計 >Java Servlet請求重定向的方法

Java Servlet請求重定向的方法

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請求重定向的方法

以上就是使用Java Servlet請求重定向的詳細內容,更多關於Java Servlet請求重定向的資料請關注我們其它相關文章!