资源跳转的方式 》两种:请求转发和重定向
资源跳转的方式
》两种:请求转发和重定向
》请求转发
》发生的位置:发生在服务器端,浏览器的地址栏不会被改变
》转发的本质:一个请求在多个资源之间跳转
》转发时数据的保存:
》request和response的生命周期是一次请求和响应的过程
》可以放在request对象中,请求转发是一次请求和响应的过程,所以转发时的数据能进行共享
》 request.setAttribute("name",name);
》request.getAttribute("name");
》使用session
//获取session对象
HttpSession Session = request.getSession();
//利用session传值
Session.setAttribute("msg","请重新输入");
//在重定向到的文件中,通过key值获取value值;
session.getAttribute("msg")
》可以转向的资源
只能是当前服务器内部的资源
》核心代码:
request.getRequestDispatcher("要转发的资源路径").forward(request,response);
RequestDispatcher是一个Web资源的包装器,可以用来把当前request传递
到该资源。RequestDispatcher接口中定义参见如下代码:
l public interface RequestDispatcher {
void forward(ServletRequest request, ServletResponse response);
}
l forward()方法将当前的request和response重定向到该RequestDispacher指
定的资源。这在实际项目中大量使用,因为完成一个业务操作往往需要跨越多
个步骤,每一步骤完成相应的处理后,转向到下一个步骤。比如,通常业务处
理在Servlet中处理,处理的结果转向到一个JSP页面或者下一个Servlet继续处
理。
》重定向
》发生的位置:发生在浏览器端
》服务器通知浏览器发送一个新的请求,地址栏的url改变
》重定向时数据的保存
》重定向时发生了二次请求,第一次中的数据,在重定向后都没了
》使用session
//获取session对象
HttpSession Session = request.getSession();
//利用session传值
Session.setAttribute("msg","请重新输入");
//在重定向到的文件中,通过key值获取value值;
session.getAttribute("msg")
》重定向可以转向的资源
不但可以转向内部资源,也可以转向外部资源
》核心代码:
response.sendRedirect("要重定向的资源路径");
》注意:转发和重定向不能和PrintWriter一起使用
forward:方法只能在同一个Web应用程序内的资源之间转发请求 。
l redirect不仅可以重定向到当前应用程序的其他资源,还可以重定向到同一
个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点
的资源.
l forward:执行效率高.
l redirect:执行效率低.
public void sendRedirect( java.lang.String location) throws
java.io.IOException 。这个方法将响应定向到参数location指定的、新的
URL。
l location可以是一个绝对的URL。如:
response.sendRedirect(“http://java.sun.com”)。
l 也可以使用相对的URL。如果location以“/”开头,则容器认为相对于当
前Web应用的根,否则,容器将解析为相对于当前请求的URL
__EOF__

本文链接:https://www.cnblogs.com/longmo666/p/13468286.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)