仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 469|回复: 12
打印 上一主题 下一主题

[学习教程] 发布一篇HttpSession的线程平安成绩及注重事项

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-18 11:19:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
诸如RMI,EJB等一些技术并不是你说的那么复杂,而是它们把一些复杂的工具封装成不复杂的工具了,理解这些工具是需要些时间。我问你,.net网页编程里有这些工具吗?要简单多少?。
HttpSessionsession= request.getSession();
List<Product>list=session.getAttribute("productCart");
myService.save(list);//保留购物车数据到数据库
这个对象会被屡次利用,也会被统一个用户的多个页面利用,以是他关于体系来讲是线程不平安的。
好比用户在从产物列内外面选择产物,这面选择3种,他点了检察购物车
该用户还开了另外一个页面,持续选择产物。
此时,在显现购物车的页面,有大概运转在一半时,其已选择的产物列表,并另外一个页面的操纵修正了。以是显现的产物数目有大概并非3种。
由于session必要保持以后用户的信息,以是其在多个线程里是共享的。以是是线程不平安的。
不外,这个是外表征象,我们只需准确利用事件,包管数据的正确性,外表的成绩能够不必管它。
我们能够把session内里的数据别的保留到一个新的数据对象里,这个对象不再由于session的改动而呈现变化。这个对象传送给营业层举行事件处置,包管数据级其余正确。
万万不要把session,大概session内里的对象间接传送给营业层,由于你的营业处置一半时,一样大概呈现session对象被改动的情形。有大概形成主要数据呈现偏向。
举例:
session对应三个产物,
事件内里轮回了产物,并盘算了总代价,
盘算终了,筹办保留时,session变了,产物酿成了4个。
此时入手下手保留。产物保留了4个,可总代价却仍是3个的。
呈现了数据纷歧致。
修正后的例子
session对应三个产物
从头天生一个产物对象数组,把session数据复制过去,然后传送给营业层
事件内里轮回盘算总代价
盘算终了,此时session变了,但其实不影响我们这个新的产物数组对象
保留,三个产物,代价也准确。
HttpSessionsession= request.getSession();
List<Product> list=session.getAttribute("productCart");
List<Product>listNew=newArrayList<Product>();
ProductpNew;
for(Productp:list){
 pNew=newProduct();
 pNew.setProductId(p.getProductId());
 //别的的复制参数的语句
 listNew.add(pNew);//保留到新的列内外面
}
myService.save(listNew);//保留购物车数据到数据库,这个是平安的
总结:
有些线程平安成绩是很潜伏的,等你出了成绩,极可能基本不以为会是那边出的成绩。记着一点,Java内里的对象传送的是对象的援用,只需2个中央用了不异的援用,则别的中央的变化,这一面也会变化。
原文:http://www.java2000.net/p9667

你精通任何一门语言就最强大。现在来看,java的市场比C#大,C#容易入手,比较简单,java比较难
沙发
 楼主| 发表于 2015-1-20 20:20:07 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
山那边是海 该用户已被删除
板凳
发表于 2015-1-21 10:43:15 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
若相依 该用户已被删除
地板
发表于 2015-1-24 15:37:56 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
再见西城 该用户已被删除
5#
发表于 2015-1-25 08:40:17 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
莫相离 该用户已被删除
6#
发表于 2015-2-6 18:26:45 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
小魔女 该用户已被删除
7#
发表于 2015-2-18 02:01:24 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
乐观 该用户已被删除
8#
发表于 2015-2-27 21:38:19 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
变相怪杰 该用户已被删除
9#
发表于 2015-2-28 03:42:14 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
只想知道 该用户已被删除
10#
发表于 2015-3-9 20:31:34 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
admin 该用户已被删除
11#
发表于 2015-3-9 20:55:12 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
透明 该用户已被删除
12#
发表于 2015-3-17 01:08:57 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
不帅 该用户已被删除
13#
发表于 2015-3-23 10:40:34 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-28 17:23

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表