希望高手们帮忙解答,本人开贴95%以上在3天内结贴。我有2005 c#、2005 vb、2000 SQL的开发基础,包括winform和webform.
1.无刷新是不是定一个定时触发器(像winform的的timer)那样的东西向数据库取该用户未读的信息?然后怎么显示出来呢?
2.我不会做定时触发器,谁能教我?(给个实例就行)
3.用java或者dhtml等ie可执行的语言能创建一个类似于winform的界面吗--包括最大化、最小化、关闭按钮,当然也可以在里面放一些控件。我觉得这种技术用于网站上的临时聊天(陌生人互聊),或者在必要时在屏幕右下角弹出一个小对话框显示信息应该不错。
4.怎么读写cookie,像winform程序对注册表读取那样吗?能否给出实例?cookie和session的最主要区别是什么?功能又有何不同?以上问题能提供实例并有适当的注释者给200分(不够可另开贴)asp我的确很菜,笑我也不怕。

解决方案 »

  1.   

    cookie和session机制区别与联系 
       具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上它还有其他选择。    cookie机制。正统的cookie分发是通过扩展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的cookie。然而纯粹的客户端脚本如JavaScript或者VBScript也可以生成cookie。而cookie的使用是由浏览器按照一定的原则在后台自动发送给服务器的。浏览器检查所有存储的cookie,如果某个cookie所声明的作用范围大于等于将要请求的资源所在的位置,则把该cookie附在请求资源的HTTP请求头上发送给服务器。
        cookie的内容主要包括:名字,值,过期时间,路径和域。路径与域一起构成cookie的作用范围。若不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。这种生命期为浏览器会话期的cookie被称为会话cookie。会话cookie一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存里的cookie,不同的浏览器有不同的处理方式
        session机制。session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。
      
        当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识(称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(检索不到,会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。
        保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发挥给服务器。一般这个cookie的名字都是类似于SEEESIONID。但cookie可以被人为的禁止,则必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。
        经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面。还有一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。比如:
         <form name="testform" action="/xxx">
         <input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764">
         <input type="text">
         </form>
    实际上这种技术可以简单的用对action应用URL重写来代替。
     程序设计中会经常碰到一种情况,就是事先无法得知用户会需要哪些数据,必须根据用户选择后再从服务器重新提取数据后反馈给用户。比如一简单的情况,用户选择省份以后,我们立即会在市里边将这个省的所有市重新显示出来。这种情况一般需要将整个页面刷新后才可以重新读取,但这样不仅效率不高外,也显得不太优雅。其实用javascript结合微软件的XMLHTTP对象,我们可以不用刷新,“稍稍”的就可以将数据从服务器上读取出来,显得既专业,又高效。 
    下面我们就以一个验证用户是否被注册的情况来演示这种技术。 
    -------也面无刷新
    也叫AJAX1.首先在服务器上建立一个CheckUser.asp文件,用来检测用户是否存在,根据用户是否存在分别反馈0和1 
    u_name=Request.QueryString("u_name") 
    if u_name 存在 then 
    Response.write "0" 
    else 
    Response.write "1" 
    end if 
    2.客户端HTML设计: 
    一、JavaScript代码 
    <script language=javascript> 
    function check_user_exists(form){ 
    u_name=form.u_name.value; 
    if (u_name==null||u_name==''){ 
    alert("请您输入用户名"); 
    return false; 

    infoBoard=document.getElementById("checkInfo"); 
    infoBoard.innerText='查询中...'; 
    myurl=location.protocol+"//"+location.hostname+"/CheckUser.asp?u_name="+u_name; 
    retCode=openUrl(myurl); 
    switch(retCode){ 
    case "-2": 
    infoBoard.innerHTML='<font color=red>抱歉</font>,查询失败';break; 
    case "1": 
    infoBoard.innerHTML='<font color=red>恭喜</font>,'+u_name+'可以使用';break; 
    case "0": 
    infoBoard.innerHTML='<font color=red>抱歉</font>,用户名'+u_name+'已经被使用'; 

    return; 
    } function openUrl(url){ 
    var objxml=new ActiveXObject("Microsoft.XMLHttp") 
    objxml.open("GET",url,false); 
    objxml.send(); 
    retInfo=objxml.responseText; 
    if (objxml.status=="200"){ 
    return retInfo; 

    else{ 
    return "-2"; 


    </script> 
    二、HTML表单设计: 
    <form name=form1 action="XXXX.asp" method="post"> 
    <input type=text name=u_name><span id="checkInfo"></span><input type=button name=checkuser value="检测用户是否存在" onClick="check_user_exists(this.form);"> 
    </form> 
    自己上网搜搜
      

  2.   

    1.无刷新是不是定一个定时触发器(像winform的的timer)那样的东西向数据库取该用户未读的信息?然后怎么显示出来呢?
    -------------------------
    Ajax技术: 参考http://www-128.ibm.com/developerworks/cn/xml/wa-ajaxintro1.html<input type=text datasrc=#XMLisland DataFLD=NAME size="76">
    <xml id="XMLisland"><Name>张三</Name></xml>2.我不会做定时触发器,谁能教我?(给个实例就行)
    -----------------------
    setTimeout("doFuncton",1000);3.用java或者dhtml等ie可执行的语言能创建一个类似于winform的界面吗--包括最大化、最小化、关闭按钮,当然也可以在里面放一些控件。我觉得这种技术用于网站上的临时聊天(陌生人互聊),或者在必要时在屏幕右下角弹出一个小对话框显示信息应该不错。
    -------------------------------------------
    Bindow技术或做application
    4.怎么读写cookie,像winform程序对注册表读取那样吗?能否给出实例?cookie和session的最主要区别是什么?功能又有何不同?
    --------------------------------
    x = Request.Cookies["filedName"];cookie放在客户端(不安全)
    session放在服务器,损失内存较大
      

  3.   

    现在只剩2个问题:
    1.聊天内容怎么显示出来?用response.write吗?如果是,怎么在屏幕的指定位置显示呢?或者在某个控件显示?
    2.那个窗体构造怎么做
      

  4.   

    我觉得也是应该好好从基础下手!无刷新使用xmlrequest对象,你需要HTML、DOM、Javascript知识至于Cookie的一般读写,从Google上就能得到很多答案,何必CSDN里放200分!
      

  5.   

    无刷新聊天室分为:
    1.隐藏IFrame/Frame刷新更新数据,现在已经没什么人这样做了
    2.通过XMLHttpRequest后台更新数据,也就是Ajax,现在流行的做法,但你要先学习Ajax基础。Ajax基础的话,你最好买本书看,系统的学习,晚上随便翻看的话学习进度很慢。然后搭配一本O'Reilly的《JavaScript权威指南》用来查DOM、JavaScript等的信息。
      

  6.   

    参看别人的例子,你就会明白
    http://www.codeproject.com/info/search.asp?cats=4&searchkw=chat&Submit1=Search&author=&sd=15+Nov+1999&ed=7+Sep+2006