一个jsp的弱问题

Frisk 2004-10-28 08:42:28
现在需要保存所有上线用户的信息。上线时只需要在用户登陆的时候保存他的信息就可以了,但离线却不知怎么实现了,因为用户如不是点击注销按钮(如:用鼠标关闭浏览器)那么就无法捕获离线事件了。

要如何能捕获离线事件啊(任何情况下)
...全文
184 点赞 收藏 17
写回复
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
sharp02 2004-10-29
联系电话:010-82645151 详细参见:www.fcsoft.com.cn
什么是eform开发平台?
eform是基于浏览器的表单自定义工具,eform是页面设计工具,eform内含大量构件.不用写一行代码便能用eform开发出来常见的功能点.

使用eForm平台有如下好处:
1、用eform平台开发能降低开发人员的技术门槛,使很低水平的人就能开发一个软件项目中常见的功能.例如数据库的数据增删改查打印等等,而这部分功能往往也占居了一个软件项目的大部分.这样一个软件项目开发成员中可以有一大部分人是中专生甚至是高中生就能胜任.从而大大降低了整个软件项目的开发成本.另一方面因为低水平的开发人员很容易招聘到,这样也使软件项目更加容易完成.

2、用eform平台开发的代码一致性比较好,以后维护升级方便.因为只有个性化的功能才需要编写事件代码.所以代码量很少,大量的调用底层的代码,这样代码的集成度高.以后维护升级时修改的代码量非常少.


3、用eform平台开发能大大提高开发效率.eform平台采用对常见的功能和控件内置的方法,使得开发一些常见的功能(如数据库的增删改查,树控件,表格控件)非常容易方便.几乎不用写一行代码.直接通过控件的拖拉然后再设置属性和事件即可完成.开发程序的工作就象是打字员的工作一样.(如图所示开发效率对比示意图)

4、用eform平台开发能很好地应对软件开发项目成员的流动的问题.因为程序员的离职而造成整个项目瘫痪的事例很多.而用eform平台,因为大家都是采用同一模式开发的表单,因而一个人开发的表单很容易被另一个人看懂和使用.这样就使开发人员的流动造成的影响大大降低.企业不再受制于人.
5、用eform平台开发可以使项目不再没完没了,无法关闭.因为可以培训最终用户中的精英,让他们掌握eform平台的使用方法,这样大多需求他们便可以自己做好,而不用麻烦软件开发商了.

