jsp实现线程安全访问

bryan_lin 2009-03-18 02:50:53
譬如要对一篇文章(id=10)进行编辑,即edit.jsp?id=10
这时管理员a访问edit.jsp?id=10取得编辑权限之后
如果管理员b同样访问edit.jsp?id=10则应该提示正在被编辑

问题是这个应该怎么实现?
我的想法是在数据库中对10的文章进行标记,即标记为正在被a编辑
但是异常状况的时候(譬如浏览器不正常退出)的时候 怎么取消该标记 使得其他人能够正常编辑?

谢谢~
...全文
95 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bryan_lin 2009-03-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zou_wei_forever 的回复:]
可以用乐观锁实现,在数据被保存到数据库是进行检查:
在表中增加一个表示版本的字段,第一个人读出出来那笔记录更新后版本号为1,第二个人读出出来那笔记录版本号为2,当第二个人再保存后发现他的数据的版本跟数据库中那笔记录的版本不符,就不允许修改。
[/Quote]

这样的话 第二个人读出来做出修改之后却不能保存 用户体验太差
想要的效果是 第二个人都不能往外读~
jishu_vip 2009-03-18
  • 打赏
  • 举报
回复
楼主的方法也是可以的,只是文章正在编辑的时候,对文章增加一个标识位,表示正在编辑。

解决异常状况(如浏览器不正常退出):
同时数据库中记录正在编辑的用户名,间隔一段时间判断一下该用户名是否还为登录状态(或则其它用户编辑的时候也同时进行判断之前记录的用户名是否还为登录状态)如果不是登录状态则取消该文章为正在编辑。

sjkof 2009-03-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zou_wei_forever 的回复:]
可以用乐观锁实现,在数据被保存到数据库是进行检查:
在表中增加一个表示版本的字段,第一个人读出出来那笔记录更新后版本号为1,第二个人读出出来那笔记录版本号为2,当第二个人再保存后发现他的数据的版本跟数据库中那笔记录的版本不符,就不允许修改。

[/Quote]

同意
zou_wei_forever 2009-03-18
  • 打赏
  • 举报
回复
可以用乐观锁实现,在数据被保存到数据库是进行检查:
在表中增加一个表示版本的字段,第一个人读出出来那笔记录更新后版本号为1,第二个人读出出来那笔记录版本号为2,当第二个人再保存后发现他的数据的版本跟数据库中那笔记录的版本不符,就不允许修改。
downloadvip 2009-03-18
  • 打赏
  • 举报
回复
顶了
老黄瓜_ 2009-03-18
  • 打赏
  • 举报
回复
楼主可以用 数据集合(list) 存储 文章 id 以及对应的修改时间 当第二个人要去 访问的时候 就遍历 这个数据集合(list) 另外起线程扫描 当前时间 如果时间过长 就从集合中删除掉 该文章

个人想法 没有考虑过 修改文章数据量大的效率,性能 情况
therehere 2009-03-18
  • 打赏
  • 举报
回复
帮顶!!!!!!!!!!!!!!!!!!!!!!

81,111

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