【重定向302】Redirect

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 【重定向302】Redirect,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

介绍

        URL 重定向,也称为 URL 转发,是一种当实际资源,如单个页面、表单或者整个 Web 应用被迁移到新的 URL 下的时候,保持(原有)链接可用的技术。HTTP 协议提供了一种特殊形式的响应—— HTTP 重定向(HTTP redirects)来执行此类操作。

        简单理解,重定向是指一个Web资源接收到客户端请求后,这个Web资源通知客户端去访问另外一个Web资源,客服端一共会发送2次Http请求。大概的流程如下

【重定向302】Redirect


使用

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”);

【重定向302】Redirect

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/140315.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!