首頁  >  文章  >  Java  >  jsp怎麼實現訊息提醒

jsp怎麼實現訊息提醒

(*-*)浩
(*-*)浩原創
2019-05-15 10:14:135010瀏覽

如果你是平台層級的系統,可以考慮訊息佇列的中間件,例如:阿里巴巴的rocketmq,用這個來做訊息訂閱與分發。

如果你只是簡簡單單的需要提示到web(jsp)頁面,可以用js定時ajax訪問後台,後台來確定是否有數據更新,無論這個數據是哪來的。

推薦課程:Java教學

jsp怎麼實現訊息提醒

這裡就使用在JSP頁面上透過JS實作訊息彈出框,樣式可依需求修改,這邊只是一個簡單的示範例子,自訂了兩個訊息,彈框效果如下:


程式碼實作並未連接後台:

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@page import="java.util.*"%>
<html>
  <head>
	<style type="text/css">
		#winpop { width:250px; height:0px; position:absolute; right:0; bottom:0; border:1px solid grey; margin:0; padding:1px; overflow:hidden; display:none; background:#FFFFFF}
		#winpop .title { width:100%; height:20px; line-height:20px; background:#0AB0FF ; font-weight:bold; text-align:center; font-size:12px;color:white}
		#winpop .con { width:100%; height:360px; line-height:80px; font-weight:bold; font-size:12px; color:#FF0000; text-decoration:underline; text-align:center}
		.close { position:absolute; right:4px; top:-1px; color:#FFFFFF; cursor:pointer}
	</style>
  </head>
<%     
    //未读消息unreadList根据实际情况取
    List<Map> unreadList = new ArrayList<Map>();
	Map<String,String> map1=new HashMap<String,String>();
	map1.put("msgId","1");
	map1.put("msgContent","message111111");
	unreadList.add(map1);
	Map<String,String> map2=new HashMap<String,String>();
	map2.put("msgId","2");
	map2.put("msgContent","message222222");
	unreadList.add(map2);
    int num=unreadList.size();
%>
  <body>
    <script language="javascript" type="text/javascript">
		window.onload = function tanchuang() { //加载
			document.getElementById('winpop').style.height = '0px';//要初始化这个高度,虽然CSS里已经初始化了
			
				setTimeout("tips_pop()",0); //调用tips_pop()这个函数
		}
		
		function tips_pop() {
			var MsgPop = document.getElementById("winpop");//获取窗口这个对象,即ID为winpop的对象
			var popH = parseInt(MsgPop.style.height);//用parseInt将对象的高度转化为数字,以方便下面比较
		
			if (popH == 0) { //如果窗口的高度是0
				MsgPop.style.display = "block";//那么将隐藏的窗口显示出来
				show = setInterval("changeH('up')", 2);//开始以每0.002秒调用函数changeH("up"),即每0.002秒向上移动一次
			} else { //否则
				hide = setInterval("changeH('down')", 2);//开始以每0.002秒调用函数changeH("down"),即每0.002秒向下移动一次
			}
		}
		function changeH(str) {
			var MsgPop = document.getElementById("winpop");
			var popH = parseInt(MsgPop.style.height);
			if (str == "up") { //如果这个参数是UP
				if (popH <= 100) { //如果转化为数值的高度小于等于100
					MsgPop.style.height = (popH + 4).toString() + "px";//高度增加4个象素
				} else {
					clearInterval(show);//否则就取消这个函数调用,意思就是如果高度超过100象度了,就不再增长了
				}
			}
			if (str == "down") {
				if (popH >= 4) { //如果这个参数是down
					MsgPop.style.height = (popH - 4).toString() + "px";//那么窗口的高度减少4个象素
				} else { //否则
					clearInterval(hide); //否则就取消这个函数调用,意思就是如果高度小于4个象度的时候,就不再减了
					MsgPop.style.display = "none"; //因为窗口有边框,所以还是可以看见1~2象素没缩进去,这时候就把DIV隐藏掉
				}
			}
		}
	</script>
	
	<%if(num>0){ %>
		<div id="winpop">
		<div class="title" >系统信息<br>
		共有<font color="red"><big><%=num %></big></font>条未读消息
		<span class="close" onclick="tips_pop()">X</span></div>
		<%for(int i=0;i<num;i++) { %>
		<!-- 点击信息标题链接到信息明细,传递信息编号参数 -->
		      <a href="/XXXAction.do?msgId=<%=unreadList.get(i).get("msgId") %>">
				<%if(String.valueOf(unreadList.get(i).get("msgContent")).length()>16) {%>
					<%=String.valueOf(unreadList.get(i).get("msgContent")).substring(0,16)+"..." %>
					<%} else{ %>
					<%=String.valueOf(unreadList.get(i).get("msgContent")) %>
					<%} %>
			  </a><br>
			<%
				if(i>=1){//最多显示两条
					break;
				}
			} %>
			<center>
			<!-- 点击查看更多未读消息 -->
			<a href="/XXXAction.do %>"><font color="red">更多未读消息...</font></a></center>
		</div>
		<%} %>
  </body>
</html>

以上是jsp怎麼實現訊息提醒的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn