Struts+Ajax实现定时刷新Table内容,实现在线人员显示

来源:互联网 发布:php stdclass 编辑:程序博客网 时间:2024/05/18 23:57
 

 

Ajax代码如下:

 

<script language="JavaScript" type="">
    
var XMLHttpReq = false;
    
//创建XMLHttpRequest对象
    function createXMLHttpRequest(){
        
if(window.XMLHttpRequest){                //Mozilla浏览器
            XMLHttpReq = new XMLHttpRequest();
        }

        
else if(window.ActiveXObject){          //IE浏览器
            try{
                XMLHttpReq 
= new ActiveXObject("Msxml2.XMLHTTP");
            }
catch(e){
                
try{
                    XMLHttpReq 
= new ActiveXObject("Microsoft.XMLHTTP");
                }
catch(e){}
            }

        }

    }

    
//发送请求函数
    function sendRequest(){
        
var url="handlerList.do"
        createXMLHttpRequest(); 
//调用创建对象方法
        XMLHttpReq.open("post",url,true);
        XMLHttpReq.onreadystatechange 
= processResponse;//指定响应函数 调用
        XMLHttpReq.setRequestHeader("If-Modified-Since","0"); 
        XMLHttpReq.send(
null);//发送请求
    }

    
//处理返回信息函数
    function processResponse(){
        
if(XMLHttpReq.readyState==4){//代表服务器已经传回所有的信息,可以处理了
            if(XMLHttpReq.status==200){   //信息已经成功返回,开始处理信息
                updateTable();
                setInterval(
"sendRequest()",10000);
            }
else   //页面不正常
                window.alert("您所请求的页面有异常。");
        }

        
    }


                     
//更新table的内容
    function updateTable(){
        clearTable();
        
var results=XMLHttpReq.responseXML.getElementsByTagName("handler");
        
for(var i=0;i<results.length;i++){
                                       
var name=results[i].childNodes[0].firstChild.nodeValue;
                                       addTableRow(name);
                                          }

    }

                     
//向table的行添加单元格
    function addTableRow(name){
        
var table=document.getElementById("handlerList");
        
var row = table.insertRow(1);
        
var cell = row.insertCell(0);
        cell.align
="center";
        cell.innerHTML
="<strong>"+name+"</strong>";
    }

                     
//清除表格内容
    function clearTable(){
        
var table=document.getElementById("handlerList");
        
for(var i=table.rows.length-1;i>0;i--)
        
{
            table.deleteRow(i);
        }

    }

</script>

 下面是JSP的内容

 

<body onload="sendRequest()">
  
<table width = "124" height="100%" border="0" cellspacing="0" background="../image/bak.jpg">
  
<tr>
    
<td height="39" align="center" valign="middle"><align="center"><html:link forward="main"><strong>业务受理</strong></html:link></p>
    
</td>
  
</tr>
  
<tr>
    
<td height="36" align="center" valign="middle"><html:link forward="payMoney"><strong>业务处理</strong></html:link></td>
  
</tr>
  
<tr>
    
<td height="35" align="center" valign="middle"><html:link forward="query"><strong>业务查询</strong></html:link></td>
  
</tr>
  
<tr>
  
<td height="35" align="center" valign="middle"><html:link forward="update"><strong>&#36164;&#26009;&#20462;&#25913;</strong></html:link></td>
  
</tr>
  
<tr>
  
<td height="42" align="center" valign="middle"><strong><html:link href="admin.jsp">&#31649;&#29702;</html:link></strong></td>
  
</tr>
  
<tr>
  
<td height="34" align="center" valign="middle"><strong><br>
    &#36864;&#20986;
</strong> 
  
</td>
  
</tr>
  
<tr>
  
<td height="21" align="center" valign="middle">&nbsp;
  
</td>
  
</tr>
      
<tr>
          
<td align="center" valign="middle">
              
<table id="handlerList" width="100%" height="20"  border="0" cellpadding="0" cellspacing="0">
              
<tr>
                
<td align="center"><strong>在线人员:</strong></td>
              
</tr>
            
</table>
        
</td>
      
</tr>
</table>
</body>

handlerListAction内容如下

 

public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) 
{
        
try {
            request.setCharacterEncoding(
"GBK");
        }
 catch (UnsupportedEncodingException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }

        response.setContentType(
"text/xml;charset=GBK");
        response.setHeader(
"Cache-Control","no-cache");
        
        ServletContext context
=getServlet().getServletContext();
        List list
=(List)context.getAttribute("onlineHandler");
        
        PrintWriter out 
= null;
        
try {
            out 
= response.getWriter();
        }
 catch (IOException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }

        String str
="";
        str
="<?xml version="1.0" encoding="GBK"?>";
        str
+="<handlers>";
        
for(int i=0;i<list.size();i++)
        
{
            str
+="<handler>";
            Handler handler
=(Handler)list.get(i);
            str
+="<name>"+handler.getHandlerName()+"</name>";
            str
+="</handler>";
        }

        str
+="</handlers>";
        out.println(str);
        out.close();
        
return null;
    }

 

为了实现对在线人员的统计

我在登陆的时候将登陆人员放入了ServletContext中,然后使用HttpSessionListenter来监视登陆用户情况

 

public class SessionListenter implements HttpSessionListener {

    
public SessionListenter()
    
{}
    
public void sessionCreated(HttpSessionEvent arg0) {
        
// TODO Auto-generated method stub
        System.out.println("Session监听启动了");
        arg0.getSession().setMaxInactiveInterval(
1*60);//设置Session的过期时间为1分钟
    }


    
public void sessionDestroyed(HttpSessionEvent arg0) {
        System.out.println(
"session释放启动了");
        
        HttpSession session 
= arg0.getSession();
        ServletContext ctx 
= session.getServletContext();
        List list 
= (List)ctx.getAttribute("onlineHandler");
        list.remove(session.getAttribute(
"handler"));
        System.out.println(
"List的个数为:"+list.size());
    }

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 钉钉 不够6个人怎么办 plsql删错了表怎么办 吊兰长出来的茎怎么办 防水台鞋跟太高怎么办 证件照头部比例过大怎么办 特岗照片传错了怎么办 打印报名表照片不显示怎么办 刚买的床有味道怎么办 雨刷器角度太小怎么办 四个月宝宝闹觉怎么办 怀孕六个月睡不好觉怎么办? 婴儿睡不好觉总是吵闹怎么办 婴儿鼻塞睡不好觉怎么办 玩英雄联盟鼠标变亮白怎么办 练芭蕾脚受伤了怎么办 高三了英语30分怎么办 要上高中了英语不好怎么办 高二了数学不好怎么办 高二函数不好怎么办啊 输乳怎么办腺病有什么妇症状 屁股上坐的发黑怎么办 车屁股撞了个洞怎么办 腰压迫的腿疼怎么办 肩胛提肌固定不住怎么办 胳膊粗后背肉多怎么办 2岁儿童 肋骨边缘外翻怎么办 5岁宝宝盆骨前倾怎么办 脖子弯了像驼背怎么办 都40周了还没生怎么办 股骨头坏死骨盆歪了怎么办 二胎侧切伤口疼怎么办 小月子盆骨酸痛怎么办 盆骨一边大一边小怎么办 快生了宫颈管长怎么办 想顺产 宫颈管长怎么办 腰和跨一样宽怎么办 脚后跟骨折手术后小腿变细怎么办 生完孩子骨盆错位怎么办 皮肤又黑又粗糙怎么办 翠研珠宝被坑了怎么办 领导是小人我该怎么办