servlet请求转发的三种方式

servlet中的请求转发主要有三种方式:

1、  forward:是指转发,将当前request和response对象保存,交给指定的url处理。并没有表示页面的跳转,所以地址栏的地址不会发生改变。

2、  redirect:是指重定向,包含两次浏览器请求,浏览器根据url请求一个新的页面,所有的业务处理都转到下一个页面,地址栏的地址会变发生改变。

3、  include:意为包含,即包含url中的内容,进一步理解为,将url中的内容包含进当前的servlet当中来,并用当前servlet的request和respose来执行url中的内容处理业务.所以不会发生页面的跳转,地址栏地址不会发生改变。

 

测试如下:

首先编写三个html界面:分别是登录界面:login.html;登录成功界面:success.html;登录失败界面:fail.html.

之后,处理登录逻辑的servlet类如下:


运行后如果输入正确的用户名密码,则执行include方法,界面显示:include包含。 登录成功!并且地址栏地址未改变,若是输入错误登录名或者密码,界面显示:登录失败! 并且地址栏地址改变。其中要注意的是sendRedirect方法中在要跳转的页面url前必须加上当前web程序路径名,这个路径通过request.getContextPath()可以得到。

 

如果吧其中include方法改为forward方法:

登录时输入正确信息,则跳转的页面地址不变,显示:登录成功!不包含url中的内容。

 

总结如下:

redirect与include、forward的区别在于是不是同一个Request,redirect会有两次交互。

include与forward的区别在于输出的内容,include包含本身servlet与跳转页面内容的结果,而forward不包含本身servlet的内容。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值