两者比较如下:

跳转类型  客户端请求次数 服务端响应次数 URL变化 站外跳转            作用域
服务器跳转     1     1    无   否 pageContext、request、session、application
客户端跳转     2     2    有   能 session、application

请求次数与响应次数

服务端跳转:客户端发起一次请求,服务端接收请求后,将结果跳转到另一个页面,作为此次请求结果返回给客户端
客户端跳转:客户端发起一次请求,服务端返回此次请求的结果,结果内容是一个URL地址,客户端拿到此URL,再次发送一次请求,服务端再次响应最终结果给客户端

所以,对于服务器跳转,请求次数和响应次数均是1次,对于 客户端跳转,请求次数和响应次数均是2次

 

URL是否变化

服务端跳转:只是服务端内部不断进行forward,不管进行多少次forward,客户端是不知情的,服务端将最后的结果返回给客户端,即完成此次请求。客户端的URL没有变化。
客户端跳转:客户端发起两次请求,URL发生变化(PS:除非闲得蛋疼,两次请求的URL地址是一样的)

能否进行站外跳转

服务端跳转:不能进行站外跳转。服务端请求只能在服务内,将请求响应的结果不断的跳转, 使用的都是服务内部的资源。不能跳到其他服务上去。
客户端跳转:可以。直接跳转到其他服务的URL即可

作用域

以jsp的四大作用域,关于作用域详见地址  http://www.cnblogs.com/mengzhen123/p/5968831.html

pageContext:当前页面

request:当前请求

session:当前会话

application:整个应用。狭义的理解为application的生命周期为 服务的开启到关闭

从上面我们说请求次数和响应次数就可以知道,对于客户端跳转,pageContext、request发生了改变。因为客户端URL发生了变化,pageContext即发生了变化,客户端是发送了是两次请求,request即发生了变化。所以如果使用客户端跳转的时候,共享数据建议存放在session中。

服务端为什么没有发生变化,我们从selvet实现服务端跳转方法forward不难看出, forward方法调用时,带着request、response参数,即不论服务端进行多少次forward,都是使用同一个request、response。所以pageContext、request作用域并没有变化。共享数据放在这两个作用域的对象中,依然可以取到。

PS:selvet、Struts2、SpringMVC  实现请求跳转的方式有差异,但是其本质是一样的。

Web开发中的服务器跳转与客户端跳转的更多相关文章

  1. Web开发中的相对路径和绝对路径

    在学习HTML的时候一定会遇到引入文件和链接跳转页面,比如:JS文件.CSS文件.Image图片.我们就会考虑是相对路径和绝对路径的问题.下面PHP程序员雷雪松就详细讲解下Web开发中的相对路径和绝对 ...

  2. 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践

    提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...

  3. Redis在WEB开发中的应用与实践

    Redis在WEB开发中的应用与实践 一.Redis概述: Redis是一个功能强大.性能高效的开源数据结构服务器,Redis最典型的应用是NoSQL.但事实上Redis除了作为NoSQL数据库使用之 ...

  4. Web开发中的主要概念

    一.Web开发中的主要概念1.静态资源:一成不变的.html.js.css2.动态资源:JavaWeb.输出或产生静态资源.(用户用浏览器看到的页面永远都是静态资源) 3.JavaEE:十三种技术的集 ...

  5. web开发中目录路径问题的解决

    web开发当中,目录路径的书写是再常用不过了,一般情况下不会出什么问题,但是有些时候出现了问题却一直感到奇怪,所以这里记录一下,彻底解决web开发中路径的问题,开发分为前端和服务端,那么就从这两个方面 ...

  6. [译]如何在Web开发中使用Python

    [译]如何在Web开发中使用Python 原文:HOWTO Use Python in the Web 摘要 这篇文档展示了Python如何融入到web中.它介绍了几种Python结合web服务器的方 ...

  7. SpringBoot学习(七)-->SpringBoot在web开发中的配置

    SpringBoot在web开发中的配置 Web开发的自动配置类:在Maven Dependencies-->spring-boot-1.5.2.RELEASE.jar-->org.spr ...

  8. 下面哪项技术可以用在WEB开发中实现会话跟踪实现?

    下面哪项技术可以用在WEB开发中实现会话跟踪实现? A:session B:Cookie C:地址重写 D:隐藏域 答案:ABCD 会话跟踪是一种灵活.轻便的机制,它使Web上的状态编程变为可能. H ...

  9. Web开发中的18个关键性错误

    前几年,我有机会能参与一些有趣的项目,并且独立完成开发.升级.重构以及新功能的开发等工作. 本文总结了一些PHP程序员在Web开发中经常 忽略的关键错误,尤其是在处理中大型的项目上问题更为突出.典型的 ...

随机推荐

  1. CGI FastCGI WSGI 解析

    我们将服务端程序分为了web服务器和应用程序服务器. web服务器是用于处理HTML文件,让客户可以通过浏览器进行访问.主流的有apache,IIS,nginx,lghttpd等. 应用服务器处理业务 ...

  2. VMware 虚拟化编程(2) — 虚拟磁盘文件类型详解

    目录 目录 前文列表 虚拟磁盘文件 VMDK 用户可以创建的虚拟磁盘类型 VixDiskLib 中支持的虚拟磁盘类型 虚拟机文件类型 前文列表 VMware 虚拟化编程(1) - VMDK/VDDK/ ...

  3. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_07 Collections工具类_1_Collections集合工具类的方法

    这是一个个的添加的方式 参数是个可变的元素.可以传递任意多的元素 shuffle打乱集合元素顺序

  4. clinical-逻辑核查数据的操作

    1. 前端页面样式 2. 前端代码 添加: 展示: 修改 删除 3. 后台代码 封装的DAO类数据 # coding: utf-8 from pdform.services.db.dbCore imp ...

  5. Win10.去掉任务栏缩略图(just4explorer)

    ZC: 该方式只适用于 Explorer(即 WIndows任务管理器),Why? ∵ 看文中设置 regedit 的路径,它设置的就是 Explorer下的键值 ... 1.HKEY_CURRENT ...

  6. 关于存储过程的一些sql

    1.关于事务的回滚Set XACT_ABORT ON; 开启为on时 ,如果事务语句产生运行错误 ,将整个事务终止进行回滚,Off时只回滚产生错误的语句. 2.获取事务语句中上一次插入值的行号@@ID ...

  7. Cors 跨域 共享

    CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing). 它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从 ...

  8. Redis介绍及入门安装及使用

    Redis介绍及入门安装及使用 什么是Redis Redis is an open source (BSD licensed), in-memory data structure store, use ...

  9. [Git] 004 初识 Git 与 GitHub 之查看历史记录

    在 GitHub 的 UI 界面使用 Git 查看历史纪录 1. 右侧有个 history 2. 点击后跳转页面 3. 点击相应标题(commit 时写的),进入相应版本(历史) 4. 我选择了 I ...

  10. [Python3 填坑] 018 组装类的几个例子

    目录 1. print( 坑的信息 ) 2. 开始填坑 2.1 MetaClass 举例 2.2 type 举例 2.3 MetaClass 举例 1. print( 坑的信息 ) 挖坑时间:2019 ...