在JSP/Servlet编程中response.sendRedirect方法是使用HTTP协议中的重定向机制。它与JSP中的的区别在于后者是在服务器中实现页面的跳转,也就是说应用容器加载了所要跳转的页面的内容并返回给客户端;而前者是返回一个状态码,这些状态码的可能值见下表,然后客户端读取需要跳转到的页面的URL并重新加载新的页面。就是这样一个过程,所以我们编程的时候就要通过HttpMethod.getStatusCode()方法判断返回值是否为下表中的某个值来判断是否需要跳转。如果已经确认需要进行页面跳转了,那么可以通过读取HTTP头中的location属性来获取新的地址。
状态码 | 对应 HttpServletResponse 的常量 | 详细描述 |
301 | SC_MOVED_PERMANENTLY | 页面已经永久移到另外一个新地址 |
302 | SC_MOVED_TEMPORARILY | 页面暂时移动到另外一个新的地址 |
303 | SC_SEE_OTHER | 客户端请求的地址必须通过另外的 URL 来访问 |
307 | SC_TEMPORARY_REDIRECT | 同 SC_MOVED_TEMPORARILY |