介绍
URL 重定向,也称为 URL 转发,是一种当实际资源,如单个页面、表单或者整个 Web 应用被迁移到新的 URL 下的时候,保持(原有)链接可用的技术。HTTP 协议提供了一种特殊形式的响应—— HTTP 重定向(HTTP redirects)来执行此类操作。
简单理解,重定向是指一个Web资源接收到客户端请求后,这个Web资源通知客户端去访问另外一个Web资源,客服端一共会发送2次Http请求。大概的流程如下
使用
HttpServletResponse可以使用2种方法进行重定向。
- 方法一:使用sendRedirect(String s)来进行重定向,直接输入重定向的url即可
- 方法二:先设置http响应的状态码,setStatus(int i),设置状态码为302,然后再设置响应头中的location。setHeader(String s, String s1);
例如,下面的2种方式都是一样的,当访问这个Servlet时重定向到百度界面
response.setStatus(302);
response.setHeader("location","https://www.baidu.com");
response.sendRedirect("https://www.baidu.com");
上面是重定向到当前Web项目外的资源,如果要重定向到当前Web项目下的资源,那么在重定向的地方直接写入想要重定向的URI就行了。例如我们有一个Servlet的映射是/hello,那么要重定向到这个资源我们就需要写sendRedirect(自己配置的应用上下文+”/hello”) ,例如我们Tomcat配置的应用上下文是/servlet,那么我们就需要写成sendRedirect(“/servlet/hello”);
response.sendRedirect("/servlet/hello");
通过 ServletContext可以动态的获取到我们配置的应用上下文,于是我们重定向的地址就可以这样写。
response.sendRedirect(getServletContext().getContextPath()+"/hello");
如果我们以后要重定向到某个Servlet,那么像上面这样写就行了。
注意事项
- 我们使用重定向,一共发送了2次http请求,游览器地址栏会发生变化
- 不像请求转发那行可以共享Request,因为重定向会生成新的HttpServletRequest
- 不能重定向到WEB-INF下的资源,因为Tomcat会进行拦截
- 可以重定向到当前Web项目外面的资源
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/146364.html