Servlet 网页重定向

本文最后更新于:2024年3月18日 凌晨

Servlet 网页重定向

当文档移动到新的位置,我们需要向客户端发送这个新位置时,我们需要用到网页重定向,当然,也可能是为了负载均衡,或者只是为了简单的随机,这些情况都有可能用到网页重定向。

setStatus()和setHeader()

该方法把响应连同状态码和新的网页位置发送回浏览器,您也可以通过把 setStatus()和 setHeader()方法一起使用来达到同样的效果:

1
2
3
String site = "http://www.test.com" ;
response.setStatus(response.SC_MOVED_TEMPORARILY);
response.setHeader("Location", site);

sendRedirect ()

1
response.sendRedirect();

说明:

  • 服务器根据逻辑,发送一个状态码302,告诉浏览器重新去请求指定的地址,一般来说,你会把需要的参数放在转发的地址里面。
  • 注意:使用request.setAttribute的内容,不能读取了,你可以用session代替,或者用include,forward代替。

RequestDispatcher

include()

  • servlet
1
request.getRequestDispatcher("jsp2.jsp").include(request,   response);
  • jsp
1
<jsp:include page="include.jsp"/>

说明

  • 页面会同时包含页面1和页面2的内容,地址栏不变。
  • 使用request.setAttribute的内容,可以正常使用。

forward()

  • servlet
1
request.getRequestDispatcher("jsp2.jsp").forward(request,  response);
  • jsp
1
<jsp:forward page="include.jsp"/>

说明

  • 页面会是页面2的内容,地址栏不变。
  • 使用request.setAttribute的内容,可以正常使用。

注意

  • 利用include()方法将请求转发给其他的Servlet,被调用的Servlet对该请求作出的响应将并入原先的响应对象中,原先的Servlet还可以继续输出响应信息;而利用forward()方法将请求转发给其他的Servlet,将由被调用的Servlet负责队请求做出响应,而原先Servlet的执行则终止。

  • includesendRediect 之后,后面的语句会继续执行,而return;forward的不会。

    会。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!