内容来自:http://www.dev26.com/bbs/topic/191
一个站内信的简单实现方案:
设计一个表结构:
@Entity
@Table(name="e_msg")
public class Message extends AbstractId {
private User from;
private User to;
private boolean beenRead;
private String title;
private String content;
private long createdDate;
@ManyToOne
@JoinColumn(nullable=false, updatable=false)
public User getFrom() { return from; }
public void setFrom(User from) { this.from = from; }
@ManyToOne
@JoinColumn(nullable=false, updatable=false)
public User getTo() { return to; }
public void setTo(User to) { this.to = to; }
@Column(nullable=false)
public boolean getBeenRead() { return beenRead; }
public void setBeenRead(boolean beenRead) { this.beenRead = beenRead; }
@Column(nullable=false, length=Constants.VARCHAR_TITLE_LENGTH)
public String getTitle() { return title; }
@Form
public void setTitle(String title) { this.title = title; }
@Column(nullable=false, columnDefinition="TEXT")
public String getContent() { return content; }
@Form
public void setContent(String content) { this.content = content; }
@Column(nullable=false, updatable=false)
public long getCreatedDate() { return createdDate; }
public void setCreatedDate(long createdDate) { this.createdDate = createdDate; }
}
Action层的逻辑:
/**
* 消息处理Action
* */
@Controller
public class MessageContrller extends AbstractBaseController {
@RequestMapping(value = "/manage/message/add", method = RequestMethod.POST)
public ModelAndView addMessage(HttpServletRequest request,
HttpServletResponse response) {
Message message = (Message) HttpUtil.createFormBean(request,
Message.class);
String toUserName = HttpUtil.getString(request, "toUserName");
User toUser = facade.queryUser(toUserName);
message.setFrom(HttpUtil.getCurrentUser());
message.setTo(toUser);
facade.createMessage(message);
return null;
}
@RequestMapping(value = "/manage/message/list")
public ModelAndView listMessage(HttpServletRequest request,
HttpServletResponse response) {
Page page = HttpUtil.getPage(request);
User user = HttpUtil.getCurrentUser();
List messages = facade.queryMessages(user, page);
Map map = new HashMap();
map.put("page", page);
map.put("username", user.getUsername());
map.put("messages", messages);
return new ModelAndView("/manage/message/message.htm", map);
}
@RequestMapping(value = "/manage/message/delete")
public String deleteMessage(HttpServletRequest request,
HttpServletResponse response) {
Integer messageId = HttpUtil.getInt(request, "messageId");
Message message = facade.queryMessage(messageId);
facade.deleteMessage(message);
Page page = HttpUtil.getPage(request);
User user = HttpUtil.getCurrentUser();
List messages = facade.queryMessages(user, page);
return "redirect:/manage/message/list";
}
以下是前台的提示功能代码用的是js轮询:
//检查站内消息
$(document).ready(function(){
if(document.getElementById("msgCount")&&g_username){
checkMsg();//首次加载就查询一次,以后每隔一段时间查询一次
setInterval(checkMsg,9900);
}
});
function checkMsg(){
$.ajax({
type:"get",
dataType:"json",
url:"/manage/message/getMsgCount",
data:{username:g_username},
success:function(data,textStatus){
$("#msgCount").html("("+data+")");
if(parseInt(data)>0){
$("#msgCount").css("background-color","red");
}else{
$("#msgCount").css("background-color","#99CC99");
}
}
});
}
分享到:
相关推荐
### Java常见异常及其解决方案 #### 1. `java.lang.NullPointerException` **异常描述:** `NullPointerException`是最常见的运行时异常之一,通常发生在试图访问一个尚未初始化或者被设置为`null`的对象实例时。...
利用服务器推送技术实现站内短消息(java) 让client与service建立一个长连接,不用client手动request,service会自动response,当有好友在线的时候,会自动把好友的信息加载到select里,点击好友发送短消息时,会在...
java读取txt文件乱码解决方案java读取txt文件乱码解决方案java读取txt文件乱码解决方案java读取txt文件乱码解决方案java读取txt文件乱码解决方案java读取txt文件乱码解决方案java读取txt文件乱码解决方案java读取txt...
软件注册!软件注册!软件注册!软件注册!软件注册!软件注册!软件注册!软件注册!软件注册!软件注册!软件注册!软件注册!软件注册!软件注册!
廖师兄亲授-Java分布式系统解决方案,课程包含分布式ID、分布式Session、分布式任务调度、分布式限流、分库分表、分布式事务六大专题,案例涵盖用户、报表、秒杀、订单等经典场景,企业常用分布式实战案例&解决方案...
本源码项目是基于Java的分布式事务解决方案myth设计,包含402个文件,主要使用Java、JavaScript、Vue和HTML编程语言。该项目是一个采用消息队列解决分布式事务的开源框架,基于Java语言开发(JDK1.8),并支持dubbo...
### Java持久化的解决方案详解 #### 引言:信息载体与持久化需求 在软件工程领域,数据持久化是一项至关重要的技术,它确保了应用程序在不同会话之间或系统重启后仍能保持数据的一致性和完整性。Java作为一种广泛...
本资源“JAVA报表解决方案源码”正为那些需要在Java环境中开发报表功能的开发者提供了宝贵的参考资料。 首先,我们要了解Java报表的基本概念。报表通常涉及从数据库或其他数据源获取数据,然后将这些数据以结构化的...
SQL注入安全问题解决方案-JAVA SQL注入安全问题解决方案-JAVA
java高并发解决方案(图解).xmind,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!
在Java环境中实现Web服务的解决方案方面,首先需要了解的是Java对Web服务的支持组件,其中包括JAXP(Java API for XML Processing)、JAXM(Java API for XML Messaging)、JAXB(Java Architecture for XML Binding...
在Java后台程序设计中,多线程互斥与同步控制是关键的概念,它们确保了并发执行的线程在访问共享资源时的安全性。线程互斥是指在同一时刻,只有一个线程能够访问特定的共享资源,以防止数据的不一致性。线程同步则是...
JAVA文件文档在线预览项目解决方案,对标业内付费产品有【永中office】【office365】【idocv】等,该项目使用流行的spring boot搭建,易上手和部署,支持主流办公文档的在线预览,如doc,docx,Excel,pdf,txt,zip,rar,...
Oracle+Weblogic+Server+Java反序列化漏洞 解决方案 Oracle+Weblogic+Server+Java反序列化漏洞 解决方案
JAVA WEB物流配货解决方案
JAVA Web仓库管理解决方案
Java内存溢出的详细解决方案 Java内存溢出是指Java虚拟机(JVM)中的内存使用超过了最大限制,导致程序崩溃或无法正常运行的错误。Java内存溢出主要有两种类型:PermGen space和Java heap space。 PermGen space ...