⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 messagemanager.java

📁 基于Sturts的DispatchAction的消息管理系统
💻 JAVA
字号:
package com.bjsxt.messages.manager;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import com.bjsxt.messages.DBUtils;
import com.bjsxt.messages.MessageException;
import com.bjsxt.messages.model.Message;

public class MessageManager {
	
	private static MessageManager messageManager;
	
	private MessageManager(){}
	
	public synchronized static MessageManager newInstance(){
		if(messageManager == null){
			messageManager = new MessageManager();
		}
		return messageManager;
	}
	
	/**
	 * 发送消息
	 * @param senderId 发送者ID
	 * @param receiverId 接受者ID
	 * @param title 标题
	 * @param content 内容
	 */
	public void sendMessage(int senderId,int receiverId,String title,String content){
		Connection conn = null;
		Statement stmt = null; //查找操作
		ResultSet rs1 = null;
		ResultSet rs2 = null;
		PreparedStatement ps = null; //保存操作
		try {
			conn = DBUtils.getConnection();
			conn.setAutoCommit(false);
			//1、查找发送者
			String senderName = "";
			stmt = conn.createStatement();
			rs1 = stmt.executeQuery("select username from t_user where id = "+senderId);
			if(rs1.next()){
				senderName = rs1.getString(1);
			}else{
				//提示无法找到发送者的信息,应该向用户提示错误
				throw new MessageException("send.sender_notfound","无法找到发送者的信息");
			}
			
			//2、查找接收者
			String receiverName = "";
			rs2 = stmt.executeQuery("select username from t_user where id = "+receiverId);
			if(rs2.next()){
				receiverName = rs2.getString(1);
			}else{
				throw new MessageException("send.receiver_notfound","无法找到接收者的信息");
			}
			
			//3、保存消息
			ps = conn.prepareStatement("insert into t_message values (null,?,?,?,?,?,?,?,?)");
			ps.setInt(1,senderId);
			ps.setString(2,senderName);
			ps.setInt(3,receiverId);
			ps.setString(4,receiverName);
			ps.setString(5,title);
			ps.setString(6,content);
			ps.setBoolean(7,false);
			ps.setBoolean(8,false); //发送消息
			ps.addBatch();
			
			ps.setInt(1,senderId);
			ps.setString(2,senderName);
			ps.setInt(3,receiverId);
			ps.setString(4,receiverName);
			ps.setString(5,title);
			ps.setString(6,content);
			ps.setBoolean(7,false);
			ps.setBoolean(8,true); //发送消息
			ps.addBatch();
			
			ps.executeBatch();
			
			conn.commit();
		} catch (SQLException e) {
			e.printStackTrace();
			try {
				conn.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
			throw new MessageException("send.error","执行数据库出现异常!");
		} finally{
			DBUtils.closeResultSet(rs1);
			DBUtils.closeResultSet(rs2);
			DBUtils.closeStatement(ps);
			DBUtils.closeStatement(stmt);
			DBUtils.closeConnection(conn);
		}
	}
	
	/**
	 * 删除消息
	 * @param messageId
	 */
	public void deleteMessage(int messageId){
		Connection conn = null;
		Statement stmt = null;
		try {
			conn = DBUtils.getConnection();
			conn.setAutoCommit(false);
			stmt = conn.createStatement();
			
			stmt.executeUpdate("delete from t_message where id = "+messageId);
			
			conn.commit();
		} catch (SQLException e) {
			e.printStackTrace();
			try {
				conn.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
			throw new MessageException("error","执行数据库出现异常!");
		} finally{
			DBUtils.closeStatement(stmt);
			DBUtils.closeConnection(conn);
		}
	}
	
	/**
	 * 查询userId所指定的用户的未读消息
	 * @param userId 用户ID
	 * @return
	 */
	public List<Message> findAllUnreadMessages(int userId){
		Connection conn = null;
		ResultSet rs1 = null;
		PreparedStatement ps = null;
		try {
			conn = DBUtils.getConnection();
			
			ps = conn.prepareStatement("select * from t_message where receiverId = ? and hasRead = ? and receiveOrSend = ?");
			ps.setInt(1,userId);
			ps.setBoolean(2,false);
			ps.setBoolean(3,true); //接收的消息
			rs1 = ps.executeQuery();
			List<Message> msgs = new ArrayList<Message>();
			while(rs1.next()){
				Message msg = new Message();
				msg.setId(rs1.getInt("id"));
				msg.setSenderId(rs1.getInt("senderId"));
				msg.setSenderName(rs1.getString("senderName"));
				msg.setReceiverId(rs1.getInt("receiverId"));
				msg.setReceiverName(rs1.getString("receiverName"));
				msg.setTitle(rs1.getString("title"));
				msg.setContent(rs1.getString("content"));
				msg.setHasRead(rs1.getBoolean("hasRead"));
				
				msgs.add(msg);
			}
			return msgs;
		} catch (SQLException e) {
			e.printStackTrace();
			try {
				conn.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
			throw new MessageException("find.error","执行数据库查询操作出现异常!");
		} finally{
			DBUtils.closeResultSet(rs1);
			DBUtils.closeStatement(ps);
			DBUtils.closeConnection(conn);
		}
	}
	
	/**
	 * 查询userId对应用户的所有已读消息列表
	 * @param userId
	 * @return
	 */
	public List<Message> findAllReadedMessages(int userId){
		Connection conn = null;
		ResultSet rs1 = null;
		PreparedStatement ps = null;
		try {
			conn = DBUtils.getConnection();
			
			ps = conn.prepareStatement("select * from t_message where receiverId = ? and hasRead = ? and receiveOrSend = ?");
			ps.setInt(1,userId);
			ps.setBoolean(2,true);
			ps.setBoolean(3,true); //接收的消息
			rs1 = ps.executeQuery();
			List<Message> msgs = new ArrayList<Message>();
			while(rs1.next()){
				Message msg = new Message();
				msg.setId(rs1.getInt("id"));
				msg.setSenderId(rs1.getInt("senderId"));
				msg.setSenderName(rs1.getString("senderName"));
				msg.setReceiverId(rs1.getInt("receiverId"));
				msg.setReceiverName(rs1.getString("receiverName"));
				msg.setTitle(rs1.getString("title"));
				msg.setContent(rs1.getString("content"));
				msg.setHasRead(rs1.getBoolean("hasRead"));
				
				msgs.add(msg);
			}
			return msgs;
		} catch (SQLException e) {
			e.printStackTrace();
			try {
				conn.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
			throw new MessageException("find.error","执行数据库查询操作出现异常!");
		} finally{
			DBUtils.closeResultSet(rs1);
			DBUtils.closeStatement(ps);
			DBUtils.closeConnection(conn);
		}
	}
	
	/**
	 * 查询userId对应用户的所有消息列表
	 * @param userId
	 * @return
	 */
	public List<Message> findAllReceiveMessages(int userId){
		Connection conn = null;
		ResultSet rs1 = null;
		PreparedStatement ps = null;
		try {
			conn = DBUtils.getConnection();
			
			ps = conn.prepareStatement("select * from t_message where receiverId = ? and receiveOrSend = ?");
			ps.setInt(1,userId);
			ps.setBoolean(2,true); //接收的消息
			rs1 = ps.executeQuery();
			List<Message> msgs = new ArrayList<Message>();
			while(rs1.next()){
				Message msg = new Message();
				msg.setId(rs1.getInt("id"));
				msg.setSenderId(rs1.getInt("senderId"));
				msg.setSenderName(rs1.getString("senderName"));
				msg.setReceiverId(rs1.getInt("receiverId"));
				msg.setReceiverName(rs1.getString("receiverName"));
				msg.setTitle(rs1.getString("title"));
				msg.setContent(rs1.getString("content"));
				msg.setHasRead(rs1.getBoolean("hasRead"));
				
				msgs.add(msg);
			}
			return msgs;
		} catch (SQLException e) {
			e.printStackTrace();
			try {
				conn.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
			throw new MessageException("find.error","执行数据库查询操作出现异常!");
		} finally{
			DBUtils.closeResultSet(rs1);
			DBUtils.closeStatement(ps);
			DBUtils.closeConnection(conn);
		}
	}	
	
	/**
	 * 查找userId对应的用户所发送的所有消息
	 * @param userId
	 * @return
	 */
	public List<Message> findAllSendMessages(int userId){
		Connection conn = null;
		ResultSet rs1 = null;
		PreparedStatement ps = null;
		try {
			conn = DBUtils.getConnection();
			
			ps = conn.prepareStatement("select * from t_message where senderId = ? and receiveOrSend = ?");
			ps.setInt(1,userId);
			ps.setBoolean(2,false); //发送的消息
			rs1 = ps.executeQuery();
			List<Message> msgs = new ArrayList<Message>();
			while(rs1.next()){
				Message msg = new Message();
				msg.setId(rs1.getInt("id"));
				msg.setSenderId(rs1.getInt("senderId"));
				msg.setSenderName(rs1.getString("senderName"));
				msg.setReceiverId(rs1.getInt("receiverId"));
				msg.setReceiverName(rs1.getString("receiverName"));
				msg.setTitle(rs1.getString("title"));
				msg.setContent(rs1.getString("content"));
				msg.setHasRead(rs1.getBoolean("hasRead"));
				
				msgs.add(msg);
			}
			return msgs;
		} catch (SQLException e) {
			e.printStackTrace();
			try {
				conn.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
			throw new MessageException("find.error","执行数据库查询操作出现异常!");
		} finally{
			DBUtils.closeResultSet(rs1);
			DBUtils.closeStatement(ps);
			DBUtils.closeConnection(conn);
		}
	}
	
	/**
	 * 读取某条消息
	 * @param messageId
	 * @return
	 */
	public Message readMessage(int messageId){
		Connection conn = null;
		ResultSet rs1 = null;
		PreparedStatement ps = null;
		PreparedStatement ps1 = null;
		try {
			conn = DBUtils.getConnection();
			conn.setAutoCommit(false);
			ps = conn.prepareStatement("select * from t_message where id = ?");
			ps.setInt(1,messageId);
			rs1 = ps.executeQuery();
			Message msg = new Message();
			while(rs1.next()){
				
				msg.setSenderId(rs1.getInt("senderId"));
				msg.setSenderName(rs1.getString("senderName"));
				msg.setReceiverId(rs1.getInt("receiverId"));
				msg.setReceiverName(rs1.getString("receiverName"));
				msg.setTitle(rs1.getString("title"));
				msg.setContent(rs1.getString("content"));
				msg.setHasRead(rs1.getBoolean("hasRead"));
				
			}
			
			//更新读取状态
			if(!msg.isHasRead()){
				ps1 = conn.prepareStatement("update t_message set hasRead = ? where id = ?");
				ps1.setBoolean(1,true);
				ps1.setInt(2,messageId);
				ps1.executeUpdate();
			}
			conn.commit();
			return msg;
		} catch (SQLException e) {
			e.printStackTrace();
			try {
				conn.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
			throw new MessageException("find.error","执行数据库查询操作出现异常!");
		} finally{
			DBUtils.closeResultSet(rs1);
			DBUtils.closeStatement(ps);
			DBUtils.closeStatement(ps1);
			DBUtils.closeConnection(conn);
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -