java站内消息的解决方案
内容来自:http://www.dev26.com/bbs/topic/191
一个站内信的简单实现方案:
设计一个表结构:
?
/**?* 消息处理Action?* */@Controllerpublic 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");
? ? ? ? }
? ? }
? ? });
}