1.使用Session共享数据
用户在浏览网页时,由于HTTP协议是一种无状态的协议,往往在不同的页面之间存在数据交换的问题,这就需要在这些不同的页面之间共享数据。在编程实现中,我们最常见的实现方法是把要共享的数据保存到Session中。比如在用户登录的页面中把一些用户的信息保存到Session之中,然后在其他的页面中读取用户的信息。
这些共享的数据可以是字符串或者与Java的原始数据类型相关的对象,也可以是一个Java对象。
下面来看一个实际的例子。用户登录时,如果验证成功,就把登录的信息保存在一个userSession的类中,在其他的页面可以读取这个值。
下面我们来看userSession的具体代码,如例程10-1所示。
例程10-1 userSession的具体代码
|
这里只是简单地列出了一些必要的信息,可能还有更多的信息需要保存在userSession中。下面我们来看怎么使用这个类,假设有一个登录验证页面,它的代码如例程10-2所示。
例程10-2 login.jsp
|
这个登录页面的假想处理过程是这样的:
(1)获得用户登录信息。
(2)连接数据库,进行权限验证。
(3)如果验证通过,那么读取用户的注册信息。
(4)把用户的注册信息保存到一个userSession对象中。
(5)把userSession对象保存到Session内建对象中。
(6)把视图派发到下一个显示页面。
需要注意的是,session.setAttribute("userSession",user)把userSession的一个对象设置到Session中,Session只能保存对象,不能保存原生类型(即原始数据类型),比如:
|
是非法的语句。如果要把值为10的整数保存到Session中,需要使用以下的方法:
|
然后在另一个页面中使用:
|
把这个整数读取出来。
下面我们看怎么在另一个页面中把userSession对象读取出来,如例程10-3所示。
例程10-3 在另一个页面中读取userSession中的对象(welcome.jsp)
|
可以看出,通过:
|
代码来读取在前一个页面中设置的对象,然后再从这个对象中读取一些相关的值。
当然,也可以使用JavaBean的形式,如例程10-4所示,可以在login.jsp中这样使用JavaBean。
例程10-4 使用JavaBean共享数据
|
注意,这里的JavaBean的范围是Session。同样,在另一个页面中也可以使用<jsp:useBean>指令获得前面的JavaBean,如例程10-5所示。
例程10-5 在另一页面中使用JavaBean
|
在<jsp:useBean>指令中,由于指定了它的scope为Session,如果在Session中已经有一个userSession的JavaBean,那么就直接使用它;如果还没有这个JavaBean,就创建一个新的JavaBean。由于在前面的页面中已经创建了JavaBean,这里简单地读取它的值就可以了。
其实这种共享数据的方式和session.setAttribute("name","value")的本质是一样的。
在浏览器里输入:http://127.0.0.1:8080/ch10/login.html,在表单中填写任意的值提交即可看到运行的结果。
2.使用Cookie
和Session不同的是,Cookie是放在客户端的。由于客户端可能考虑安全等因素会禁止使用Cookie,这样在使用Cookie时可能会遇到一些麻烦。
下面我们来看一个使用Cookie的例子,如例程10-6所示。
例程10-6 在客户端设置Cookie(setCookie.jsp)
|
在这种方式中,首先创建Cookie,然后通过response.addCookie()方法把Cookie添加到客户端。
下面我们看怎么在另一个页面中读取这个Cookie,如例程10-7所示。
例程10-7 在另一个页面中读取Cookie(getCookie.jsp)
|
在这个页面中,首先获得客户端的所有Cookie,然后从这些Cookie中获得目标的Cookie以读取它的值。
3.使用隐含的表单
这种方式通过隐含表单的形式把数据传递到下一个页面,它有两个局限性:
◆只能在相邻的两个页面之间传递数据。
◆客户端可以通过查看网页源代码的方法获得表单中的数据,安全性不好。
简单地看一下它的使用方法:
|
在另一个页面中,通过以下的方式获得这些数据:
|
| 回书目 上一节 下一节 |
|
· SQL Server入门到精通.. · 交换技术配置手册技术.. · 超级网管员——网络应.. · 网络服务器配置与应用.. · Linux集群技术自测试题.. · JavaSript核心技术自测.. |
· ARP攻击与防范技术自测.. · 国庆挑战自己参加自测 .. · 《网管员必读—网络应.. · 历次技术自测 获奖网友.. · 51CTO国庆七天技术自测.. · 9.2.2 无线AP |
|
|||
| · 网管系统介绍 · 网络管理系统如何支撑I.. · CISSP认证成长之路 · 51CTO国庆充电专题之好.. · 网络技术经典基础教程 · 51CTO主编推荐经典专题 · RAID——磁盘阵列基础 · 充电计划之热门IT认证.. |
· 51CTO技术自测 挑战自.. · AMD Phenom三核处理器.. · 国际文档格式标准开战 · 2007年互联网大会 · 我是黑客我怕谁——讲.. · ARP攻击防范与解决方案 · Solaris 10 配置管理 · Solaris基础知识入门 |
||
|
|||
| · Java基础教程 · VPN技术 · ARP攻击防范与解决方案 · SQL Server 2005全解 · SOA 面向服务架构 · SQL Server 2005全解 · Java编程开发手册 · RAID——磁盘阵列基础 |
· 三层交换技术专题 · SQL Server入门到精通 · Windows Server 2003企.. · Windows远程桌面应用 · C#技术开发指南 · VPN技术 · C#技术开发指南 · Solaris 10 配置管理 |
||
|
|||
| · ARP攻击防范与解决方案 · VPN技术 · SQL Server 2005全解 · Java基础教程 · SQL Server入门到精通 · SQL Server 2005全解 · SOA 面向服务架构 · Java编程开发手册 |
· C#技术开发指南 · 三层交换技术专题 · C#技术开发指南 · Windows远程桌面应用 · RAID——磁盘阵列基础 · Windows Server 2003企.. · 邮件服务器专题 · wimax技术与趋势 |
||
| ·DB2 Viper快速入门 ·DB2 9数据库的镜像分割与.. |
·将XML应用程序从DB2 8.x.. ·DB2 9中的pureXML:如何.. |
| ·服务器中的“傻瓜机”在.. ·盖茨也喜欢登录Youtube看.. |
· · |
| ·体验Windows Server 2008.. ·将超星图书转成PDF文档 |
·使用 Office Communicati.. ·VMware Workstation 6.01.. |
| ·强烈质疑“步行1公里就能.. ·国庆期间新闻回顾:微软.. |
·9月第3周回顾:微软和英.. ·9月第2周回顾:四核之战.. |
| · 华为、贝恩资本22亿美元.. · NGN:下一代网络 · 网络访问中断大排查 |
· 教你使用Anti ARP Sniff.. · 网络嗅探教程:使用Snif.. · 常见病毒手工清除方法大.. |
| · C++是垃圾语言?! · 2007年IT界七大抄袭事件 · Java实用开发全集 |
· 解析Ajax开发框架 走进A.. · 基于Google Maps与Ajax.. · 基于Google Maps与Ajax.. |
| · 热门 IT 培训认证官方资.. · Ubuntu 中文开源频道 · Solaris基础知识入门 |
· Google推出唯一硬件——.. · 硬盘之父获得诺贝尔物理.. · 理性面对四核服务器选购 |
| · 甲骨文Oracle 11g正式发.. · Oracle数据库开发之PL/S.. · Oracle数据库开发基础教.. |
· 硬盘之父获得诺贝尔物理.. · 存储2006,一个并购的大.. · IDC宣布浪潮蝉联存储市.. |