JavaWeb之【转发与重定向】

在一个web应用中应该如何完成资源的跳转

第一种方式:转发

代码

// 获取请求转发器对象,并调用请求转发器对象的方法forward完成转发
request.getRequestDispatcher("/dept/list").forward(request, response);

注意

1、不论转发多少次,都是一次请求。【即转发是一次请求】

第二种方式:重定向

代码

// 重定向时的路径中需要以项目名开始

response.sendRedirect(request.getContentPath() + "/b");

注:

(1)相当于response对象把/项目名/b响应到浏览器了

(2)重定向是重新发送了一次请求,不是转发了请求,相当于发送了两次请求

注意

1、javabean的规范

(1)有无参数的构造方法

(2)属性私有化

(3)对外提供setter和getter方法

(4)重写toString()

(5)重写hashCode + equals

(6)实现java.io.Serializable接口

转发和重定向的区别

形式上的区别

1、转发:(一次请求)

(1)在地址栏上发送的请求是:http://localhost:8080/servlet/a,最终请求结束之后,浏览器地址栏上的地址还是这个,不变。

(2)转发是一次请求,假如转发的请求是get,若转发的下一个Servlet中没有提供doGet方法,则会405错误

(3)转发可能会存在刷新问题,比如一次请求是往数据库添加数据,如果多次刷新,则会添加多条相同的数据。

2、重定向:(两次请求)

(1)重定向会导致浏览器地址栏上的地址发生改变。

(2)重定向可以解决刷新问题。

转发和重定向的选择

1、转发

如果在上一个Servlet当中向request域中绑定了数据,希望从下一个Servlet当中把request域里的数据取出,使用转发机制

2、重定向

剩下的所有请求都使用重定向(使用较多)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值