Topic: 怎么控制一个页面只允许一个用户操作?急!!!

  Print this page

1.怎么控制一个页面只允许一个用户操作?急!!! Copy to clipboard
Posted by: huozhe
Posted on: 2006-11-24 15:28

怎么控制一个页面只允许一个用户操作???
比如:一个修改页面modify.jsp,A用户进入modify.jsp页面进行修改信息时,则控制不允许其它用户进入modify.jsp页面。

2.Re:怎么控制一个页面只允许一个用户操作?急!!! [Re: huozhe] Copy to clipboard
Posted by: huozhe
Posted on: 2006-11-24 15:31

请各位大虾们多多指点啊~~~非常感谢!
希望大家多多发表意见!!!

3.Re:怎么控制一个页面只允许一个用户操作?急!!! [Re: huozhe] Copy to clipboard
Posted by: zcjl
Posted on: 2006-11-24 16:57

这样的需求十分“无理”,也很不好实现,因为http请求是无状态连接,很难判断A用户是否离开modify.jsp

要么说服需求方,放弃这样的想法
要么,就得大量运用客户端的js脚本去记录和判断用户行为

4.Re:怎么控制一个页面只允许一个用户操作?急!!! [Re: huozhe] Copy to clipboard
Posted by: YuLimin
Posted on: 2006-11-24 19:50

可以采用FileLock模式解决,进入时JSP里,Lock一下,提交后UnLock,当然可能存在N多情况死锁,可以定时清除Lock来解决,从你目前的需求可以这样实现,自己要记录与区分是否是用户A。

5.Re:怎么控制一个页面只允许一个用户操作?急!!! [Re: huozhe] Copy to clipboard
Posted by: hawker
Posted on: 2006-11-24 22:06

可以这样
再这个jsp页面请求之前用一个filter来截获请求,判断是否已经有用户请求这个页面。
但是http是无连接的,你不能要求用户再打开这个页面以后可以向你报告它的状态,所以如果需要防治资源的并发访问的话,最后是使用事务的隔离方式,通过系统控制用户对资源的访问。

6.Re:怎么控制一个页面只允许一个用户操作?急!!! [Re: huozhe] Copy to clipboard
Posted by: zilanfeixue
Posted on: 2006-11-27 12:32

从一个容量为1的池中取连接,这样子?

7.Re:怎么控制一个页面只允许一个用户操作?急!!! [Re: hawker] Copy to clipboard
Posted by: huozhe
Posted on: 2006-11-27 13:00

hawker wrote:
可以这样
再这个jsp页面请求之前用一个filter来截获请求,判断是否已经有用户请求这个页面。
但是http是无连接的,你不能要求用户再打开这个页面以后可以向你报告它的状态,所以如果需要防治资源的并发访问的话,最后是使用事务的隔离方式,通过系统控制用户对资源的访问。

请问你那有没有filter的实例啊?谢谢了!

8.Re:怎么控制一个页面只允许一个用户操作?急!!! [Re: huozhe] Copy to clipboard
Posted by: zcjl
Posted on: 2006-11-27 13:26

不管是FileLock,还是Filter,都无法判断用户是否在未做任何操作下离开这个modify.jsp,因为这根本就是客户端的行为而http是无状态的连接

9.Re:怎么控制一个页面只允许一个用户操作?急!!! [Re: huozhe] Copy to clipboard
Posted by: floater
Posted on: 2006-11-27 23:40

use a db column as a flag ....

10.Re:怎么控制一个页面只允许一个用户操作?急!!! [Re: huozhe] Copy to clipboard
Posted by: vteam
Posted on: 2006-11-29 15:35

的确是非常难实现,还是和HTTP协议的原理有冲突,怎样解决都会出现一些意想不到的问题的。建议通过授权来做。

11.Re:怎么控制一个页面只允许一个用户操作?急!!! [Re: huozhe] Copy to clipboard
Posted by: huozhe
Posted on: 2006-12-01 09:53

感谢大家的回复~!!!
use a db column as a flag ....
这个确实可以,但现在要解决的是有很多这样的页面都要控制。
如果只有一两个页面,用这个方法还是很好的。
多了就想用一个通用的方法解决。。。
               求助中。。。

12.Re:怎么控制一个页面只允许一个用户操作?急!!! [Re: huozhe] Copy to clipboard
Posted by: 原始社会人
Posted on: 2006-12-02 22:29

package bean;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;

public class ConnectionFactory{

private static ConnectionFactory instance = null;
private static String key = "key";
private DataSource dataSource = null;
private ConnectionFactory(){}

public static ConnectionFactory getInstance() throws Exception{
// 单例doublecheck
if(instance == null){ //t3
  
   synchronized(key){ // (t2) //////t2
      
       if(instance == null){ // 控制只产生一个实例,jndi
       instance = new ConnectionFactory();
         instance.init();
       }
      }
   }
   return instance;
}

private void init() throws Exception{
//初始化jndi tree,目的是为了获取资源(DataSource)
Context ctx = new InitialContext();
   //java:comp/env是在jndi上面lookup资源的前缀
   dataSource = (DataSource)ctx.lookup("java:comp/env/jdbc/oracle");
}

public Connection getConnection() throws Exception{
//以后统一通过这一个方法获取连接
   //ds.getConnection 从池里面获取连接,提高访问的效率
return dataSource.getConnection();
}
}
这是在一个群的共享上面下的..不知道跟楼主那个有没有关系哦 ^_^

13.Re:怎么控制一个页面只允许一个用户操作?急!!! [Re: zcjl] Copy to clipboard
Posted by: YuLimin
Posted on: 2006-12-03 18:13

zcjl wrote:
不管是FileLock,还是Filter,都无法判断用户是否在未做任何操作下离开这个modify.jsp,因为这根本就是客户端的行为而http是无状态的连接


无耻一点就是在onunload的事件中去处理离开,当然,有可能他的Browser是直接死掉,那么,后台定时30分钟的清理作用就发挥了。

db做标志,一样与FileLock模式的思路是一样的。。。:)

这个问题我们在N年前做OA时早已经实现,并且系统一直在运行使用当中,所以可以说,不存在你所说的http无状态等等这种问题,要换思路解决问题,只要解决了问题,什么方法都是OK了。:)


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923