国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
openfire聊天歷史記錄插件的制作

因?yàn)楣ぷ餍枰隽艘粋€聊天歷史記錄的插件,一開始找國外的插件,不好用,需要java客戶端插件,而且始終不能夠?qū)⒘奶靸?nèi)容保存在服務(wù)器的數(shù)據(jù)庫上。

鑒于此,自己寫了一個聊天記錄的插件,可以客戶端調(diào)用,通過訪問URL,其實(shí)是一個servlet地址,也可以通過頁面來查看聊天的歷史記錄。


 插件的下載地址:http://download.csdn.net/detail/dragonrxl/4871601

是用的Mysql的數(shù)據(jù)庫,其他數(shù)據(jù)庫我沒測試,大家可以試一下。

具體使用很簡單,把插件放到openfire的安裝目錄下的plugins下面,然后重啟openfire,就可以看到了

在openfire的頁面里面可以查看聊天記錄哈


廢話少說,直接上代碼:

首先是插件類

package org.jivesoftware.openfire.plugin;

import java.io.File;

import org.jivesoftware.openfire.container.Plugin;
import org.jivesoftware.openfire.container.PluginManager;
import org.jivesoftware.openfire.interceptor.InterceptorManager;

public class ChatPlugin implements Plugin {
 private chatInterceptor chatInter = null;

 @Override
 public void destroyPlugin() {
       // TODO Auto-generated method stub
     if(chatInter != null)
     {
            InterceptorManager.getInstance().removeInterceptor(chatInter);
     }
 }

 @Override
 public void initializePlugin(PluginManager manager, File pluginDirectory) {
  chatInter = new chatInterceptor();
  InterceptorManager.getInstance().addInterceptor(chatInter);
 }
}

 

package org.jivesoftware.openfire.plugin;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.text.SimpleDateFormat;

import org.jivesoftware.database.DbConnectionManager;
import org.jivesoftware.openfire.interceptor.PacketInterceptor;
import org.jivesoftware.openfire.interceptor.PacketRejectedException;
import org.jivesoftware.openfire.session.Session;
import org.xmpp.packet.Message;
import org.xmpp.packet.Packet;
import org.xmpp.packet.Message.Type;

public class chatInterceptor implements PacketInterceptor{

 private static final String CREATE_CHATMESSAGE_ITEM =
        "INSERT INTO ofChatHistory (fromJID, toJID, message, messagetime) " +
        "VALUES (?, ?, ?, ?)";

 private static Connection con = null;
 @Override
 public void interceptPacket(Packet packet, Session session,
   boolean incoming, boolean processed) throws PacketRejectedException {
  // TODO Auto-generated method stub
  if(!processed && packet instanceof Message)
  {
   if(incoming && Type.chat == ((Message)packet).getType())
   {
    PreparedStatement pstmt = null;
    try {
     if(con == null || con.isClosed())
      con = (Connection) DbConnectionManager.getConnection();
     pstmt = (PreparedStatement) con.prepareStatement(CREATE_CHATMESSAGE_ITEM);
     pstmt.setString(1, ((Message)packet).getFrom().toBareJID());
     pstmt.setString(2, ((Message)packet).getTo().toBareJID());
     pstmt.setString(3, ((Message)packet).getBody());
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     String ly_time = sdf.format(new java.util.Date());

     pstmt.setString(4, ly_time);
     pstmt.executeUpdate();
    }
    catch (Exception ex) {
     System.out.println(ex.getMessage());
     DbConnectionManager.closeConnection(pstmt, con);
     con = null;
    }
    finally {
    }
   }
  }
 }

}

 

package org.jivesoftware.openfire.plugin.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.jivesoftware.admin.AuthCheckFilter;
import org.jivesoftware.database.DbConnectionManager;
public class chatRecordServlet extends HttpServlet {
 /**
  *
  */
 private static final long serialVersionUID = 1L;

 public chatRecordServlet() {
  // TODO Auto-generated constructor stub
 }

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        super.init(servletConfig); 

