利用Ajax和js实现实时消息提醒

       最近在做一个酒店管理系统的项目,在里面用到了客户在客户界面进行预定房间,在酒店管理端可以获取到数据库中的数据变化情况,并在jsp页面中动态的显示预定消息。和大家简单的分享一下,写的不够规范,还请大家多指教。

思路是利用setInterval进行定时刷新,并在Servlet中访问数据库读取其中记录,返回到jsp页面中。

NewFile.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<!--设置一个文本域用于显示信息  -->
	<textarea readonly name="msg" id="msg" cols="30" rows="10">
</textarea>
	<script language=javascript>
		var int = self.setInterval("clock()", 1000)
		var i=0,j;
		function clock() {
			
			var xmlhttp;
			if (window.XMLHttpRequest) {
				xmlhttp = new XMLHttpRequest();
			} else {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
			xmlhttp.onreadystatechange = function() {
				if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
					var returnJSONString = xmlhttp.responseText;
					var returnJSON = JSON.parse(returnJSONString);
					//用循环获取每次最新加入的数据
					for (j=i; j < returnJSON.length; i++) {
						
						$("#msg").append(
								"有客户预定了" + returnJSON[i].bookroom_roomtype
										+ ",房间号"
										+ returnJSON[i].bookroom_roomid + ",于"
										+ returnJSON[i].bookroom_liveintime
										+ "入住"+"\n");
					}
				}
			}
			xmlhttp.open("get", "/HotelManagement/ceshi", true);
			xmlhttp.send();

		}
	</script>
	<button onclick="int=window.clearInterval(int)">停止接收消息</button>
</body>
</html>

ceshi.java  对数据库进行操作

package com.adl.hotelmanage.servlet;

import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.adl.hotelmanage.dao.DbInquire;
import com.adl.hotelmanage.po.BookRoom;
import com.adl.hotelmanage.po.RoomInfo;
import com.google.gson.Gson;

/**
 * Servlet implementation class ceshi
 */
@WebServlet("/ceshi")
public class ceshi extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ceshi() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");

		List<BookRoom> bookroomls = new ArrayList<BookRoom>();
		String sql = "select * from t_bookroom";
		ResultSet bookroomrs = DbInquire.inquire(sql);
		String json = null;
		try {
			while (bookroomrs.next()) {
				BookRoom bookroom = new BookRoom();
				//bookroom.setBookroom_id(Integer.parseInt(bookroomrs.getString("bookroom_id")));
				bookroom.setBookroom_roomid(bookroomrs.getString("bookroom_roomid"));
				bookroom.setBookroom_roomtype(bookroomrs.getString("bookroom_roomtype"));
				bookroom.setBookroom_liveintime(bookroomrs.getString("bookroom_liveintime"));
				bookroom.setBookroom_outtime(bookroomrs.getString("bookroom_outtime"));
				bookroomls.add(bookroom);
				Gson gson = new Gson();
				 json = gson.toJson(bookroomls);
				 System.out.println("json="+ json);
				 request.setAttribute("bookroomlist", bookroomls);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		response.getWriter().print(json);
		response.getWriter().flush();
		response.getWriter().close();
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
	}

}


猜你喜欢

转载自blog.csdn.net/baidu_34211956/article/details/79880025
今日推荐