Servlet 中的sendRedirect()
方法
原文:https://www.studytonight.com/servlet/sendredirect-method.php
sendRedirect()
方法将响应重定向到另一个资源。这个方法实际上让客户端(浏览器)创建一个新的请求来访问资源。客户端可以在浏览器中看到新的网址。
sendRedirect() 接受相对的 URL ,可以去找服务器内部或者外部的资源。
Servlet: sendRedirect()
和RequestDispatcher
一个重定向和一个请求调度的主要区别在于,重定向使客户端(浏览器)创建一个新的请求来获取资源,用户可以在请求调度获取同一请求中的资源时看到新的 URL,而 URL 不变。
另外,另一个非常重要的区别是,sendRedirect()作用于响应对象,而 request dispatch 作用于请求对象。
演示sendRedirect()
用法的示例
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class MyServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
response.sendRedirect("https://www.studytonight.com");
}
finally {
out.close();
}
}
}
forward()
和sendRedirect()
的区别
| 向前() | 发送重定向() | | 它在服务器端工作。 | 它在客户端工作。 | | 它总是发送相同的请求和响应对象。 | 它总是发送新的对象请求。 | | 它只在服务器内部工作。 | 它在服务器内部和外部都能工作。 | | 在这种方法中,所有的处理都由 web 容器内部处理。 | 在这个方法中,所有的处理都由另一个 servlet 处理。 | | 它更快。 | 它比较慢。 | | 使用 forward()方法可以在地址栏中看到地址。 | 使用 forward()方法在地址栏中看不到地址。 | | RequestDispatcher 接口用于声明。 | HttpServletResponse 用于声明。 | | 在 MVC 设计模式中隐藏直接访问是非常有用的。 | 在 MVC 设计模式中隐藏直接访问是没有用的。 | | 它重用了对象。 | 它不重用对象。 | | 示例:request . getrequest dispatcher(" servlet 1 ")。转发(请求响应); | 示例:response . send redirect(" Servlet 1 "); |