Java Servlet教程—Servlet 中的 sendRedirect 方法
Servlet 中的 sendRedirect 方法
HttpServletResponse 接口的 sendRedirect() 方法可以用来将响应重定向到另一个资源,这个资源可以是 servlet、jsp 或 html 文件。
它接受相对 URL 以及绝对 URL。
这个方法在客户端工作,因为它使用浏览器的 URL 栏来发起另一个请求。因此,它可以在服务器内部和外部工作。
forward() 方法和 sendRedirect() 方法的区别
RequestDispatcher 的 forward() 方法和 HttpServletResponse 接口的 sendRedirect() 方法之间有许多区别。它们如下所示:
forward() 方法 | sendRedirect() 方法 |
---|---|
forward() 方法在服务器端工作。 | sendRedirect() 方法在客户端工作。 |
它将相同的请求和响应对象发送到另一个 servlet。 | 它总是发送一个新请求。 |
它只能在服务器内部工作。 | 它可以在服务器内部和外部使用。 |
示例:request.getRequestDispacher("servlet2").forward(request,response); | 示例:response.sendRedirect("servlet2"); |
sendRedirect() 方法的语法
**public void** sendRedirect(String URL) **throws** IOException;
sendRedirect() 方法的示例
response.sendRedirect("[http://www.javatpoint.com](http://www.javatpoint.com/)");
sendRedirect 方法在 servlet 中的完整示例
在此示例中,我们将请求重定向到谷歌服务器。请注意,sendRedirect 方法在客户端工作,这就是为什么我们可以将请求发送到任何地方。我们可以将请求发送到服务器内部和外部。
DemoServlet.java
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");
PrintWriter pw=res.getWriter();
response.sendRedirect("http://www.google.com");
pw.close();
}}
使用 sendRedirect 创建自定义谷歌搜索
在此示例中,我们使用 sendRedirect 方法将请求与请求数据一起发送到谷歌服务器。
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>sendRedirect example</title>
</head>
<body>
<form action="MySearcher">
<input type="text" name="name">
<input type="submit" value="Google Search">
</form>
</body>
</html>
MySearcher.java
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MySearcher extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name=request.getParameter("name");
response.sendRedirect("https://www.google.co.in/#q="+name);
}
}
输出: