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