jquery.messager +ajax 实现 OA 及时消息提醒

本文介绍了一种实现实时消息提醒的技术方案,通过引入AJAX、jQuery等库,实现20秒一次的消息检查和更新功能。同时,利用Java编写了一个用于处理消息逻辑的类,实现了消息的添加、更新和文本读取功能。当接收到新消息时,系统会自动更新文本文件,并在用户界面显示消息提醒。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现方法:

在主框架页面main.jsp 加入JS

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.messager.js"></script>
<script>
 function getMessage(msg){
    /*$.messager.lays(width, height);
     *该方法主要用来定义弹出窗口的宽度和高度。
     */
    /*$.messager.show(title,text,time);
     *该方法主要定义窗口显示的内容,以及窗口显示多长时间后进行隐藏。
     *如果使用默认的标题,则将title设置为0,另外title和text还可以设置为html内容进行显示。如果希望用户点击弹窗的关闭按钮才关闭    
            *消息框,可将time设置为0。
     */
     // alert(msg);
      $.messager.lays(300, 200);
      $.messager.show("消息提醒",msg,10000);
}
</script>

在 bottom.jsp 中加入 ajax 

<script type="text/javascript">
   //20秒 访问一次

setInterval("makeRequest()",20000);


   function makeRequest() {
      var guid = rnd();
       //记住给个随机数,不然的话有缓存

       var url = "ajax/getmessage.action?id=" + guid;
  
   //创建Ajax.Request对象,对应于发送请求
   var myAjax = new Ajax.Request(
   url,
   {
    //请求方式:POST
    method:'post',
    //请求参数
    //parameters:params,
    //指定回调函数
    onComplete: processResponse,
    //是否异步发送请求
    asynchronous:true
   });
         
        }
        function processResponse(request)
  {
         var type =  request.responseText;
  
      type =  eval('('+type+')');
      //alert(type);
       if (type == "0") {
             }else{
              //alert(xmlHttp.responseText);
              //调用父窗体的获取消息js
              self.parent.getMessage(type);
             }
      
  } 
      
        //创建随机数
        rnd.today = new Date();
        rnd.seed = rnd.today.getTime();
        function rnd() {
            rnd.seed = (rnd.seed * 9301 + 49297) % 233280;
            return rnd.seed / (233280.0);
        }
        function rand(number) {
            return Math.ceil(rnd() * number);
        }
  
</script>


创建messageutil.java

package com.oa.util;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;

public class MessageUtil {
 public static void addText(String to_send_user_id,String type,String id) throws IOException{
  String filePath = Project_url.getUrl()+"\\userfiles\\message\\"+to_send_user_id+".txt";
     File file = new File(filePath);
     if (!file.exists()) {
   file.createNewFile();
  }
     BufferedWriter writer = null;
     try {

            writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, true), "utf-8"));

            writer.write(type+"|"+id+"|\r\n");

        } finally {

         if (writer != null)
                writer.close();
        }
 }
 public static void updateText(String to_send_user_id,String type,String id) throws IOException{
  String filePath = Project_url.getUrl()+"\\userfiles\\message\\"+to_send_user_id+".txt";
     File file = new File(filePath);
     if (!file.exists()) {
   file.createNewFile();
  }
     BufferedReader reader = null;
     BufferedWriter writer = null;
   
     try {
       StringBuilder temp = new StringBuilder();
      reader = new BufferedReader(new FileReader(file));
      String line = null;
      String str = type+"|"+id+"|";
      while((line = reader.readLine()) != null){
       if (line.equals(str)) {
     //reader.readLine().replace(type+"|"+id+"|","\n");
     temp.append("");
    }else{
     temp.append(line+"\r\n");
    }
      }
      writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file,false),"UTF-8"));
            writer.write(temp.toString());
        } finally {
          if (writer != null)
             writer.close();
          if (reader != null)
              reader.close();
        }
       
    }
 public static String getString(String user_id) throws IOException{
  String filePath = Project_url.getUrl()+"\\userfiles\\message\\"+user_id+".txt";
     File file = new File(filePath);
     if (!file.exists()) {
   file.createNewFile();
  }
     BufferedReader reader = null;
     StringBuilder temp = new StringBuilder();
     try {
      
      reader = new BufferedReader(new FileReader(file));
      String line = null;
      while((line = reader.readLine()) != null){
     temp.append(line+",");
      }
       } finally {
          if (reader != null)
              reader.close();
       }
  return temp.toString();
 }
}

将需要提醒的信息 在保存时 写入 文本中。一行代表一条数据。
type 是消息类型,id 是消息id,user_id是文本命名。
20秒刷新一次ajax 判断 文本中是否有内容。
待信息查看过后 删除文本中对应行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值