Servlet转发和重定向

转发和重定向:解决页面跳转问题

一、转发:

转发的作用在服务器端,当前端将请求发送给服务器,服务器转发给其他资源,共同完成一次请求处理。

代码:

request.getRequestDispatcher("/servlet名称").forward(request,response);

forward携带请求和响应对象,传给同一个web项目下的其他servlet或页面。在服务器内部跳转,地址栏不发生变化,属于同一次请求。

二、重定向:

重定向作用在客户端,客户端发送请求给服务器,服务器响应客户端一个新的请求地址,客户端重新发送请求。因此不属于同一次请求,客户端会发送多次请求(至少两次)。

代码:

response.sendRedirect("servlet名称");

重定向不携带数据,只进行页面的跳转。

这里衍生出一个问题:sendRedirect("servlet名称")里是否要加"/",变成sendRedirect("/servlet名称")?

"/"代表的是根目录。但前端和后端的根目录并不相同。

前端:Http://localhost:8080

后端:Http://localhost:8080/项目名

因此当项目名什么也没写时,可以用/servlet名称,也可以用servlet名称。如果项目名存在,写servlet名称即可,或者也可以写完整的路径。

三、两者特点对比:

转发

重定向

转发是服务器行为

重定向是客户端行为

转发是浏览器只做了一次访问请求

重定向是浏览器做了至少两次的访问请求

转发浏览器地址不变

重定向浏览器地址改变

转发两次跳转之间传输的信息不会丢失,所以可以通过request进行数据的传递

重定向两次跳转之间传输的信息会丢失(request范围)

转发只能将请求转发给同一个Web应用中的组件

重定向可以指向任何的资源,包括当前应用程序中的其他资源、同一个站点上的其他应用程序中的资源、其他站点的资源

四、什么时候用转发,什么时候用重定向?

当只需要进行页面跳转时,建议用重定向。

当需要携带请求对象,响应对象时,建议用转发。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值