最近在做一个酒店管理系统的项目,在里面用到了客户在客户界面进行预定房间,在酒店管理端可以获取到数据库中的数据变化情况,并在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 } }