Servlet-重定向与转发

重定向

服务器向浏览器发送一个302状态码以及一个Location消息头,浏览器收到返回消息会立即向重定向地址发出请求.

原理:

image

实现

response.sendRedirect(String url);

特点:

  • 重定向地址可以是任意地址
  • 重定向后浏览器的地址会发生变化
  • web组件不会共享同一个request和response
  • 至少两次请求

转发

一个web组件将未完成的处理通过容器转交给另外一个web组件继续完成;
如:一个组件获取数据后,将数据转发给另外一个jsp来展示这些数据

原理:

image

实现:

  • 绑定数据到request对象
request.setAttribute(String name,Object obj);
  • 获得转发器
RequestDispatcher rd = request.getRequestDispatcher(String path);//path:目标url
  • 转发
rd.forward(request,response);

特点:

  • 浏览器地址栏不会发生变化,因为转发过程在服务器内部进行
  • 转发的目标必须是同一个应用内部的某个地址
  • 所涉及的web组件共享同一个request对象和response对象
  • 转发后的语句也会执行

转发和重定向区别

转发重定向
服务器转向另一个新地址浏览器获取响应后再发一次新的请求
一个请求对象,且共享数据两次请求,不共享数据
地址栏不变地址栏改变为新的地址
新地址必须是应用内部某个地址可以是任意地址

路径问题

转发和重定向都会使用到url-路径,现有文件结构:

image
- 相对路径:从当前文件到目标文件的路径,如:

- current到target1:  index2.jsp
- current到target2:  ../d2/index.jsp
  • 绝对路径:以一个固定位置作为起始位置到达目标位置,如:

    • /scrollDemo/d1/index2.html
    • /srcollDemo/d2/index.html

使用绝对路径时:
- 链接地址、表单提交、重定向是从应用名开始写
- 转发路径是从应用名之后开始写
- 获取应用路径 request.getContextPath()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值