关于web项目中的资源跳转
1.跳转包括两种方式:
-
转发 forward
-
重定向 redirect
2.两种方式的代码:
AServlet类:
//向request范围中存储数据
request.setAttribute("username","zhangsan");
//转发forward:一次请求
//request.getRequestDispatcher("/b").forward(request,response);
//另外一种跳转方式是重定向
//重定向redirect:两次请求
//执行到此处之后将这个路径相应给浏览器,浏览器又向服务器发送了一次全新的请求
response.sendRedirect("/prj_servlet_16_war_exploded/b");
BServlet类:
//从request范围中取数据
Object obj = request.getAttribute("username");
System.out.println(obj);
- 转发
request.getRequestDispatcher("/b").forward(request,response);
- 重定向:
response.sendRedirect(request.getContextPath() + "/b");
3.转发和重定向的相同点和不同点:
- 相同点:
都可以完成资源跳转
- 不同点:
* 触发对象不同:
转发是request对象触发的,重定向是response对象触发的
* 请求次数不同
转发是一次请求,浏览器地址栏上地址不会变化,重定向是两次请求,浏览器地址栏上的地址发生变化[/a-->/b]
* 路径不同
重定向的路径需要加webapp的根路径,转发是在本项目内完成资源跳转
* 可跨范围不同
重定向可以完成跨项目跳转,跨app跳转资源
4.跳转的下一个资源可以是什么?
- 跳转的下一个资源可以是web服务器中任何一种资源:可以是Servlet,也可以是html,也可以是JSP...
5.什么时候采用转发,什么时候采用重定向?[大部分情况下都使用重定向]
* 若想完成跨app跳转,必须使用重定向
* 若在上一个资源中向request范围中存储数据希望在下一个资源中从request范围中将数据取出必须使用转发
* 重定向可以解决浏览器的刷新问题
6.重定向原理是什么?
a.response.sendRedirect("/jd/login");
b.程序执行到以上代码,将请求路径/jd/login反馈给浏览器,
c.浏览器自动又向web服务器发送了一次全新的请求:/jd/b
d.浏览器地址栏上最终显示的地址是:/jd/login
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!