页面重定向时,通常使用文件移动指到新的位置,我们需要向客户端发送到这个新的位置,也可能是因为负载平衡,或为简单随机。
将请求重定向到另一页的最简单的方法是,用方法的sendRedirect()的响应对象。以下是这种方法的定义:
public void HttpServletResponse.sendRedirect(String location) throws IOException
此方法的响应发送回给浏览器一起的状态代码和新的页面位置。还可以使用setStatus()和setHeader()方法来达到同样的:
.... String site = "http://www.newpage.com" ; response.setStatus(response.SC_MOVED_TEMPORARILY); response.setHeader("Location", site); ....
这个例子显示servlet如何进行页面重定向到另一个位置:
import java.io.*; import java.sql.Date; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class PageRedirect extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Set response content type response.setContentType("text/html"); // New location to be redirected String site = new String("http://www.gitbook.net"); response.setStatus(response.SC_MOVED_TEMPORARILY); response.setHeader("Location", site); } }
现在让我们来编译上面的servlet在web.xml文件中创建以下条目:
.... <servlet> <servlet-name>PageRedirect</servlet-name> <servlet-class>PageRedirect</servlet-class> </servlet> <servlet-mapping> <servlet-name>PageRedirect</servlet-name> <url-pattern>/PageRedirect</url-pattern> </servlet-mapping> ....
现在调用这个servlet的URL http://localhost:8080/PageRedirect。这将转到你给的URL http://www.gitbook.net