        AuthCheckFilter.addExclude("chatRecord/history");
    }


    @Override
    public void destroy() {
        super.destroy();
        AuthCheckFilter.removeExclude("chatRecord/history");
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
    {
     String fromJid = request.getParameter("fromjid");
     String toJid = request.getParameter("tojid");
     response.setContentType("text/xml"); 
  response.setCharacterEncoding("UTF-8");   
  PrintWriter out = response.getWriter(); 
        out.println("<result>");
     Connection con = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try {
            con = (Connection) DbConnectionManager.getConnection();
            pstmt = (PreparedStatement) con.prepareStatement("select * from ofchathistory "
              + "where (fromJID = ? and toJID = ?) OR (fromJID = ? and toJID = ?) ORDER BY id");
            pstmt.setString(1, fromJid);
            pstmt.setString(2, toJid);
            pstmt.setString(3, toJid);
            pstmt.setString(4, fromJid);
            rs = (ResultSet) pstmt.executeQuery();
           
            out.print("<messagehistory>");
            while (rs.next()) {
             String fromJID = rs.getString("fromJID");
             String toJID = rs.getString("toJID");
             String message = rs.getString("message");
             String messagetime = rs.getString("messagetime");
             
             out.print("<message>");
             out.print("<fromjid>" + fromJID + "</fromjid>");
             out.print("<tojid>" + toJID + "</tojid>");
             out.print("<body>" + message + "</body>");
             out.print("<time>" + messagetime + "</time>");
             out.print("</message>");
            }
            out.print("</messagehistory></result>");
        }
        catch (Exception ex) {
           System.out.println(ex.getMessage());
        }
        finally {
            DbConnectionManager.closeConnection(rs, pstmt, con);
        }

  out.flush();
  //out.close();
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    }
}

 

 

 

package org.jivesoftware.openfire.plugin.servlet;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.HashMap;
import java.util.Map;
import java.util.Vector;

import org.jivesoftware.database.DbConnectionManager;
import org.jivesoftware.util.JiveGlobals;

public class chatUtils {

 public static String fJid = "";
 public static String tJid = "";
 public static Vector<Map<String, String>> getHistory(String fromJid, String toJid)
 {
  if(fromJid != null)
   fJid = fromJid;
  if(toJid != null)
   tJid = toJid;
  Connection con = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
    String xmppdomain = "@" + JiveGlobals.getProperty("xmpp.domain");
        Vector<Map<String, String>> vec = new Vector<Map<String, String>>();
        try {
            con = (Connection) DbConnectionManager.getConnection();
            pstmt = (PreparedStatement) con.prepareStatement("select * from ofchathistory "
              + "where (fromJID = ? and toJID = ?) OR (fromJID = ? and toJID = ?) ORDER BY id");
            pstmt.setString(1, fJid+xmppdomain);
            pstmt.setString(2, tJid+xmppdomain);
            pstmt.setString(3, tJid+xmppdomain);
            pstmt.setString(4, fJid+xmppdomain);
            rs = (ResultSet) pstmt.executeQuery();
           
            while (rs.next()) {             
             String fromJID = rs.getString("fromJID");
             String toJID = rs.getString("toJID");
             String message = rs.getString("message");
             String messagetime = rs.getString("messagetime");
             
             Map<String, String> map = new HashMap<String, String>();
             map.put("fromjid", fromJID);
             map.put("tojid", toJID);
             map.put("body", message);
             map.put("time", messagetime);
             vec.add(map);
            }
        }
        catch (Exception ex) {
           System.out.println(ex.getMessage());
        }
        finally {
            DbConnectionManager.closeConnection(rs, pstmt, con);
        }
        return vec;
 }
 
 public static Vector<String> getUserJid()
 {
  Connection con = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        Vector<String> vec = new Vector<String>();
        try {
            con = (Connection) DbConnectionManager.getConnection();
            pstmt = (PreparedStatement) con.prepareStatement("select * from ofuser");
            rs = (ResultSet) pstmt.executeQuery();
           
            while (rs.next()) {
             vec.add(rs.getString("username"));
            }
        }
        catch (Exception ex) {
           System.out.println(ex.getMessage());
        }
        finally {
            DbConnectionManager.closeConnection(rs, pstmt, con);
        }
        return vec;
 }
}

 

 

希望對大家有幫助,這個可以直接用,代碼都有了,就不用我解釋了。這個是通用的,后期還需要我自己根據(jù)自己需要改一些東西,改完就不通用啦,所以先拿出來記錄下來啦。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
JDBC數(shù)據(jù)源連接池的配置和使用示例
java中通用的數(shù)據(jù)庫連接與關(guān)閉方法類的簡單寫法
[轉(zhuǎn)帖]一個高效簡潔的Struts分頁方法 @ 『 JavaEE 技術(shù) 』
一個高效簡潔的struts分頁方法
java swing jdbc sql 增刪改查 實(shí)例1
java生成word,html文件并將內(nèi)容保存至數(shù)據(jù)庫
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服