servlet处理类似表单提交或购买删除购物车中物品用转发还是重定向技术解决方案

我认为用户能看到的每个信息,我们都应斟酌它是否妥当。


我们提交一个表单后,表单的action属性的值会填入到地址栏中(这个值一般对应的是一个servlet)。

如果服务端是转发处理相应,而不是重定向给浏览器一个新的请求链接,此时,上次请求的action依然保留在地址栏中。


这样是会出问题的,如果刷新页面将再次执行一遍servlet(因为地址栏没变,依旧指向servlet),这是一个毫无意义的页面刷新,就因为你没有思考地址栏的作用。这是用户体验上的不爽吧!


既然,转发有问题,重定向就不会了吧!它的链接刷新是有意义的(因为如果服务端用重定向跳到jsp页面,地址栏会发生变化指向一个jsp,不再是servlet,所以刷新相当于刷新jsp页面)


但是,有时为了安全考虑,我们会把页面放在WEB-INF里面,可是,这样一来重定向就不能访问WEB-INF里面的页面了。还必须用转发。


=============

解决方案:

如果用转发技术直接到jsp页面,那么刷新jsp页面时会因为地址栏还是原先的servlet而再次执行一次该servlet,但如果用重定向又无法访问web-inf目录下的jsp

      最专业的解决方法:

就是先用重定向技术将原先的表单提交servlet跳转到一个新创建的servlet(用重定向是使地址栏变成新建的servlet,该新建servlet没有任何业务操 作,只是简单的实现与jsp页面的转发交互),再通过新建的servlet转发技术(转发才可以访问web-inf目录下的jsp)跳转到jsp,该新建的servlet主要作用就是使jsp页面的地址栏不会再是表单提交的servlet,因此就不会发生刷新jsp重复提交表单的现象啦!

=============  
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值