请求转发和重定向的区别

OCEAN大大 2019-09-19 12:31:44
请求转发和重定向的区别 1.请求转发是在服务器内部的跳转,整个过程中只有1个请求,重定向是在客户端的跳转,产生了新请求 2.请求转发后,地址栏上的url不变,可以继续使用request中的数据,而重定向后,url会改变,就不能使用原request中的数据 3.请求转发只能跳转到服务内部的资源,重定向可以访问服务器外部的资源 请求转发和重定向时的路径问题 转发或重定向时路径上带”/”和不带”/”的区别 1)对于重定向 如果资源的路径前面有”/”,此时”/”参照web服务器的根路径,会丢失web应用的根路径,解决方案:在”/”前面加上request.getContextPath() response.sendRedirect(request.getContextPath()+"/show.jsp"); 如果路径前没有”/”,那么路径相对于当前的servlet或jsp的路径的,是一个相对路径 2)对于请求转发 如果资源的路径前没有”/”,那么路径相对于当前的servlet或jsp的路径;如果路径前带了”/”,此时”/”参照web应用的根路径 总结:如果请求是客户端的请求(发生在客户端的跳转),那么路径前不要带”/”, 因为带了”/”会丢失web应用的根路径 下面几种情况是客户端的请求:重定向,通过表单发的get/post请求,超链接发的get请求,Js发的请求location.href=xxx 如果请求是在服务器端发生的,例如请求转发,那么请求路径前可以带或不带”/”. 在jsp页面上,用pageContext.request.contextPath来代替request.getContextPath()例如:<ahref="{pageContext.request.contextPath}来代替request.getContextPath()例如: <a href="pageContext.request.contextPath来代替request.getContextPath()例如:<ahref="{pageContext.request.contextPath}/req.action">请求servlet
...全文
642 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
horizon_zpy 2019-10-24
  • 打赏
  • 举报
回复
嗯,发到这也不错的,看的人多,谢谢分享。😊
OCEAN大大 2019-10-24
  • 打赏
  • 举报
回复
大佬 我是第一次发不知道怎么发 还在学校阶段
街头小贩 2019-09-28
  • 打赏
  • 举报
回复
建议这位同鞋把你的好文章写到blog中,这样会有更多人受益

10,608

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 其他
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