背景

一个简单的数据查询功能,列表页面有“查看详情”按钮,跳转详情页面时列表的一条记录信息需要传递到详情页面;而详情页面有“返回”按钮,返回的同时也需要将原列表的查询条件回显。

跳转方式直接是 window.location.href,一个典型的跨页面信息传递,属于不同页面之间共享信息的情况。

那么跨页面共享信息的方式有哪些呢?本文将介绍三种方式。

URL参数传递

列表页面的查询参数,可以通过URL的方式传递到下一个详情页面,设置到隐藏表单域中;然后在详情页面返回时,将隐藏表单域中的信息一并拼接到url参数后面返回。

设置隐藏表单域有一个好处,查询条件对详情页面没有用,仅仅作为返回上一个页面时的条件回传,所以可以直接将隐藏表单信息直接拼接到url中,按钮事件如下:

/*** 返回按钮的事件*/
function goBack(){//form表单隐藏域有上一个页面传递过来的参数var query = $("#hiddenForm").serialize();//返回到列表页面window.location.href="dataList.jsp?isBack=true&"+query;
}

cookie传递

对于js对象信息的传递,可先将对象序列化为json字符串,再通过document.cookie的方式写入cookie,然后在下一个页面解析cookie,转换为JSON对象处理。

上述需求中在跳转查看详情页面时,因为当前选中的记录信息已经查询出来了,到了详情页面可以直接使用而不再请求后台。处理方式如下:

第一步,将该条记录序列化后写入cookie中,再跳转。

var currentData = null;
var allDatas= new Array();
function showDetail(index){//将当前记录写入cookiecurrentData = allDatas[index];document.cookie = "currentData="+JSON.stringify(currentData);var url = detail.jsp?now=1";window.location.href = url;
}

第二步,跳转页面加载事件中解析cookie信息:

var currentData=null;
+function ($) {var strCookie = document.cookie;var arrCookie=strCookie.split("; ");for(var i=0;i<arrCookie.length;i++){var spliit=arrCookie[i].split("=");if(spliit[0]=='currentData'){currentData= $.parseJSON(spliit[1]);break;}}//解析完成后立即清理cookiedocument.cookie="currentData=";
}(jQuery);

cookie使用不当,可能会出现问题,主要体现在一个页面上如果存入cookie的信息过多,会出现请求头域过长,后台报异常的问题

我的一个页面有三个列表,初始时所有需要传递的信息包含四五个JSON对象,在不清楚这些数据的总大小的情况下将所有需要传递的数据都序列化到cookie中,然后就出现头域超长问题了。

异常信息如下:

信息: Error parsing HTTP request header
Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Request header is too large

此时超长的cookie信息如下(主要是几个序列化的大JS对象):

cookie可以使用,只要注意一下只针对适当、必要的大对象通过cookie方式传递,而且在解析完后立即清理无用cookie信息;其他可以通过URL或者现场查询的方式获取的数据不用该方式传递,控制cookie信息的长度即可。

重发请求获取共享数据

最后一种,就是必要的重复查询。即使上一个页面已经查过一次数据了,但是当前页面还是需要发起相同的请求来获取数据。可以这么理解:这些数据其实不是共享数据,只是相同请求、并且请求响应数据不会发生变化而已。

此时突然想到可以用Ehcache页面缓存框架,将这些亘古不变的请求缓存起来,那么页面重复请求也可以提升页面的响应效率的。

启示录

我这个毕业六年的程序员还没有对简单工作产生不良情绪呢,还总能体会到编程无止境、IT技术浩瀚、学海无涯的,个人知识太少的渺小感,我心单纯不减当年哪!

文档写的完美吗,脚本能不能写个程序自动化呢?
复制粘贴也是分境界的,低级的境界就是仅仅是复制粘贴了,至高的境界应该是这样的:

复制之前看看代码结构,大致了解下这段代码的作用;粘贴之后检查下有没有需要修正的地方,代码格式有没有问题;jsp页面引用文件中有没有什么是当前页面不需要的,无关的变量能不能去掉?

如果是自己写的代码,应该看看有没有值得优化的地方,过去编码时有没有特别的想法;如果是别人的代码,更应该看看怎么回事了,别人的代码有什么值得借鉴的地方,有什么要改正的地方。如果仅仅因为功能实现了,而结构糟糕的烂代码,重构一下又何妨?被我粘过来就是我参与的代码了,我有责任保证我提交的文件的优雅可读。

哈哈,像我这么单纯的技术人员,哪位网友的单位好,推荐一下把我收了吧!

