跟小博老师一起学Servlet ——Servlet之客户端跳转

客户端跳转适用于跨域的场景,对于跨几个servlet的业务流程,客户端跳转就不再适用。因为它不能将请求传递到下个资源,针对这些需求就要采用服务端跳转。

概念

所谓服务端跳转就是在服务器内部实现跳转,它不像客户端跳转要借助于浏览器。此种跳转适用于服务器内部间的数据传递,相对客户端跳转速度也比较快。

跳转流程

如有这样一个需求,从A页面上向某个Servlet发起请求,servlet处理完成后返回B页面。

请看下面的示意图

可以看出浏览器与Web容器只交互了一次,servlet直接跳转到页面B,最后返回给浏览器。

实现代码

服务器跳转要借助于RequestDispatcher接口中的forward()方法,此接口用来接收请要并将请求转发到任意资源,比如servlet、html、jsp等。Web容器负责实例化RequestDispather,调HttpServletRequest中的getReqeustDispatcher()取得实例后,再将要请求与应答参数传递给forward()方法,就好实现服务器跳转。

应用场景

业务需要同站点下多个资源按指定顺序协同工作时,应采用服务器跳转。servlet跳到servlet、servlet跳到jsp、jsp跳到jsp,通常要传递数据,使用服务器跳转速度更快、效率更高。如要跳到其它站点,建议使用客户端跳转。

与客户转比较

客户端跳转浏览器请求Web服务器二次,服务器跳转只请求一次。采用服务器端跳转,浏览器地址栏显示的就是请求的URL,而客户端显示则是最终取到的资源URL。

二者跳转方式各自有对应的使用场景,大家根据业务的需求选择合适的就好。注意的是在同一servlet中不能编写二次跳转代码,且一旦进行了跳转也不能再以流的方式向客户端响应。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容