eform的设计思路是将数据库程序开发中常用的控制或功能点在eform平台中设计好,通过简单的设置参数或属性即可调用.而遇到很个性化的功能点则可以用传统的代码方式进行开发.因为一个数据库程序开发中大量是增,删,改,查,打印,报表,图表,数据校验等常见的功能点,而这些功能点在eform平台中都做好了,只要简单地设置一下即可完成这些功能点,而且这个设置过程也是可视化的,有相应的设置界面.这样做这些常见的功能点就非常简单快速.而少量的特别的功能点又可通过写代码的方式来完成.也就是说在一张表单中可以一部分功能是直接通过简单的设置一下来完成,另一部分功能是用代码来硬写出来的.这样就达到了常见的功能可以直接调用eform底层的api来实现以提高开发效率,但一个表单又不限定只能实现这些常见功能,你也可随意地用代码来进行无限扩充.这样就达到了既提高了开发效率又能实现很复杂的功能.
eform开发平台分为eform.j2ee和eform.net两个版本.eform.j2ee是用java编写的,面向j2ee应用.eform.net是用.net编写的,面向.net应用.实际上整个eform开发平台共有三部分的代码,① 一部分是htc js dhtml等前台的代码,② 一部分是java的代码,③ 一部分是.net的代码(c#语言的),其中java的代码完成的功能和.net的代码完成的功能完全相同.用①和②就组成了eform.j2ee版本,用① 和③ 就组成了eform.net.这样就得到了两个版本.由此可知,eform.j2ee和eform.net的接口和操作是完全相同的.只是运行环境和使用的编程语句不同罢了.这样做的好处是当需要从j2ee平台转到.net平台或是从.net平台转到j2ee的平台时,使用eform编写的表单和程序可以完全保留下来直接使用.可以轻松地跨越当今两大主流的开发平台.
使用eform开发平台开发出来的表单可以直接在浏览器中运行,不但如此,而且其设计工具也是在浏览器中运行的.也就是说,开发人员也是在IE中(拖拉控件)开发的.开发人员再也不用为了搭建开发环境而装一大堆软件了,这一点对于远程协作开发非常有利.
eform内置了常见的大量的开发构件,如树控件,表格,图表控件,打印控件,上传控件,查询等,也内置了象单表输入,一对多表输入等常见的数据库程序的功能点.通过使用这些可以大大提高开发的速度,降低开发这些常见功能的门槛,只需知道很少的知识便可以开发.使用eform生成的表单结构和格式一致,非常便于以后的维护升级.
eform开发平台开发出来的表单可以脱离eform平台单独运行,也很容易和其它程序进行集成.一个项目的程序往往是大量常用功能用eform平台开发,而少量功能用其它方式开发.然后把它们集成在一起而成的.
eform开发平台是专门为软件开发商或需要开发数据库程序的人而设计的.它采用开放版权的销售方式.对于用户开放100%的源代码,也就是说将eform开发平台的源代码全部提供给用户,同时还包括相应的开发文档和典型示例都提供给用户,而且用户用eform开发平台开发出来的程序可以自由分发.用户购买了eform后,就相当于eform是自己开发出来的一样.而且北京方成公司还提供一年的免费服务和技术支持.
eform的销售没有任何加密和license之说.是一种特别的销售方式.销售的过程实际上是完成知识和价值的转移的过程.相当于方成公司帮用户开发了一个平台然后再帮助用户把它使用起来,用户使用eform开发的软件可以自由销售,和方成公司没有任何关系,更不需要再收费用.由此可见,购买eform和自已招聘员工开发一个平台相比,无论是时间还是费用以及风险都是购买eform比较合算.
回复
xinfeng802 2004-10-28
String user;
user= (String) session.getValue("flag");
if (user.trim()!="true")
{%>
<SCRIPT language="javascript">
alert("您还没有登录!");
</SCRIPT>

<%}
else{
session.invalidate();

}
%>
<SCRIPT language="javascript">
alert("您已注销成功!");
window.close();
</SCRIPT>
回复
caiyi0903 2004-10-28
虽然前台做了控制,但后台一定要做控制,不能光指望前台的。OK?吃饭去了。
回复
caiyi0903 2004-10-28
比较保险的方法是在unload方法里打开一个新页面,比如exit.jsp,然后在exit.jsp里:
session.removeAttribute("User");
清空session,然后self.close()关闭。
回复
lxjian2008 2004-10-28
用session过期,在destory最方便。
回复
caiyi0903 2004-10-28
不过unload方法在刷新页面的时候也会调用,这是个弱点。
回复
caiyi0903 2004-10-28
你写在servlet中当然不行,servlet只需要写finalize方法就可以,其他没用,JVM不会自动调用的。我说的Unload()方法是写在jsp页面里的,比如<body Unload="logout();">,这样就可以了。。
回复
Frisk 2004-10-28
没反映
回复
Frisk 2004-10-28
public class Servlet1 extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
HttpSession session = request.getSession();
session.setAttribute("dd", "ff");
session.setMaxInactiveInterval(20);
}
//Clean up resources
public void destroy() {
System.out.println("destroy");
}

public void finalize() {
System.out.println("finalize");
}

public void close() {
System.out.println("close");
}

public void unload() {
System.out.println("unload");
}
}

我是这样写的但不行
回复
Frisk 2004-10-28
是设置session超时时间马?具体怎么作啊?

我只想在用户使用鼠标关闭浏览器的时候给我一个事件,好清楚用户的信息。


大侠帮忙
回复
victorylj 2004-10-28
用session,同意楼上的楼上
回复
fmzbj 2004-10-28
一般用session,楼上已经说得很清楚了!
回复
caiyi0903 2004-10-28
1 在servlet里加上finalize方法,当用户非法注销后GC发现没有失效的session对象后就会调用finalize方法,在该方法里做清除用户信息。
eg:
protected void finalize() {
this.removeUser(this.User,this.id);
}

2 在jsp页面中有close和unload事件,可以在这些事件里调用清除用户信息的方法。
回复
showstv 2004-10-28
session是可以设过期时间的,设置合适的时间,当过期的时候,调用destory方法,清除他的信息!
回复
wangwei8117 2004-10-28
可以用javascript捕捉窗口关闭消息的,另外还可以设置一下session 的过期时间,超过了时间就注销呗,这样可以搞定了!
回复
craks 2004-10-28
保存在session中,session是可以设过期时间的,或注销的,这个时候会调用destory方法
回复
Frisk 2004-10-28
<body Unload="logout();"> 这句在刷新的时候也会调用啊,能不能处理一下? 谢谢
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告