简单知识——跨页面信息传递相关推荐

  1. python 爬取网页 通知消息_python简单爬取页面信息及实现打开、关闭浏览器

    声明:本文仅是为了学习而举例说明python的强大,禁止用于不良目的! 1.python可以打开浏览器并浏览网页,并且保存网页内容到本地硬盘 实现代码如下: import urllib import ...

  2. 【页面传值6种方式】- 【JSP 页面传值方法总结:4种】 - 【跨页面传值的几种简单方式3种】...

    页面传值--最佳答案6种方式: 一. 使用QueryString变量 QueryString是一种非常简单也是使用比较多的一种传值方式,但是它将传递的值显示在浏览器的地址栏中,如果是传递一个或多个安全 ...

  3. 使用Cross-Page Postback(跨页面提交)在页面间传递数据

    页面间传递数据的几种方法 在页面间传递数据时,我们有以下几种选择: 1.Query String 一个很常见的方法,Query String是URL中问号之后的那一部分.其优点在于它是轻量级的,不会给 ...

  4. JSP中如何把一个页面的信息传递到另一个页面来

    JSP中如何把一个页面的信息传递到另一个页面来 前言:        在做项目的某些特定的情况下,我们需要把这个页面的数据传递到另外一个页面来,在到后端来进行操作:那又哪些方法来实现呢?哪个方法是最好 ...

  5. 跨页面清除Cookie信息

    跨页面清除Cookie信息 跨页面清除Cookie信息 解决方法 跨页面清除Cookie信息 最近做到了个简单的小功能,记录在cookie里的信息需要清除,Cookie信息在A页面记录,然后去B页面可 ...

  6. 在java里如何跨网页传参_【页面传值6种方式】- 【JSP 页面传值方法总结:4种】 - 【跨页面传值的几种简单方式3种】...

    JSP 页面间传递参数是项目中经常需要的,这应该算是 web 基本功吧. 试着将各种方式总结下来,需要时可以进行权衡利弊选择最合适的方式. 1. URL 链接后追加参数 URL 后面追加参数 resp ...

  7. 在微信小程序中怎么让一个页面的信息传递到另一个页面

    首先需要在前台搭建好需要展示的那个页面. <!--pages/login/login.wxml--> <view class='nav'>输入个人信息</view> ...

  8. WPF跨页面传递数据

    WPF跨页面传递数据,如何在一个页面得到另个页面的数据,跨页面传递数据我觉得还是比较常用也比较重要的一个点,在传递数据的情况中无非就是A页面打开B页面把A页面的数据传递到B页面,或者就是A页面打开B页 ...

  9. 使用Jsoup实现简单的页面信息爬取

    使用Jsoup实现简单的页面信息爬取 首先,简单说一下个人对爬虫的理解(比较简单,以后再完善):爬虫,简单点就是从网站上来爬取你所需要的信息.从这个功能考虑的话,也就简单的分为了一下几步(本篇主要就此 ...

最新文章

  1. 【算法】图(一)拓扑排序的实现 图的邻接表算法 判断是否图G中存在环
  2. java网络编程Socket中SO_LINGER选项的用法解读
  3. mysql 输出参数 sql语句_MySQL: 详细的sql语句
  4. 中国计算机学会通讯下载工具(简易爬虫)
  5. Python处理mongo结果中的ObjectId类型为字符串
  6. 开课吧课堂之未被捕获的异常
  7. 好评度很高的通用基础库,代码写的不错!
  8. 吸毒女5次搬家躲粉友:想给女儿干净环境
  9. 多年前的csdn账号找回啦
  10. 前端vue生成二维码,再合成海报图片
  11. Linux文件压缩解压命令
  12. web后端开发php,web后端开发主要做什么?
  13. 鸿蒙跟海思是什么,华为到底还有多少麒麟9000?又一款旗舰曝光,出场即是鸿蒙...
  14. 计算机网络课程思政教学目标,计算机学院举行课程思政示范教学活动
  15. office2010在安装过程中出错Error 1935的解决方法
  16. c1xx : warning C4199: C++/CLI、C++/CX 或 OpenMP 不支持两阶段名称查找;请使用 /Zc:twoPhase-
  17. 古体字与简体字对照表_常用繁体字与简体字对照表
  18. linux排行榜网站,DistroWatch网站搞的Linux国际排名为它赢得了不少的流量
  19. chrome播放rtsp视频使用vgx插件
  20. QT错误1-error: invalid use of incomplete type ‘class xxx‘

热门文章

  1. 数据库系统之:关系代数详解-超详细
  2. NGINX中如何根据客户端IP地址控制访问
  3. 手把手教你制作一目了然的可视化地图
  4. 提高带宽利用率!为什么要Pacing?
  5. 手机里微信更换了头像电脑没同步
  6. 我的世界java甘蔗机_萌新如何建造我的世界自动化甘蔗收割机攻略
  7. C# 线程的挂起与唤醒 (AutoResetEvent,ManualResetEvent)
  8. PMOS与NMOS场效应管相关知识点
  9. 带你入门NoSQL(真的是太全了)
  10. python 爬取 网易翻译