会议室预约系统
- 一.需求调研
- 1.做成类似于课程表的样式。
- 2.在右侧设置输入框,输入信息。
- 3.表格上面设置个下拉列表,切换会议室。
- 4.时间段从8:00到19:30,半个小时一个时间段,表头显示日期和时间。
- 5.显示内容的单元格内容一样的合并。
- 6.紧挨着切换会议室显示箭头和周的日期,可以进行周的切换。
- 7.页面始终显示一周,周一到周天,当天的背景色颜色为黄色。
- 8.点击单元格显示信息,登录之后,自己预约的信息背景色为浅黄色,别人的信息背景色为浅蓝色。
- 9.登录成功后,点击单元格才能预约。
- 10.选中单元格后开始时间禁用不可选,结束时间根据显示的内容进行个别时间段的禁用。
- 11.需要输入的信息有,开始时间(下拉列表),结束时间(下拉列表),预约人(登录成功,自动获取),会议主题(文本框),部门(文本框),参会人数(文本框),需要的设备(复选框:投影,电话,视频),是否需要服务(单选框),备注(文本框)。
- 12.按钮有,提交按钮,清空按钮,修改按钮,取消按钮。
- 13.选中视频时,显示红色字体的提示,需要视频,请与行政部联系。
- 14.页面采用自适应。
- 15.总体页面样式如下图:
- 二.设计过程
- 1.页面头部分采用flex布局。
- 2.会议室信息存到数据库,用Ajax请求,查询出会议室的信息,利用js创建下拉列表,显示会议室。
- 3.周切换,利用参数传给后台,存到Session中,利用Ajax进行传输和获取。
- 4.登录,点击登录,弹出窗口,输入邮箱和邮箱密码,进行邮箱验证登录,把数据存入Session,保持登录状态。
- 5.显示数据的表格用js创建生成,除了第一行和第一列,其他单元格的id为cell行号_列号。
- 6.日期为动态。
- 7.参会人数,利用正则表达式控制只能输入正整数。
- 8.单元格添加斜线,利用canvas画图。
- 9.连接数据库,利用C3P0连接池。
- 10.屏幕自适应,通过获取分辨率的宽和高,和电脑系统的文本缩放比例,控制页面的大小。
- 三.开发过程
- 1.jsp代码
- 2.css代码
- 3.js代码
- 4.java代码
- (1)meetingRoom.sql(数据库建表)
- (2)log4j.properties(log日志文件)
- (3)c3p0-config.xml(C3P0连接数据库)
- (4)JdbcUtils.java(JDBC连接数据库和加载数据库驱动)
- (5)LoginGetSession.java(获取存在Session中的登录用的数据)
- (6)LoginServlet.java(登录调用验证方法)
- (7)LogoutServlet.java(退出登录,清空Session中登录用的数据)
- (8)DayList.java(构造类和方法)
- (9)MeetingInformation.java(构造类和方法)
- (10)LdapADHelper.java(邮箱验证方法)
- (11)MeetingRoomId.java(获取数据库中会议室的信息)
- (12)RoomGetSession.java(获取存在Session中的会议室的id)
- (13)RoomSetSession.java(把前端传来的会议室的id存到Session中)
- (14)MeetingRoomService.java(用会议室id进行条件查询)
- (15)CallMethodServlet.java(调用增删改查的方法)
- (16)verificationServlet.java(提交数据时验证数据库是否存在该数据)
- (17)WeekGetSession.java(获取存在Session中周的编号)
- (18)WeekSetSession.java(把页面传来的周的编号存到Session中)
- 四.交付过程
一.需求调研
1.做成类似于课程表的样式。
2.在右侧设置输入框,输入信息。
3.表格上面设置个下拉列表,切换会议室。
4.时间段从8:00到19:30,半个小时一个时间段,表头显示日期和时间。
5.显示内容的单元格内容一样的合并。
6.紧挨着切换会议室显示箭头和周的日期,可以进行周的切换。
7.页面始终显示一周,周一到周天,当天的背景色颜色为黄色。
8.点击单元格显示信息,登录之后,自己预约的信息背景色为浅黄色,别人的信息背景色为浅蓝色。
9.登录成功后,点击单元格才能预约。
10.选中单元格后开始时间禁用不可选,结束时间根据显示的内容进行个别时间段的禁用。
11.需要输入的信息有,开始时间(下拉列表),结束时间(下拉列表),预约人(登录成功,自动获取),会议主题(文本框),部门(文本框),参会人数(文本框),需要的设备(复选框:投影,电话,视频),是否需要服务(单选框),备注(文本框)。
12.按钮有,提交按钮,清空按钮,修改按钮,取消按钮。
13.选中视频时,显示红色字体的提示,需要视频,请与行政部联系。
14.页面采用自适应。
15.总体页面样式如下图:
二.设计过程
1.页面头部分采用flex布局。
2.会议室信息存到数据库,用Ajax请求,查询出会议室的信息,利用js创建下拉列表,显示会议室。
3.周切换,利用参数传给后台,存到Session中,利用Ajax进行传输和获取。
4.登录,点击登录,弹出窗口,输入邮箱和邮箱密码,进行邮箱验证登录,把数据存入Session,保持登录状态。
5.显示数据的表格用js创建生成,除了第一行和第一列,其他单元格的id为cell行号_列号。
6.日期为动态。
7.参会人数,利用正则表达式控制只能输入正整数。
8.单元格添加斜线,利用canvas画图。
9.连接数据库,利用C3P0连接池。
10.屏幕自适应,通过获取分辨率的宽和高,和电脑系统的文本缩放比例,控制页面的大小。
三.开发过程
1.jsp代码
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE>
<html>
<head>
<title>瀚高会议室预定系统</title>
<link type="text/css" rel="stylesheet" href="css/style.css">
<script src="js/jquery-3.3.1.min.js"></script>
<script src="js/PageElementScript.js"></script>
<script src="js/loginScript.js"></script>
<script src="js/cellClickScript.js"></script>
<script src="js/serviceDataScript.js"></script>
<script src="js/getDateScript.js"></script>
<script src="js/hintWindowScript.js"></script>
</head>
<body>
<canvas id="line" style="display: none;"></canvas>
<div id="bodyDiv">
<!-- 标题 -->
<div class="headline">
<div class="caption">瀚高会议室预定</div>
<div>
<select id="meetingRoomNumber" name="meetingRoomNumber">
</select>
<input id="lastWeekBut" type="button" value=""> |
<label id="lastWeek"></label> |
<label id="thisWeek"></label> |
<label id="nextWeek"></label> |
<input id="nextWeekBut" type="button" value="">
</div>
<div>
<label id="loginLabel" onclick="login()">预约登录</label>
<label id="userinfo" style="display: none"></label>
<label id="logoutLabel" onclick="logoutHint()" style="display: none;margin-right:6px">
| 退出</label>
</div>
</div>
<hr />
<!-- 标题 -->
<!-- 内容 -->
<table id="allTable">
<tr height="100%">
<td width="79%">
<!-- 显示信息的表格 -->
<table id="tablecontent">
</table>
<!-- 显示信息的表格 -->
</td>
<td width="21%">
<!-- 登记信息的div -->
<div id="inputbox">
<!-- 登记信息的遮盖层 -->
<div id="inputBoxCover"></div>
<!-- 登记信息的遮盖层 -->
<!-- 登记信息的标题 -->
<table id="registerTable">
<tr height="100%">
<td class="registerMessageTitle" align="center">登记信息</td>
</tr>
</table>
<!-- 登记信息的标题 -->
<!-- 预约申请的标题 -->
<table id="bookingTable">
<tr height="100%">
<td class="bookingTitle" align="center">预约申请</td>
</tr>
</table>
<!-- 预约申请的标题 -->
<!-- 输入信息的表格 -->
<table id="inputTable">
<tr>
<td align="center" width="32%"> 开始时间:</td>
<td><select id="startTime" name="startTime"></select></td>
</tr>
<tr>
<td align="center" width="32%"> 结束时间:</td>
<td><select id="endTime" name="endTime">
</select></td>
</tr>
<tr>
<td align="center" width="32%"> 预 约 人:</td>
<td><label id="creator"></label></td>
</tr>
<tr>
<td align="center" width="32%"> 会议主题:</td>
<td><input id="subject" type="text" name="subject" placeholder="会议主题"></td>
</tr>
<tr>
<td align="center" width="32%"> 部门名称:</td>
<td><input id="department" type="text" name="department" placeholder="部门选填"></td>
</tr>
<tr>
<td align="center" width="32%"> 参会人数:</td>
<td><input id="number" type="text" name="number" placeholder="请输入正整数"></td>
</tr>
<tr>
<td align="center" width="32%"> 设备选择:</td>
<td><input id="facility1" type="checkbox" name="facility1" value="投影">投影
<input id="facility2" type="checkbox" name="facility2" value="电话">电话
<input id="facility3" type="checkbox" name="facility3" value="视频">视频</td>
</tr>
<tr>
<td align="center" width="32%"> 是否招待:</td>
<td><input id="serviceYes" type="radio" name="service" value="true">是
<input id="serviceNo" type="radio" name="service" value="false" checked>否</td>
</tr>
<tr>
<td align="center" width="32%"> 备注信息:</td>
<td><input id="remark" type="text" name="remark" placeholder="选填"></td>
</tr>
</table>
<!-- 输入信息的表格 -->
<!-- 信息显示的label的表格 -->
<table id="labelTable">
<tr>
<td align="center" width="32%"> 开始时间:</td>
<td><label id="startTimeLabel"></label></td>
</tr>
<tr>
<td align="center" width="32%"> 结束时间:</td>
<td><label id="endTimeLabel"></label></td>
</tr>
<tr>
<td align="center" width="32%"> 预 约 人:</td>
<td><label id="creatorLabel"></label></td>
</tr>
<tr>
<td align="center" width="32%"> 会议主题:</td>
<td><label id="subjectLabel"></label></td>
</tr>
<tr>
<td align="center" width="32%"> 部门名称:</td>
<td><label id="departmentLabel"></label></td>
</tr>
<tr>
<td align="center" width="32%"> 参会人数:</td>
<td><label id="numberLabel"></label></td>
</tr>
<tr>
<td align="center" width="32%"> 设备选择:</td>
<td><label id="facilityLabel"></label></td>
</tr>
<tr>
<td align="center" width="32%"> 是否招待:</td>
<td><label id="serviceLabel"></label></td>
</tr>
<tr>
<td align="center" width="32%"> 备注信息:</td>
<td><label id="remarkLabel"></label></td>
</tr>
</table>
<!-- 信息显示的label的表格 -->
<!-- 按钮的表格 -->
<table id="buttonTable">
<tr height="100%" align="center">
<td><input type="hidden" id="callMethod" name="callMethod" value="">
<input type="hidden" id="thCellText" value="">
<input type="hidden" id="idNumber" value="">
<input type="hidden" id="loginThing" value="">
<input type="hidden" id="roomId" value="1">
<input type="hidden" id="weekNumber" value="0">
<input id="updatebut" type="button" value="修改信息"
onclick="updateHint()"></td>
<td align="center" width="45%" id="submitbutTd">
<input id="submitbut" type="button" value="提交信息"
onclick="verificationDate()"></td>
<td align="center" width="45%">
<input id="emptybut" type="button" value="清空信息"
onclick="emptyHint()"></td>
<td><input id="deletebut" type="button" value="取消会议"
onclick="deleteHint()"></td>
</tr>
</table>
<!-- 按钮的表格 -->
<!-- 提示div -->
<div id="videoHint">
需要视频设备,请联系行政部门!
</div>
<!-- 提示div -->
</div>
<!-- 登记信息的div -->
</td>
</tr>
</table>
<!-- 内容 -->
<table><tr><td>
<p>会议室预约系统使用说明:<br/>
1.在未登录状态下,只可浏览预约信息,点击有信息的单元格即可。<br/>
2.点击预约登录即可登录。<br/>
3.登录状态下,可以进行预约,修改,取消会议,选中空白单元格可进行预约,选中自己预约的可进行修改和取消会议。<br/>
注意事项:<br/>
为达到更好的使用和视觉效果,推荐使用谷歌浏览器(Google Chrome),火狐浏览器(Mozilla Firefox), Microsoft Edge。<br/>
</p></td></tr></table>
</div>
<!-- 全屏遮盖层 -->
<div id="bodyCover"></div>
<!-- 全屏遮盖层 -->
<!-- 登录div -->
<div id="loginbox">
<table>
<tr height="60">
<td class="loginTitle">登 录</td>
</tr>
</table>
<table id="loginTable">
<tr>
<td width="100" align="center">邮箱:</td>
<td><input type="text" id="mail" value=""></td>
</tr>
<tr>
<td width="100" align="center">密码:</td>
<td><input type="password" id="password" value=""></td>
</tr>
</table>
<table id="loginButton">
<tr>
<td>
<input id="confirmbut" type="button" value="确定" onclick="loginInformation()"></td>
<td>
<input id="cancelbut" type="button" value="取消" onclick="closeLogin()"></td>
</tr>
</table>
</div>
<!-- 登录div -->
<!-- 退出提示div -->
<div id="logoutHintBox">
<table>
<tr>
<td width="150">
<img src="img/warning.jpg">
</td>
<td>
确定退出?<br/><br/>
<input id="logoutConfirmbut" type="button" value="确定" onclick="logout()">
<input id="logoutCancelbut" type="button" value="取消" onclick="closeLogoutHint()">
</td>
</tr>
</table>
</div>
<!-- 退出提示div -->
<!-- 清空提示div -->
<div id="emptyHintBox">
<table>
<tr>
<td width="150">
<img src="img/warning.jpg">
</td>
<td>
确定清空?<br/><br/>
<input id="emptyConfirmbut" type="button" value="确定" onclick="emptyFun()">
<input id="emptyCancelbut" type="button" value="取消" onclick="closeEmptyHint()">
</td>
</tr>
</table>
</div>
<!-- 清空提示div -->
<!-- 提交提示div -->
<div id="submitHintBox">
<table>
<tr>
<td width="150">
<img src="img/warning.jpg">
</td>
<td>
确定提交?<br/><br/>
<input id="submitConfirmbut" type="button" value="确定">
<input id="submitCancelbut" type="button" value="取消" onclick="closeSubmitHint()">
</td>
</tr>
</table>
</div>
<!-- 提交提示div -->
<!-- 修改提示div -->
<div id="updateHintBox">
<table>
<tr>
<td width="150">
<img src="img/warning.jpg">
</td>
<td>
确定修改?<br/><br/>
<input id="updateConfirmbut" type="button" value="确定">
<input id="updateCancelbut" type="button" value="取消" onclick="closeUpdateHint()">
</td>
</tr>
</table>
</div>
<!-- 修改提示div -->
<!-- 删除提示div -->
<div id="deleteHintBox">
<table>
<tr>
<td width="150">
<img src="img/warning.jpg">
</td>
<td>
确定取消?<br/><br/>
<input id="deleteConfirmbut" type="button" value="确定" onclick="deleteFun()">
<input id="deleteCancelbut" type="button" value="取消" onclick="closeDeleteHint()">
</td>
</tr>
</table>
</div>
<!-- 删除提示div -->
<!-- 登录失败提示div -->
<div id="logDefeatedBox">
<table>
<tr>
<td width="120">
<img src="img/defeated.png">
</td>
<td align="center">
用户不存在或密码输入错误!<br/><br/>
<input id="logDefeatedbut" type="button" value="确定" onclick="closeLogDefeatedHint()">
</td>
</tr>
</table>
</div>
<!-- 登录失败提示div -->
<!-- 预约冲突提示div -->
<div id="verificationHintBox">
<table>
<tr>
<td width="120">
<img src="img/defeated.png">
</td>
<td align="center">
当前时间已经被预约<br/>请刷新页面!<br/><br/>
<input id="verificationHintbut" type="button" value="确定" onclick="closeLogVerificationHint()">
</td>
</tr>
</table>
</div>
<!-- 预约冲突提示div -->
<!-- 会议主题和预约人数为空提示div -->
<div id="noDataHintBox">
<table>
<tr>
<td width="120">
<img src="img/defeated.png">
</td>
<td align="center">
主题和参会人数不能为空!<br/><br/>
<input id="noDataHintbut" type="button" value="确定" onclick="closeLogNoDataHint()">
</td>
</tr>
</table>
</div>
<!-- 会议主题和预约人数为空提示div -->
<!-- 会议主题为空提示div -->
<div id="subjectHintBox">
<table>
<tr>
<td width="120">
<img src="img/defeated.png">
</td>
<td align="center">
会议主题不能为空!<br/><br/>
<input id="subjectHintbut" type="button" value="确定" onclick="closeLogSubjectHint()">
</td>
</tr>
</table>
</div>
<!-- 会议主题为空提示div -->
<!-- 参会人数为空提示div -->
<div id="numberHintBox">
<table>
<tr>
<td width="120">
<img src="img/defeated.png">
</td>
<td align="center">
参会人数不能为空!<br/><br/>
<input id="numberHintbut" type="button" value="确定" onclick="closeLogNumberHint()">
</td>
</tr>
</table>
</div>
<!-- 参会人数为空提示div -->
<!-- 参会人数不是正整数提示div -->
<div id="numberNoHintBox">
<table>
<tr>
<td width="120">
<img src="img/defeated.png">
</td>
<td align="center">
参会人数应为正整数!<br/><br/>
<input id="numberNoHintbut" type="button" value="确定" onclick="closeLogNumberNoHint()">
</td>
</tr>
</table>
</div>
<!-- 参会人数不是正整数提示div -->
<!-- 预约成功提示div -->
<div id="bookingSuccessBox">
<table>
<tr>
<td width="120">
<img src="img/succeed.jpg">
</td>
<td align="center">
预约成功!<br/><br/>
<input id="bookingSuccessHintbut" type="button" value="确定" onclick="closeBookingSuccessHint()">
</td>
</tr>
</table>
</div>
<!-- 预约成功提示div -->
<!-- 修改成功提示div -->
<div id="updateSuccessBox">
<table>
<tr>
<td width="120">
<img src="img/succeed.jpg">
</td>
<td align="center">
修改成功!<br/><br/>
<input id="updateSuccessHintbut" type="button" value="确定" onclick="closeUpdateSuccessHint()">
</td>
</tr>
</table>
</div>
<!-- 修改成功提示div -->
<!-- 取消成功提示div -->
<div id="deleteSuccessBox">
<table>
<tr>
<td width="120">
<img src="img/succeed.jpg">
</td>
<td align="center">
取消成功!<br/><br/>
<input id="deleteSuccessHintbut" type="button" value="确定" onclick="closeDeleteSuccessHint()">
</td>
</tr>
</table>
</div>
<!-- 取消成功提示div -->
<!-- 404提示div -->
<div id="noPageBox">
<table>
<tr>
<td width="120">
<img src="img/defeated.png">
</td>
<td align="center">
没有找到网页!<br/><br/>
<input id="noPageHintbut" type="button" value="确定" onclick="closeNoPageHint()">
</td>
</tr>
</table>
</div>
<!-- 404提示div -->
<!-- 500提示div -->
<div id="serverErrorBox">
<table>
<tr>
<td width="120">
<img src="img/defeated.png">
</td>
<td align="center">
内部服务器出错!<br/><br/>
<input id="serverErrorHintbut" type="button" value="确定" onclick="closeServerErrorHint()">
</td>
</tr>
</table>
</div>
<!-- 500提示div -->
<!-- 预约日期小于当前日期提示div -->
<div id="dateHintBox">
<table>
<tr>
<td width="120">
<img src="img/defeated.png">
</td>
<td align="center">
预约日期小于当前日期<br/>不能预约!<br/><br/>
<input id="dateHintbut" type="button" value="确定" onclick="closeDateHint()">
</td>
</tr>
</table>
</div>
<!-- 预约日期小于当前日期提示div -->
</body>
</html>
2.css代码
@charset "UTF-8";
body {
font-family: "微软雅黑";
}
table {
border-collapse: collapse;
}
table td {
padding: 0;
}
#bodyDiv {
/* border: solid 1px #BBB; */
background-color: white;
border-radius: 10px;
padding: 0px 10px;
overflow: "auto";
}
.headline {
height: 5%;
line-height:200%;
width: 100%;
display: flex;
flex-direction:row;
justify-content:space-between;
}
.caption{
font-size:1.6rem;
font-weight: bold;
color: #333;
margin-left:4px;
}
#meetingRoomNumber {
padding: 0px 4px 0px 4px;
font-size: 1.1rem;
font-family: "微软雅黑";
}
.registerMessageTitle {
font-size: 1.5rem;
font-family: "微软雅黑";
}
.bookingTitle {
font-size: 1.5rem;
font-family: "微软雅黑";
}
#tablecontent {
height: 100%;
width: 99%;
font-size: 0.9rem;
border: solid #BBB;
cellspacing: 0px;
cellpadding: 0px;
border-width: 1px 0px 0px 1px;
}
#tablecontent td {
border: solid #BBB;
border-width: 0px 1px 1px 0px;
}
#inputbox {
width: 99%;
height: 100%;
font-size: 0.9rem;
font-family: "微软雅黑";
border: solid 1px #BBB;
}
#videoHint {
display: none;
width: 100%;
text-align: center;
font-size: 1rem;
font-family: "微软雅黑";
color: red;
}
#buttonTable {
width: 100%;
height: 15%;
}
.date {
float: right;
}
.time {
float: left;
}
#header {
background-color: #EEE;
font-size: 1rem;
height: 55px;
}
#bodyCover {
display: none;
position: absolute;
top: 0%;
left: 0%;
width: 100%;
height: 100%;
background-color: #EEE;
z-index: 0;
opacity: 0.1;
}
#loginbox {
font-size: 22px;
font-family: "微软雅黑";
display: none;
margin: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
width: 350px;
height: 300px;
border: 1px solid black;
border-radius: 10px;
background-color: #EEE;
z-index: 1;
padding: 20px;
}
#inputBoxCover {
position: absolute;
width: 20%;
height: 85%;
background-color: #EEE;
z-index: 0;
opacity: 0;
}
#mail {
font-size: 0.9rem;
font-family: "微软雅黑";
width: 240px;
height: 28px;
}
#password {
font-size: 0.9rem;
font-family: "微软雅黑";
width: 240px;
height: 28px;
}
#loginLabel:hover {
cursor: pointer;
}
#logoutLabel:hover {
cursor: pointer;
}
.checkedBgColor {
background-color: #EEE;
}
.myDataBgColor {
background-color: #FFFFCC;
}
.otherDataBgColor {
background-color: #CCFFFF;
}
#lastWeek {
cursor: pointer;
}
#thisWeek {
cursor: pointer;
}
#nextWeek {
cursor: pointer;
}
#lastWeekBut {
cursor: pointer;
}
#nextWeekBut {
cursor: pointer;
}
.loginTitle {
font-size: 1.5rem;
font-family: "微软雅黑";
width: 350px;
text-align: center;
}
#allTable {
width: 100%;
height: 90%;
}
#registerTable {
width: 100%;
height: 12%;
}
#bookingTable{
width: 100%;
height: 12%;
}
#inputTable{
width: 100%;
font-size:0.9rem;
}
#inputTable tr{
height: 42px;
}
#labelTable{
width: 100%;
font-size:0.9rem;
}
#labelTable tr{
height: 42px;
}
#loginTable tr{
height: 60px;
}
#loginButton tr{
height: 100px;
}
#loginButton td{
width: 175px;
text-align: center;
}
#loginLabel{
margin-right:6px;
font-size: 1.5rem;
font-family: "微软雅黑";
}
.thisDayBgColor{
background-color: yellow;
}
#logoutHintBox {
background-color: white;
font-size: 22px;
font-family: "微软雅黑";
display: none;
margin: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
width: 340px;
height: 90px;
border: 1px solid black;
border-radius: 10px;
z-index: 1;
padding: 20px;
}
#logoutHintBox td{
font-size: 22px;
font-family: "微软雅黑";
}
#emptyHintBox {
background-color: white;
font-size: 22px;
font-family: "微软雅黑";
display: none;
margin: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
width: 340px;
height: 90px;
border: 1px solid black;
border-radius: 10px;
z-index: 1;
padding: 20px;
}
#emptyHintBox td{
font-size: 22px;
font-family: "微软雅黑";
}
#submitHintBox {
background-color: white;
font-size: 22px;
font-family: "微软雅黑";
display: none;
margin: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
width: 340px;
height: 90px;
border: 1px solid black;
border-radius: 10px;
z-index: 1;
padding: 20px;
}
#submitHintBox td{
font-size: 22px;
font-family: "微软雅黑";
}
#updateHintBox {
background-color: white;
font-size: 22px;
font-family: "微软雅黑";
display: none;
margin: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
width: 340px;
height: 90px;
border: 1px solid black;
border-radius: 10px;
z-index: 1;
padding: 20px;
}
#updateHintBox td{
font-size: 22px;
font-family: "微软雅黑";
}
#deleteHintBox {
background-color: white;
font-size: 22px;
font-family: "微软雅黑";
display: none;
margin: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
width: 340px;
height: 90px;
border: 1px solid black;
border-radius: 10px;
z-index: 1;
padding: 20px;
}
#deleteHintBox td{
font-size: 22px;
font-family: "微软雅黑";
}
#logDefeatedBox {
background-color: white;
font-size: 22px;
font-family: "微软雅黑";
display: none;
margin: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
width: 400px;
height: 100px;
border: 1px solid black;
border-radius: 10px;
z-index: 1;
padding: 20px;
}
#logDefeatedBox td{
font-size: 22px;
font-family: "微软雅黑";
}
#verificationHintBox {
background-color: white;
font-size: 22px;
font-family: "微软雅黑";
display: none;
margin: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
width: 360px;
height: 100px;
border: 1px solid black;
border-radius: 10px;
z-index: 1;
padding: 20px;
}
#verificationHintBox td{
font-size: 22px;
font-family: "微软雅黑";
}
#noDataHintBox {
background-color: white;
font-size: 22px;
font-family: "微软雅黑";
display: none;
margin: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
width: 390px;
height: 100px;
border: 1px solid black;
border-radius: 10px;
z-index: 1;
padding: 20px;
}
#noDataHintBox td{
font-size: 22px;
font-family: "微软雅黑";
}
#subjectHintBox {
background-color: white;
font-size: 22px;
font-family: "微软雅黑";
display: none;
margin: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
width: 340px;
height: 100px;
border: 1px solid black;
border-radius: 10px;
z-index: 1;
padding: 20px;
}
#subjectHintBox td{
font-size: 22px;
font-family: "微软雅黑";
}
#numberHintBox {
background-color: white;
font-size: 22px;
font-family: "微软雅黑";
display: none;
margin: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
width: 340px;
height: 100px;
border: 1px solid black;
border-radius: 10px;
z-index: 1;
padding: 20px;
}
#numberHintBox td{
font-size: 22px;
font-family: "微软雅黑";
}
#numberNoHintBox {
background-color: white;
font-size: 22px;
font-family: "微软雅黑";
display: none;
margin: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
width: 340px;
height: 100px;
border: 1px solid black;
border-radius: 10px;
z-index: 1;
padding: 20px;
}
#numberNoHintBox td{
font-size: 22px;
font-family: "微软雅黑";
}
#bookingSuccessBox {
background-color: white;
font-size: 22px;
font-family: "微软雅黑";
display: none;
margin: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
width: 310px;
height: 80px;
border: 1px solid black;
border-radius: 10px;
z-index: 1;
padding: 20px;
}
#bookingSuccessBox td{
font-size: 22px;
font-family: "微软雅黑";
}
#updateSuccessBox {
background-color: white;
font-size: 22px;
font-family: "微软雅黑";
display: none;
margin: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
width: 310px;
height: 80px;
border: 1px solid black;
border-radius: 10px;
z-index: 1;
padding: 20px;
}
#updateSuccessBox td{
font-size: 22px;
font-family: "微软雅黑";
}
#deleteSuccessBox {
background-color: white;
font-size: 22px;
font-family: "微软雅黑";
display: none;
margin: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
width: 310px;
height: 80px;
border: 1px solid black;
border-radius: 10px;
z-index: 1;
padding: 20px;
}
#deleteSuccessBox td{
font-size: 22px;
font-family: "微软雅黑";
}
#noPageBox {
background-color: white;
font-size: 22px;
font-family: "微软雅黑";
display: none;
margin: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
width: 300px;
height: 100px;
border: 1px solid black;
border-radius: 10px;
z-index: 1;
padding: 20px;
}
#noPageBox td{
font-size: 22px;
font-family: "微软雅黑";
}
#serverErrorBox {
background-color: white;
font-size: 22px;
font-family: "微软雅黑";
display: none;
margin: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
width: 310px;
height: 100px;
border: 1px solid black;
border-radius: 10px;
z-index: 1;
padding: 20px;
}
#serverErrorBox td{
font-size: 22px;
font-family: "微软雅黑";
}
#dateHintBox {
background-color: white;
font-size: 22px;
font-family: "微软雅黑";
display: none;
margin: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
width: 370px;
height: 100px;
border: 1px solid black;
border-radius: 10px;
z-index: 1;
padding: 20px;
}
#dateHintBox td{
font-size: 22px;
font-family: "微软雅黑";
}
#lastWeekBut{
width: 19px;
height: 19px;
background-color: white;
border: solid 1px white;
background-image: url(../img/last.png);
}
#nextWeekBut{
width: 19px;
height: 18px;
background-color: white;
border: solid 1px white;
background-image: url(../img/next.png);
}
p{
font-size: 0.8rem;
font-family: "微软雅黑";
color: red;
}
3.js代码
//返回失败页面提醒
function errorPopup(status){
if(status == 404){
noPageHint();
}else if(status == 500){
serverErrorHint();
}
}
var timeArray = new Array("08:00-08:30",
"08:30-09:00",
"09:00-09:30",
"09:30-10:00",
"10:00-10:30",
"10:30-11:00",
"11:00-11:30",
"11:30-12:00",
"13:00-13:30",
"13:30-14:00",
"14:00-14:30",
"14:30-15:00",
"15:00-15:30",
"15:30-16:00",
"16:00-16:30",
"16:30-17:00",
"17:00-17:30",
"17:30-18:00",
"18:00-18:30",
"18:30-19:00",
"19:00-19:30");
//创建表格
function createTable() {
var header = "<tr id='header' align='center'>"
+ "<td width='9%' id='classify'>" + "<div class='date'>日期</div>"
+ "<div class='time'>时间</div></td>"
+ "<td width='12.8%' id='firstLine'></td>"
+ "<td width='12.8%' id='secondLine'></td>"
+ "<td width='12.8%' id='thirdLine'></td>"
+ "<td width='12.8%' id='fourthLine'></td>"
+ "<td width='12.8%' id='fifthLine'></td>"
+ "<td width='12.8%' id='sixthLine'></td>"
+ "<td width='12.8%' id='seventhLine'></td>" + "</tr>";
$('#tablecontent').append(header);
var col = tablecontent.rows.item(0).cells.length;
var str = "";
for (i = 0; i < timeArray.length; i++) {
var timeStr = "<tr><td align='center' height='24'>" + timeArray[i] + "</td>";
var tdStr = "";
for (j = 1; j < col; j++) {
var rowNumber = i + 1;
tdStr += "<td id='cell" + rowNumber + "_" + j + "' align='center'></td>";
}
str = timeStr + tdStr + "</tr>";
$('#tablecontent').append(str);
}
}
//单元格加斜线
function line() {
var canvas = document.getElementById("line");
var width = $("#classify").width();
var height = $("#classify").height();
if (canvas.getContext) {
var ctx = canvas.getContext("2d");
ctx.fill();
ctx.lineWidth = 1;
ctx.strokeStyle = "#BBB";
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(width, height);
ctx.stroke();
ctx.closePath();
document.getElementById("classify").style.backgroundImage = "url('" + ctx.canvas.toDataURL() + "')";
document.getElementById("classify").style.background.attachment = "fixed";
}
}
//创建会议室下拉列表
function createSelect() {
var urlStr = "MeetingRoomId" + "?" + Math.random();
$.ajax({
url : urlStr,
type : "get",
success : function(resp) {
// console.log(resp);
var dataArray = JSON.parse(resp);
// console.log(dataArray);
for (var i = 0; i < dataArray.length; i++) {
// console.log(dataArray[i].id);
var str = "<option value='" + dataArray[i].id + "'>" + dataArray[i].roomNumber + "</option>";
$("#meetingRoomNumber").append(str);
}
switchoverRoom();
},
error : function(resp) {
var status = resp.status;
errorPopup(status);
}
});
}
var optionArray = new Array("08:00",
"08:30",
"09:00",
"09:30",
"10:00",
"10:30",
"11:00",
"11:30",
"12:00",
"13:00",
"13:30",
"14:00",
"14:30",
"15:00",
"15:30",
"16:00",
"16:30",
"17:00",
"17:30",
"18:00",
"18:30",
"19:00",
"19:30");
//开始时间和结束时间下拉列表
function timeSelect(){
for (var i = 0; i < optionArray.length; i++) {
if(optionArray[i] != "12:00" && optionArray[i] != "19:30"){
var str = "<option>" + optionArray[i] + "</option>";
$("#startTime").append(str);
}
if(optionArray[i] != "08:00" && optionArray[i] != "13:00"){
var str = "<option>" + optionArray[i] + "</option>";
$("#endTime").append(str);
}
}
}
//切换会议室
function switchoverRoom() {
var urlStr = "GetRoomId" + "?" + Math.random();
$.ajax({
url : urlStr,
type : "get",
success : function(resp) {
// console.log("resp=" + resp);
if(resp != ""){
if(resp == 1){
$("#meetingRoomNumber option:eq(0)").attr("selected","selected");
} else if(resp == 2){
$("#meetingRoomNumber option:eq(1)").attr("selected","selected");
} else if(resp == 3){
$("#meetingRoomNumber option:eq(2)").attr("selected","selected");
} else if(resp == 4){
$("#meetingRoomNumber option:eq(3)").attr("selected","selected");
} else if(resp == 5){
$("#meetingRoomNumber option:eq(4)").attr("selected","selected");
}
$("#roomId").val(resp);
selectFun();
}else{
selectFun();
}
},
error : function(resp) {
var status = resp.status;
errorPopup(status);
}
});
}
//结束时间
function endTimeFun(startHour, startMinute) {
var time;
var minute = startMinute + 30;
if (minute == 60) {
var hour = startHour + 1;
time = hour + ":" + "00";
} else {
time = startHour + ":" + minute;
}
$("#endTime").val(time);
}
//确定数据所在的列
function confirmDate(time) {
var year = time.slice(0, 4);
var month = time.slice(5, 7);
var day = time.slice(8, 10);
var col = tablecontent.rows.item(0).cells.length;
for(var i = 1; i < col; i++){
var thText = $("#tablecontent").find("tr").eq(0).find("td").eq(i).text();
var thTextYear = thText.slice(3, 7);
var thTextMonth = thText.slice(8, 10);
var thTextDay = thText.slice(11, 13);
if (year == thTextYear && month == thTextMonth && day == thTextDay) {
var colNumber = i;
}
}
return colNumber;
}
//设置单元格要显示的 内容
function tdData(str){
var width = $("#cell1_1").width();
var words = width/14;
var showData;
// console.log(words);
if(str != ""){
if(str.length < words){
showData = str;
}else{
var length = parseInt(words);
// console.log(length);
var data = str.slice(0, length-2);
// console.log(data);
showData = data + "..."
}
}
return showData;
}
//确定数据显示的行,并把数据传给单元格
function showData(time, timeScope, str) {
var rowNumber;
var timeScopeArray = timeScope.split(",");
var colNumber = confirmDate(time);
// console.log("列号=" + colNumber);
for (var i = 0; i < timeScopeArray.length; i++) {
rowNumber = timeScopeArray[i];
// console.log("行号=" + rowNumber);
$("#tablecontent").find("tr").eq(rowNumber).find("td").eq(colNumber)
.append(str)
.addClass("otherDataBgColor");
}
}
//合并单元格
function mergeCells() {
var colNumber = tablecontent.rows.item(0).cells.length;
var rowNumber = tablecontent.rows.length;
var idStr = "";
for (i = 1; i <= colNumber; i++) {
var str = "";
for (j = 1; j < rowNumber; j++) {
var text = $("#tablecontent").find("tr").eq(j).find("td").eq(i).text();
if (text != "") {
var tdId = $("#tablecontent").find("tr").eq(j).find("td").eq(i).attr("id");
var tdHiddenId = $("#" + tdId + " input").attr("id");
if (str == tdHiddenId) {
idStr = idStr + tdId + ",";
tablecontent.rows[firstRow].cells[i].rowSpan = tablecontent.rows[firstRow].cells[i].rowSpan + 1;
} else {
var firstRow = j;
str = tdHiddenId;
}
} else {
var str = "";
}
}
}
// console.log(idStr);
var idArray = idStr.split(",");
for (i = 0; i < idArray.length; i++) {
if (idArray[i] != "") {
$("#" + idArray[i]).remove();
}
}
}
//根据开始时间和结束时间,获得预约的行号
function judgeTime(startTime, endTime) {
var rows = tablecontent.rows.length;
var number = "";
var str = "";
var j = 0;
for(i = 1; i < rows ;i ++ ){
var time = $("#tablecontent").find("tr").eq(i).find("td").eq(0).text();
var timeArray = time.split("-");
if(startTime == timeArray[0]){
j=1;
}
if(j == 1){
str = str + i + ",";
if(endTime == timeArray[1]){
number = str;
}
}
}
var rowNumber = number.slice(0, number.length - 1);
// console.log(rowNumber);
return rowNumber;
}
//按钮的隐藏
function hideButton() {
$("#submitbutTd").hide();
$("#emptybut").hide();
$("#updatebut").hide();
$("#deletebut").hide();
$("#inputTable").show();
$("#labelTable").hide();
$("#registerTable").hide();
$("#bookingTable").show();
}
//结束时间下拉列表的上半部分选项的禁用(所点单元格内容为空)
function selectDisabledFunA(time) {
var count = 0;
for (var i = optionArray.length - 3; i >= 0; i--) {
var value = $("#endTime option:eq(" + i + ")").val();
if (time == value) {
count++;
} else {
if (count > 0) {
$("#endTime option:eq(" + i + ")").attr("disabled", true);
}
}
}
}
//结束时间下拉列表的上半部分选项的禁用(所点单元格内容不为空)
function selectDisabledFunB(time) {
var count = 0;
for (var i = optionArray.length - 3; i >= 0; i--) {
var value = $("#endTime option:eq(" + i + ")").val();
if (time == value) {
$("#endTime option:eq(" + i + ")").attr("disabled", true);
count++;
} else if (time == "13:00" && value == "12:00"){
$("#endTime option:eq(" + i + ")").attr("disabled", true);
count++;
}else {
if (count > 0) {
$("#endTime option:eq(" + i + ")").attr("disabled", true);
}
}
}
}
//结束时间下拉列表的下半部分选项的禁用(所点单元格内容为空)
function selectDisabledFunC(id) {
var number = id.slice(4);
var numberArray = number.split("_");
var rowNumber = parseInt(numberArray[0]);
var colNumber = parseInt(numberArray[1]);
var rows = tablecontent.rows.length;
for (i = rowNumber; i < rows; i ++) {
var tdText = $("#cell" + i + "_" + colNumber).text();
if(tdText != ""){
var rownum = i;
break;
}
}
var time = $("#tablecontent").find("tr").eq(rownum).find("td").eq(0).text();
var timeArray = time.split("-");
var count = 0;
var optionLength = optionArray.length - 2;
for (i = 0; i < optionLength; i++) {
var value = $("#endTime option:eq(" + i + ")").val();
if (timeArray[1] == value) {
$("#endTime option:eq(" + i + ")").attr("disabled", true);
count++;
} else {
if (count > 0) {
$("#endTime option:eq(" + i + ")").attr("disabled", true);
}
}
}
}
//结束时间下拉列表的下半部分选项的禁用(所点单元格内容不为空)
function selectDisabledFunD(id) {
var number = id.slice(4);
var numberArray = number.split("_");
var rowNumber = parseInt(numberArray[0]);
var colNumber = parseInt(numberArray[1]);
var rows = tablecontent.rows.length;
for (i = rowNumber; i < rows; i ++) {
var tdText = $("#cell" + i + "_" + colNumber).text();
if(tdText != "" && i != rowNumber){
var rownum = i;
break;
}
}
var time = $("#tablecontent").find("tr").eq(rownum).find("td").eq(0).text();
var timeArray = time.split("-");
var count = 0;
var optionLength = optionArray.length - 2;
for (i = 0; i < optionLength; i++) {
var value = $("#endTime option:eq(" + i + ")").val();
if (timeArray[1] == value) {
$("#endTime option:eq(" + i + ")").attr("disabled", true);
count++;
} else {
if (count > 0) {
$("#endTime option:eq(" + i + ")").attr("disabled", true);
}
}
}
}
//清空信息
function emptyFun() {
$("#subject").val("");
$("#department").val("");
$("#number").val("");
$("input[type='checkbox']").prop("checked", false);
$("#serviceNo")[0].checked = true;
$("#remark").val("");
closeEmptyHint();
videoHintDiv();
}
function videoHintDiv(){
var value = $("#facility3").is(":checked");
// console.log(value);
if(value == true){
$("#videoHint").show();
}else{
$("#videoHint").hide();
}
}
$(function() {
switchoverWeek();
createTable();
createSelect();
timeSelect();
weekDate();
hideButton();
size();
line();
// 鼠标经过单元格时单元格的背景色
$("#tablecontent td").hover(function() {
$(this).css("background-color", "#EEE");
}, function() {
$(this).css("background-color", "");
});
// 鼠标经过表格每一行的时候每一行第一个单元格的背景色
$("#tablecontent tr").hover(function() {
$(this).children("td:eq(0)").css("background-color", "#EEE");
}, function() {
$(this).children("td:eq(0)").css("background-color", "");
});
// 会议室下拉列表改变值所触发的事件
$("#meetingRoomNumber").change(function() {
var roomId = $(this).val();
var urlStr = "RoomId" + "?" + Math.random();
$.ajax({
url : urlStr,
type : "get",
data : {
roomId : roomId,
},
success : function(resp) {
window.location.reload();
},
error : function(resp) {
var status = resp.status;
errorPopup(status);
}
});
});
// 点击开始时间下拉列表所触发的事件
$("#startTime").click(function() {
var startTime = $(this).val();
var endTime = $("#endTime").val();
var startTimeArray = startTime.split(":");
var endTimeArray = endTime.split(":");
var startHour = parseInt(startTimeArray[0]);
var endHour = parseInt(endTimeArray[0]);
var startMinute = parseInt(startTimeArray[1]);
var endMinute = parseInt(endTimeArray[1]);
if (startHour > endHour) {
endTimeFun(startHour, startMinute);
} else if (startHour == endHour && startMinute >= endMinute) {
endTimeFun(startHour, startMinute);
}
});
$("#facility3").click(function() {
videoHintDiv();
});
$("#number").keydown(function (event) {
var key = parseInt(event.keyCode);
// console.log(key);
if (key >= 96 && key <= 105 || key >= 48 && key <= 57 || key == 8) {
$("#number").text("");
} else {
return false;
}
});
});
//获取屏幕大小,调节页面自适应
function size(){
var width = window.screen.width;
var height = window.screen.height;
var scaling = window.devicePixelRatio;
width = width * 0.966 * scaling;
height = height * 0.79 * scaling;
$("#bodyDiv").width(width + "px");
$("#bodyDiv").height(height + "px");
}
//获取时间,周,年,月,日
function dateStr(AddDayCount) {
var date = new Date();
date.setDate(date.getDate() + AddDayCount);
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var weekNumber = date.getDay();
var week;
if (weekNumber == 1) {
week = "一";
} else if (weekNumber == 2) {
week = "二";
} else if (weekNumber == 3) {
week = "三";
} else if (weekNumber == 4) {
week = "四";
} else if (weekNumber == 5) {
week = "五";
} else if (weekNumber == 6) {
week = "六";
} else if (weekNumber == 0) {
week = "日";
}
if (month < 10) {
month = "0" + month;
}
if (day < 10) {
day = "0" + day;
}
return "周" + week + "<br/>(" + year + "/" + month + "/" + day + ")";
}
//获取 月.日
function dayStr(AddDayCount) {
var date = new Date();
date.setDate(date.getDate() + AddDayCount);
var month = date.getMonth() + 1;
var day = date.getDate();
if (month < 10) {
month = "0" + month;
}
if (day < 10) {
day = "0" + day;
}
return month + "." + day;
}
//每周的日期范围(周一到周五)
function weekDate(){
var date = new Date();
var day = date.getDay();
if(day == 0){
day = 7;
}
var lastWeek = dayStr(-6-day) + "-" + dayStr(-day);
$("#lastWeek").text(lastWeek);
var thisWeek = dayStr(1-day) + "-" + dayStr(7-day);
$("#thisWeek").text(thisWeek);
var nextWeek = dayStr(8-day) + "-" + dayStr(14-day);
$("#nextWeek").text(nextWeek);
}
//本周的时间
function thisWeekDate(){
var date = new Date();
var day = date.getDay();
if(day == 1){
$("#firstLine").addClass("thisDayBgColor");
}else if(day == 2){
$("#secondLine").addClass("thisDayBgColor");
}else if(day == 3){
$("#thirdLine").addClass("thisDayBgColor");
}else if(day == 4){
$("#fourthLine").addClass("thisDayBgColor");
}else if(day == 5){
$("#fifthLine").addClass("thisDayBgColor");
}else if(day == 6){
$("#sixthLine").addClass("thisDayBgColor");
}else if(day == 0){
$("#seventhLine").addClass("thisDayBgColor");
}
thDate(1);
}
//表头单元格的日期
function thDate(weekNumber){
var date = new Date();
var day = date.getDay();
if(day == 0){
day = 7;
}
$("#firstLine").html(dateStr(weekNumber-day));
$("#secondLine").html(dateStr(weekNumber+1-day));
$("#thirdLine").html(dateStr(weekNumber+2-day));
$("#fourthLine").html(dateStr(weekNumber+3-day));
$("#fifthLine").html(dateStr(weekNumber+4-day));
$("#sixthLine").html(dateStr(weekNumber+5-day));
$("#seventhLine").html(dateStr(weekNumber+6-day));
}
//切换周
function switchoverWeek() {
var urlStr = "GetWeek" + "?" + Math.random();
$.ajax({
url : urlStr,
type : "get",
success : function(resp) {
// console.log("resp=====" + resp);
var respInt = parseInt(resp);
// console.log("respInt=" + respInt);
if(resp != ""){
$("#weekNumber").val(respInt);
if(respInt == -1){
thDate(-6);
$("#lastWeek").css("background","#D6D6D6");
} else if(respInt == 0){
thisWeekDate();
$("#thisWeek").css("background","#D6D6D6");
} else if(respInt == 1){
thDate(8);
$("#nextWeek").css("background","#D6D6D6");
} else{
thDate(respInt * 7 + 1);
}
}else{
thisWeekDate();
$("#thisWeek").css("background","#D6D6D6");
}
},
error : function(resp) {
var status = resp.status;
errorPopup(status);
}
});
}
$(function() {
// 点击上周所触发的事件
$("#lastWeek").click(function() {
var urlStr = "Week" + "?" + Math.random();
var whatWeek = -1;
$.ajax({
url : urlStr,
type : "get",
data : {
whatWeek : whatWeek,
},
success : function(resp) {
window.location.reload();
},
error : function(resp) {
var status = resp.status;
errorPopup(status);
}
});
});
// 点击本周所触发的事件
$("#thisWeek").click(function() {
var urlStr = "Week" + "?" + Math.random();
var whatWeek = 0;
$.ajax({
url : urlStr,
type : "get",
data : {
whatWeek : whatWeek,
},
success : function(resp) {
window.location.reload();
},
error : function(resp) {
var status = resp.status;
errorPopup(status);
}
});
});
// 点击下周所触发的事件
$("#nextWeek").click(function() {
var urlStr = "Week" + "?" + Math.random();
var whatWeek = 1;
$.ajax({
url : urlStr,
type : "get",
data : {
whatWeek : whatWeek,
},
success : function(resp) {
window.location.reload();
},
error : function(resp) {
var status = resp.status;
errorPopup(status);
}
});
});
// 点击上周按钮所触发的事件
$("#lastWeekBut").click(function() {
var urlStr = "Week" + "?" + Math.random();
var value = $("#weekNumber").val();
var valueInt = parseInt(value);
var whatWeek = valueInt - 1;
$.ajax({
url : urlStr,
type : "get",
data : {
whatWeek : whatWeek,
},
success : function(resp) {
window.location.reload();
},
error : function(resp) {
var status = resp.status;
errorPopup(status);
}
});
});
// 点击下周按钮所触发的事件
$("#nextWeekBut").click(function() {
var urlStr = "Week" + "?" + Math.random();
var value = $("#weekNumber").val();
var valueInt = parseInt(value);
var whatWeek = valueInt + 1;
$.ajax({
url : urlStr,
type : "get",
data : {
whatWeek : whatWeek,
},
success : function(resp) {
window.location.reload();
},
error : function(resp) {
var status = resp.status;
errorPopup(status);
}
});
});
});
//退出提示
function logoutHint() {
document.getElementById("logoutHintBox").style.display = "block";
document.getElementById("bodyCover").style.display = "block";
}
function closeLogoutHint() {
document.getElementById("logoutHintBox").style.display = "none";
document.getElementById("bodyCover").style.display = "none";
}
//清空提示
function emptyHint() {
document.getElementById("emptyHintBox").style.display = "block";
document.getElementById("bodyCover").style.display = "block";
}
function closeEmptyHint() {
document.getElementById("emptyHintBox").style.display = "none";
document.getElementById("bodyCover").style.display = "none";
}
//提交提示
function submitHint() {
document.getElementById("submitHintBox").style.display = "block";
document.getElementById("bodyCover").style.display = "block";
}
function closeSubmitHint() {
document.getElementById("submitHintBox").style.display = "none";
document.getElementById("bodyCover").style.display = "none";
}
//修改提示
function updateHint() {
document.getElementById("updateHintBox").style.display = "block";
document.getElementById("bodyCover").style.display = "block";
}
function closeUpdateHint() {
document.getElementById("updateHintBox").style.display = "none";
document.getElementById("bodyCover").style.display = "none";
}
//删除提示
function deleteHint() {
document.getElementById("deleteHintBox").style.display = "block";
document.getElementById("bodyCover").style.display = "block";
}
function closeDeleteHint() {
document.getElementById("deleteHintBox").style.display = "none";
document.getElementById("bodyCover").style.display = "none";
}
//登录失败提示
function logDefeatedHint() {
document.getElementById("logDefeatedBox").style.display = "block";
document.getElementById("bodyCover").style.display = "block";
}
function closeLogDefeatedHint() {
document.getElementById("logDefeatedBox").style.display = "none";
document.getElementById("bodyCover").style.display = "none";
}
//预约冲突提示
function verificationHint() {
document.getElementById("verificationHintBox").style.display = "block";
document.getElementById("bodyCover").style.display = "block";
}
function closeLogVerificationHint() {
document.getElementById("verificationHintBox").style.display = "none";
document.getElementById("bodyCover").style.display = "none";
}
//会议主题和预约人数为空提示
function noDataHint() {
document.getElementById("noDataHintBox").style.display = "block";
document.getElementById("bodyCover").style.display = "block";
}
function closeLogNoDataHint() {
document.getElementById("noDataHintBox").style.display = "none";
document.getElementById("bodyCover").style.display = "none";
}
//会议主题为空提示
function subjectHint() {
document.getElementById("subjectHintBox").style.display = "block";
document.getElementById("bodyCover").style.display = "block";
}
function closeLogSubjectHint() {
document.getElementById("subjectHintBox").style.display = "none";
document.getElementById("bodyCover").style.display = "none";
}
//参会人数为空提示
function numberHint() {
document.getElementById("numberHintBox").style.display = "block";
document.getElementById("bodyCover").style.display = "block";
}
function closeLogNumberHint() {
document.getElementById("numberHintBox").style.display = "none";
document.getElementById("bodyCover").style.display = "none";
}
//参会人数不是正整数提示
function numberNoHint() {
document.getElementById("numberNoHintBox").style.display = "block";
document.getElementById("bodyCover").style.display = "block";
}
function closeLogNumberNoHint() {
document.getElementById("numberNoHintBox").style.display = "none";
document.getElementById("bodyCover").style.display = "none";
}
//预约成功提示
function bookingSuccessHint() {
document.getElementById("bookingSuccessBox").style.display = "block";
document.getElementById("bodyCover").style.display = "block";
}
function closeBookingSuccessHint() {
document.getElementById("bookingSuccessBox").style.display = "none";
document.getElementById("bodyCover").style.display = "none";
window.location.reload();
}
//修改成功提示
function updateSuccessHint() {
document.getElementById("updateSuccessBox").style.display = "block";
document.getElementById("bodyCover").style.display = "block";
}
function closeUpdateSuccessHint() {
document.getElementById("updateSuccessBox").style.display = "none";
document.getElementById("bodyCover").style.display = "none";
window.location.reload();
}
//取消成功提示
function deleteSuccessHint() {
document.getElementById("deleteSuccessBox").style.display = "block";
document.getElementById("bodyCover").style.display = "block";
}
function closeDeleteSuccessHint() {
document.getElementById("deleteSuccessBox").style.display = "none";
document.getElementById("bodyCover").style.display = "none";
window.location.reload();
}
//404提示
function noPageHint() {
document.getElementById("noPageBox").style.display = "block";
document.getElementById("bodyCover").style.display = "block";
}
function closeNoPageHint() {
document.getElementById("noPageBox").style.display = "none";
document.getElementById("bodyCover").style.display = "none";
}
//500提示
function serverErrorHint() {
document.getElementById("serverErrorBox").style.display = "block";
document.getElementById("bodyCover").style.display = "block";
}
function closeServerErrorHint() {
document.getElementById("serverErrorBox").style.display = "none";
document.getElementById("bodyCover").style.display = "none";
}
//预约日期小于当前日期提示
function dateHint() {
document.getElementById("dateHintBox").style.display = "block";
document.getElementById("bodyCover").style.display = "block";
}
function closeDateHint() {
document.getElementById("dateHintBox").style.display = "none";
document.getElementById("bodyCover").style.display = "none";
}
//点击登录所触发的事件
function login() {
document.getElementById("loginbox").style.display = "block";
document.getElementById("bodyCover").style.display = "block";
$("#loginThing").val("true");
}
//关闭登录窗口
function closeLogin() {
document.getElementById("loginbox").style.display = "none";
document.getElementById("bodyCover").style.display = "none";
}
//登录
function loginInformation() {
var urlStr = "Login" + "?" + Math.random();
var mail = $("#mail").val();
var password = $("#password").val();
if (mail == "" || password == "") {
alert("内容不能为空!");
return;
} else {
$.ajax({
url : urlStr,
type : "get",
data : {
mail : mail,
password : password
},
success : function(resp) {
// console.log(resp);
if (resp == "false") {
logDefeatedHint();
} else {
window.location.reload();
}
},
error : function(resp) {
var status = resp.status;
errorPopup(status);
}
});
}
}
//按回车触发的事件
$(document).keydown(function(event) {
if (event.keyCode == "13") {
if ($("#loginThing").val() == "true") {
$("#confirmbut").click();
} else {
return;
}
}
});
//登录
$(document).ready(function() {
var urlStr = "GetSession" + "?" + Math.random();
$.ajax({
url : urlStr,
type : "get",
success : function(resp) {
// console.log("resp=" + resp);
if (resp != "") {
var respArray = resp.split(",");
$("#creator").text(respArray[2]);
var loginLabel = respArray[2] + " " + respArray[0]
$("#userinfo").text(loginLabel);
$("#loginLabel").hide();
$("#loginThing").val("");
$("#userinfo").show();
$("#logoutLabel").show();
} else {
return;
}
},
error : function(resp) {
var status = resp.status;
errorPopup(status);
}
});
});
//登陆成功后数据的背景颜色
function dataBgColor() {
var text = "";
var rowNumber = tablecontent.rows.length;
// console.log(rowNumber);
var userinfo = $("#userinfo").text();
// console.log("userinfo = " + userinfo);
if (userinfo != "") {
var userinfoArray = userinfo.split(" ");
text = userinfoArray[0];
}
for (i = 1; i < rowNumber; i++) {
var colNumber = tablecontent.rows[i].cells.length;
// console.log("colNumber :" + colNumber);
for (j = 1; j < colNumber; j++) {
var content = $("#tablecontent").find("tr").eq(i).find("td").eq(j).html();
// console.log("content :" + content);
if (content != "") {
var tdId = $("#tablecontent").find("tr").eq(i).find("td").eq(j).attr("id");
var tdHiddenId = $("#" + tdId + " input").attr("id");
// console.log(tdHiddenId);
var creator = $("#" + tdHiddenId).attr("creator");
if (text == creator) {
$("#tablecontent").find("tr").eq(i).find("td").eq(j)
.removeClass("otherDataBgColor");
$("#tablecontent").find("tr").eq(i).find("td").eq(j)
.addClass("myDataBgColor");
}
}
}
}
}
//退出
function logout() {
var urlStr = "Logout" + "?" + Math.random();
$.ajax({
url : urlStr,
type : "get",
success : function(resp) {
window.location.reload();
},
error : function(resp) {
var status = resp.status;
errorPopup(status);
}
});
}
//查询数据
function selectFun() {
var urlStr = "MeetingRoom" + "?" + Math.random();
$("#callMethod").val("select");/* 改变隐藏域的value值,让后台调用相应的方法 */
var callMethod = $("#callMethod").val();/* 获取隐藏域的value值 */
var roomId = $("#roomId").val();
$.ajax({
url : urlStr,
type : "get",
data : {
callMethod : callMethod,
roomId : roomId
},
success : function(resp) {
// console.log(resp);
var dataArray = JSON.parse(resp);
// console.log(dataArray);
for (var i = 0; i < dataArray.length; i++) {
var time = dataArray[i].time;
var timeScope = dataArray[i].timeScope;
var wordsNumber = dataArray[i].subject;
var tdWords = tdData(wordsNumber);
var str = "<input type = 'hidden' id = 'dataArray" + i
+ "' idNumber = '" + dataArray[i].id
+ "' startTime = '" + dataArray[i].startTime
+ "' endTime = '" + dataArray[i].endTime
+ "' creator = '" + dataArray[i].creator
+ "' subject = '" + dataArray[i].subject
+ "' department = '" + dataArray[i].department
+ "' number = '" + dataArray[i].number
+ "' facility = '" + dataArray[i].facility
+ "' service = '" + dataArray[i].service
+ "' remark = '" + dataArray[i].remark + "'>"
+ tdWords;
showData(time, timeScope, str);
}
mergeCells();
dataBgColor();
},
error : function(resp) {
var status = resp.status;
errorPopup(status);
}
});
}
//获得数据
function getInformation(butId) {
var startTime = $("#startTime").val();
var endTime = $("#endTime").val();
var creator = $("#creator").text();
var subject = $("#subject").val();
var department = $("#department").val();
var number = $("#number").val();
var n = /^[1-9]\d*$/;
var facility = "";
$("input[type='checkbox']").each(function() {
if ($(this).is(":checked")) {
facility += $(this).val() + " ";
}
});
var service = $("input[name='service']:checked").val();
var remark = $("#remark").val();
var time = $("#thCellText").val();
var timeScope = judgeTime(startTime, endTime);
if (subject == "" && number == "") {
noDataHint();
return;
} else if (subject == "" && number != "") {
subjectHint();
return;
} else if (subject != "" && number == "") {
numberHint();
return;
} else if (!n.test(number)) {
numberNoHint();
return;
} else {
if (butId == "submitConfirmbut") {
submitFun(startTime, endTime, creator, subject, department, number, facility, service, remark, time, timeScope);
} else if (butId == "updateConfirmbut") {
updateFun(startTime, endTime, creator, subject, department, number, facility, service, remark, time, timeScope);
}
}
}
// 新增数据
function submitFun(startTime, endTime, creator, subject, department, number, facility, service, remark, time, timeScope) {
$("#callMethod").val("insert");/* 改变隐藏域的value值,让后台调用相应的方法 */
var callMethod = $("#callMethod").val();/* 获取隐藏域的value值 */
var roomId = $("#roomId").val();
var urlStr = "MeetingRoom" + "?" + Math.random();
$.ajax({
url : urlStr,
type : "get",
data : {
callMethod : callMethod,
startTime : startTime,
endTime : endTime,
creator : creator,
subject : subject,
department : department,
number : number,
facility : facility,
service : service,
remark : remark,
time : time,
timeScope : timeScope,
roomId : roomId
},
success : function(resp) {
bookingSuccessHint();
},
error : function(resp) {
var status = resp.status;
errorPopup(status);
}
});
}
// 修改数据
function updateFun(startTime, endTime, creator, subject, department, number, facility, service, remark, time, timeScope) {
$("#callMethod").val("update");/* 改变隐藏域的value值,让后台调用相应的方法 */
var callMethod = $("#callMethod").val();/* 获取隐藏域的value值 */
var id = $("#idNumber").val();
var urlStr = "MeetingRoom" + "?" + Math.random();
$.ajax({
url : urlStr,
type : "get",
data : {
callMethod : callMethod,
startTime : startTime,
endTime : endTime,
creator : creator,
subject : subject,
department : department,
number : number,
facility : facility,
service : service,
remark : remark,
time : time,
timeScope : timeScope,
id : id
},
success : function(resp) {
updateSuccessHint();
},
error : function(resp) {
var status = resp.status;
errorPopup(status);
}
});
}
// 删除数据
function deleteFun() {
$("#callMethod").val("delete");/* 改变隐藏域的value值,让后台调用相应的方法 */
var callMethod = $("#callMethod").val();/* 获取隐藏域的value值 */
var id = $("#idNumber").val();
closeDeleteHint();
var urlStr = "MeetingRoom" + "?" + Math.random();
$.ajax({
url : urlStr,
type : "get",
data : {
callMethod : callMethod,
id : id
},
success : function(resp) {
deleteSuccessHint();
},
error : function(resp) {
var status = resp.status;
errorPopup(status);
}
});
}
// 提交数据是进行验证
function verificationFun(butId) {
var startTime = $("#startTime").val();
var endTime = $("#endTime").val();
var roomId = $("#roomId").val();
var time = $("#thCellText").val();
var timeScope = judgeTime(startTime, endTime);
var urlStr = "VerificationServlet" + "?" + Math.random();
$.ajax({
url : urlStr,
type : "get",
data : {
time : time,
roomId : roomId
},
success : function(resp) {
// console.log(resp);
var dataArray = JSON.parse(resp);
// console.log(dataArray);
for (var i = 0; i < dataArray.length; i++) {
var rowNumber = dataArray[i].timeScope;
// console.log(rowNumber);
var timeScopeArray = timeScope.split(",");
var rowNumberArray = rowNumber.split(",");
for (var j = 0; j < timeScopeArray.length; j++) {
for (var k = 0; k < rowNumberArray.length; k++) {
if (timeScopeArray[j] == rowNumberArray[k]) {
verificationHint();
return;
}
}
}
}
getInformation(butId);
},
error : function(resp) {
var status = resp.status;
errorPopup(status);
}
});
}
function verificationDate(){
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var time = $("#thCellText").val();
var bookingYear = parseInt(time.slice(0, 4));
var bookingMonth = parseInt(time.slice(5, 7));
var bookingDay = parseInt(time.slice(8, 10));
if(year > bookingYear){
dateHint();
return;
}else{
if(month > bookingMonth){
dateHint();
return;
}else{
if(day > bookingDay){
dateHint();
return;
}else{
submitHint();
}
}
}
}
$(function() {
$("#submitConfirmbut").click(function() {
var butId = $(this).attr("id");
closeSubmitHint();
verificationFun(butId);
});
$("#updateConfirmbut").click(function() {
var butId = $(this).attr("id");
closeUpdateHint();
getInformation(butId);
});
});
$(function() {
$("#tablecontent td").click(function(event) {
// console.log(event);
var rowNumber = $(this).parent().prevAll().length;
// console.log("行号=" + rowNumber);
var colNumber = $(this).prevAll().length;
// console.log("列号=" + colNumber);
if (colNumber == 0 || rowNumber == 0) {
return;
} else {
$(this).toggleClass("checkedBgColor").parent()
.siblings().children().removeClass("checkedBgColor");
$(this).siblings().removeClass("checkedBgColor");
var tdId = event.target.id;
// console.log(tdId);
var tdIdArray = tdId.split("_");
var tdNumber = parseInt(tdIdArray[1]);
var str = $("#tablecontent").find("tr").eq(0).find("td").eq(tdNumber).text();
$("#thCellText").val(str.slice(3, 13));
var data = $(event.target).text();
// console.log($(event.target));
var userinfo = $("#userinfo").text();
var username = userinfo.split(" ");
var tdHiddenId = $("#" + tdId + " input").attr("id");
var idNumber = $("#" + tdHiddenId).attr("idNumber");
var startTime = $("#" + tdHiddenId).attr("startTime");
var endTime = $("#" + tdHiddenId).attr("endTime");
var creator = $("#" + tdHiddenId).attr("creator");
var subject = $("#" + tdHiddenId).attr("subject");
var department = $("#" + tdHiddenId).attr("department");
var number = $("#" + tdHiddenId).attr("number");
var facility = $("#" + tdHiddenId).attr("facility");
var service = $("#" + tdHiddenId).attr("service");
var remark = $("#" + tdHiddenId).attr("remark");
$("#idNumber").val(idNumber);
$("#startTimeLabel").text(startTime);
$("#startTime").val(startTime);
$("#endTimeLabel").text(endTime);
$("#endTime").val(endTime);
$("#creator").text(creator);
$("#creatorLabel").text(creator);
$("#subjectLabel").text(subject);
$("#subject").val(subject);
$("#departmentLabel").text(department);
$("#department").val(department);
$("#numberLabel").text(number);
$("#number").val(number);
$("#facilityLabel").text(facility);
$("#remarkLabel").text(remark);
$("#remark").val(remark);
var optinLength = optionArray.length - 2;
for (i = 0; i < optinLength; i++) {
$("#endTime option:eq(" + i + ")").attr("disabled", false);
}
if (userinfo.length > 0) {
if (data == "") {
document.getElementById("inputBoxCover").style.display = "none";
$("#submitbutTd").show();
$("#emptybut").show();
$("#updatebut").hide();
$("#deletebut").hide();
$("#startTime").attr("disabled", true);
var tdText = $("#tablecontent").find("tr").eq(rowNumber).find("td").eq(0).text();
var timeArray = tdText.split("-");
$("#startTime").val(timeArray[0]);
$("#endTime").val(timeArray[1]);
var timeEndVal = $("#endTime").val();
selectDisabledFunA(timeEndVal);
selectDisabledFunC(tdId);
$("#creator").text(username[0]);
$("#subject").val("");
$("#department").val("");
$("#number").val("");
$("input[type='checkbox']").prop("checked", false);
$("#serviceNo")[0].checked = true;
$("#remark").val("");
$("#registerTable").hide();
$("#bookingTable").show();
$("#inputTable").show();
$("#labelTable").hide();
} else {
if ($("#creator").text() == username[0]) {
document.getElementById("inputBoxCover").style.display = "none";
$("#submitbutTd").hide();
$("#emptybut").show();
$("#updatebut").show();
$("#deletebut").show();
$("#registerTable").show();
$("#bookingTable").hide();
$("#inputTable").show();
$("#labelTable").hide();
if (facility.length > 0) {
var facilityArray = facility.split(" ");
var facility1 = "投影";
var facility2 = "电话";
var facility3 = "视频";
for (i = 0; i < facilityArray.length; i++) {
if (facility1 == facilityArray[i]) {
$("#facility1").prop("checked", true);
}
if (facility2 == facilityArray[i]) {
$("#facility2").prop("checked", true);
}
if (facility3 == facilityArray[i]) {
$("#facility3").prop("checked", true);
}
}
} else {
$("input[type='checkbox']").prop("checked", false);
}
if (service == "true") {
$("#serviceYes")[0].checked = true;
} else {
$("#serviceNo")[0].checked = true;
}
$("#startTime").attr("disabled", true);
var timeEnd = $("#startTime").val();
selectDisabledFunB(timeEnd);
selectDisabledFunD(tdId);
} else {
hideButton();
$("#registerTable").show();
$("#bookingTable").hide();
$("#inputTable").hide();
$("#labelTable").show();
if (service == "true") {
$("#serviceLabel").text("是");
} else {
$("#serviceLabel").text("否");
}
}
}
} else {
hideButton();
if (data == "") {
$("#registerTable").hide();
$("#bookingTable").show();
$("#startTime").val("08:00");
$("#endTime").val("08:30");
$("#creator").text("");
$("#subject").val("");
$("#department").val("");
$("#number").val("");
$("input[type='checkbox']").prop("checked",false);
$("#serviceNo")[0].checked = true;
$("#remark").val("");
} else {
$("#registerTable").show();
$("#bookingTable").hide();
$("#inputTable").hide();
$("#labelTable").show();
if (service == "true") {
$("#serviceLabel").text("是");
} else {
$("#serviceLabel").text("否");
}
}
}
}
videoHintDiv();
});
});
4.java代码
(1)meetingRoom.sql(数据库建表)
create table meeting_room
(
id serial,
startTime varchar,
endTime varchar,
creator varchar,
subject varchar,
department varchar,
number integer,
facility varchar,
service boolean,
remark varchar,
time varchar,
timeScope varchar,
roomId int
)
create table room_information
(
id serial,
roomNumber varchar
)
(2)log4j.properties(log日志文件)
# Root logger option
log4j.rootLogger=INFO,stdout,FILE
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.Append=true
log4j.appender.FILE.File=../logs/log4jtest.log
log4j.appender.FILE.Threshold=INFO
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n
(3)c3p0-config.xml(C3P0连接数据库)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/2002/xmlspec/dtd/2.10/xmlspec.dtd">
<c3p0-config>
<default-config>
<property name="highgo"></property>
<property name="driverClass">org.postgresql.Driver</property>
<property name="jdbcUrl">jdbc:postgresql://localhost:5432/postgres</property>
<property name="user">postgres</property>
<property name="password">highgo123</property>
<property name="maxIdleTime">10</property>
<property name="maxPoolSize">50</property>
<property name="idleConnectionTestPeriod">10</property>
<property name="maxStatements">200</property>
</default-config>
</c3p0-config>
(4)JdbcUtils.java(JDBC连接数据库和加载数据库驱动)
package com.highgo.booking.util;
import java.sql.*;
import org.slf4j.*;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class JdbcUtils {
static ComboPooledDataSource dataSource = new ComboPooledDataSource("highgo");
public static Connection getConnection() {
Logger logger = LoggerFactory.getLogger(JdbcUtils.class);
Connection con = null;
try {
con = dataSource.getConnection();
logger.info("Database driver loaded successfully,the database connection was successful");
} catch (Exception e) {
e.printStackTrace();
logger.info(e.getMessage());
logger.info("数据库连接失败,数据库驱动加载失败");
}
return con;
}
// Close the result set object
public static void close(ResultSet rs) {
Logger logger = LoggerFactory.getLogger(JdbcUtils.class);
try {
if (rs != null) {
rs.close();
}
logger.info("关闭rs成功 ");
} catch (Exception e) {
e.printStackTrace();
logger.info(e.getMessage());
logger.info("关闭rs出现异常");
}
}
// Close the preparedStatement object
public static void close(PreparedStatement pstmt) {
Logger logger = LoggerFactory.getLogger(JdbcUtils.class);
try {
if (pstmt != null) {
pstmt.close();
}
logger.info("关闭pstmt成功 ");
} catch (Exception e) {
e.printStackTrace();
logger.info(e.getMessage());
logger.info("关闭pstmt出现异常");
}
}
// Close the result set object
public static void close(Connection con) {
Logger logger = LoggerFactory.getLogger(JdbcUtils.class);
try {
if (con != null) {
con.close();
}
logger.info("关闭con成功 ");
} catch (Exception e) {
e.printStackTrace();
logger.info(e.getMessage());
logger.info("关闭con出现异常");
}
}
}
(5)LoginGetSession.java(获取存在Session中的登录用的数据)
package com.highgo.booking.login;
import java.io.IOException;
import java.io.PrintWriter;
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 javax.servlet.http.HttpSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@WebServlet("/GetSession")
public class LoginGetSession extends HttpServlet {
private static final long serialVersionUID = 1L;
Logger logger = LoggerFactory.getLogger(getClass());
public void init() throws ServletException {
logger.info("+++init+++");
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("get__start");
request.setCharacterEncoding("utf-8");// 设置请求字符集编码
response.setContentType("text/html;charset=utf-8");// 设置响应字符集编码
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
if (session != null) {
Object mail = session.getAttribute("mail");
Object password = session.getAttribute("password");
Object user = session.getAttribute("user");
if (null == mail || null == password || "" == mail || "" == password) {
return;
}
String str = mail + "," + password + "," + user;
out.print(str);
}
logger.info("登录成功");
logger.info("get end");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("post__start");
doGet(request, response);
logger.info("post end");
}
public void destroy() {
logger.info("+++destroy+++");
}
}
(6)LoginServlet.java(登录调用验证方法)
package com.highgo.booking.login;
import java.io.IOException;
import java.io.PrintWriter;
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 javax.servlet.http.HttpSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.highgo.booking.outlook.LdapADHelper;
@WebServlet("/Login")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
Logger logger = LoggerFactory.getLogger(getClass());
public void init() throws ServletException {
logger.info("+++init+++");
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("get--start");
request.setCharacterEncoding("utf-8");// 设置请求字符集编码
response.setContentType("text/html;charset=utf-8");// 设置响应字符集编码
PrintWriter out = response.getWriter();
String mail = request.getParameter("mail");
String password = request.getParameter("password");
try {
LdapADHelper ad = new LdapADHelper(mail, password);
boolean value = ad.initLdap();
if (value == false) {
out.print(false);
return;
}
String user = ad.GetADInfo("sn", "mail", mail);// 查找用户
// logger.info(user);
ad.closeLdap();
HttpSession session = request.getSession();
session.setAttribute("mail", mail);
session.setAttribute("password", password);
session.setAttribute("user", user);
logger.info("邮箱验证成功");
} catch (Exception e) {
e.printStackTrace();
System.out.println(e);
logger.info("邮箱验证失败");
}
logger.info("get end");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("post__start");
doGet(request, response);
logger.info("post end");
}
public void destroy() {
logger.info("+++destroy+++");
}
}
(7)LogoutServlet.java(退出登录,清空Session中登录用的数据)
package com.highgo.booking.login;
import java.io.IOException;
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 javax.servlet.http.HttpSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@WebServlet("/Logout")
public class LogoutServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
Logger logger = LoggerFactory.getLogger(getClass());
public void init() throws ServletException {
logger.info("+++init+++");
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("get--start");
HttpSession session = request.getSession(false);
if (session == null) {
return;
}
session.removeAttribute("mail");
session.removeAttribute("password");
session.removeAttribute("user");
logger.info("session销毁成功");
logger.info("get end");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("post__start");
doGet(request, response);
logger.info("post end");
}
public void destroy() {
logger.info("+++destroy+++");
}
}
(8)DayList.java(构造类和方法)
package com.highgo.booking.model;
public class DayList {
private int id;
private String startTime;
private String endTime;
private String creator;
private String subject;
private String department;
private int number;
private String facility;
private boolean service;
private String remark;
private String time;
private String timeScope;
private int roomId;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public String getCreator() {
return creator;
}
public void setCreator(String creator) {
this.creator = creator;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getFacility() {
return facility;
}
public void setFacility(String facility) {
this.facility = facility;
}
public boolean getService() {
return service;
}
public void setService(boolean service) {
this.service = service;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getTimeScope() {
return timeScope;
}
public void setTimeScope(String timeScope) {
this.timeScope = timeScope;
}
public int getRoomId() {
return roomId;
}
public void setRoomId(int roomId) {
this.roomId = roomId;
}
}
(9)MeetingInformation.java(构造类和方法)
package com.highgo.booking.model;
public class MeetingInformation {
private int id;
private String roomNumber;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getRoomNumber() {
return roomNumber;
}
public void setRoomNumber(String roomNumber) {
this.roomNumber = roomNumber;
}
}
(10)LdapADHelper.java(邮箱验证方法)
package com.highgo.booking.outlook;
import java.util.*;
import javax.naming.*;
import javax.naming.directory.*;
import javax.naming.ldap.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LdapADHelper {
Logger logger = LoggerFactory.getLogger(getClass());
private String host, url, adminName, adminPassword;
private LdapContext ctx = null;
public LdapADHelper(String mail, String password) {
this.adminName = mail;
this.adminPassword = password;
}
// 初始化ldap
public boolean initLdap() {
this.host = " ";//引号内为IP地址
this.url = new String("ldap://" + host);
Hashtable<String, String> HashEnv = new Hashtable<>();
HashEnv.put(Context.SECURITY_AUTHENTICATION, "simple"); // LDAP访问安全级别
HashEnv.put(Context.SECURITY_PRINCIPAL, adminName); // AD User
HashEnv.put(Context.SECURITY_CREDENTIALS, adminPassword); // AD Password
HashEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
HashEnv.put(Context.PROVIDER_URL, url);
try {
ctx = new InitialLdapContext(HashEnv, null);
logger.info("初始化ldap成功");
return true;
} catch (NamingException e) {
// e.printStackTrace();
System.err.println("Throw Exception : " + e.getMessage());
return false;
}
}
// 关闭ldap
public void closeLdap() {
try {
if (null != ctx) {
this.ctx.close();
}
} catch (NamingException e) {
e.printStackTrace();
System.err.println("Throw Exception : " + e);
}
}
public String GetADInfo(String type, String filter, String name) {
String AttributeValue = "";
/* String result = ""; */
try {
String searchBase = "dc=highgo,dc=com";
// organizationalPerson是top的子类
// String searchFilter = "(&(objectClass=organizationalPerson)(" + filter + "=*"
// + name + "*))";
String searchFilter = "(&(objectClass=User)(" + filter + "=*" + name + "*))";
logger.info("searchFilter = " + searchFilter);
// 创建搜索控制
SearchControls searchCtls = new SearchControls();
// 设置搜索范围
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
// 根据设置的域节点、过滤器类和搜索控制器搜索LDAP得到结果
NamingEnumeration<SearchResult> results = ctx.search(searchBase, searchFilter, searchCtls);
logger.info("results = " + results);
// 初始化搜索结果
while (results.hasMoreElements()) {// 遍历结果
SearchResult searchResult = results.next();// 得到符合搜索条件的DN
String dn = searchResult.getName();
logger.info("dn = (" + dn + ")");
Attributes Attrs = searchResult.getAttributes();// 得到符合条件的属性集
if (Attrs != null) {
try {
for (NamingEnumeration<? extends Attribute> ne = Attrs.getAll(); ne.hasMore();) {
Attribute Attr = (Attribute) ne.next();
// memberOf,distinguishedName
if (!"displayName".equals(Attr.getID().toString())) {
continue;
}
logger.info("AttributeID=" + Attr.getID().toString());
// 读取属性
for (NamingEnumeration<?> e = Attr.getAll(); e.hasMore();) {
AttributeValue = e.next().toString();
logger.info("AttributeValue=" + AttributeValue);
}
logger.info("---------------");
}
} catch (NamingException e) {
System.err.println("Throw Exception : " + e);
}
} // if
} // while
logger.info("************************************************");
} catch (NamingException e) {
e.printStackTrace();
System.err.println("Throw Exception : " + e);
}
return AttributeValue;
}
}
(11)MeetingRoomId.java(获取数据库中会议室的信息)
package com.highgo.booking.room;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.highgo.booking.model.MeetingInformation;
import com.highgo.booking.service.MeetingRoomService;
import com.highgo.booking.util.JdbcUtils;
import net.sf.json.JSONArray;
@WebServlet("/MeetingRoomId")
public class MeetingRoomId extends HttpServlet {
private static final long serialVersionUID = 1L;
MeetingRoomService utilService = new MeetingRoomService();
Logger logger = LoggerFactory.getLogger(getClass());
public void init() throws ServletException {
logger.info("+++init+++");
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("get--start");
request.setCharacterEncoding("utf-8");// 设置请求字符集编码
response.setContentType("text/html;charset=utf-8");// 设置响应字符集编码
String str = "select * from room_information";
ResultSet rs = null;
PreparedStatement pstmt = null;
Connection con = null;
List<MeetingInformation> list = new ArrayList<MeetingInformation>();
try {
con = JdbcUtils.getConnection();
pstmt = con.prepareStatement(str);
rs = pstmt.executeQuery();
while (rs.next()) {
MeetingInformation room = new MeetingInformation();
room.setId(rs.getInt("id"));
room.setRoomNumber(rs.getString("roomNumber"));
list.add(room);
}
JSONArray jsonstr = JSONArray.fromObject(list);
PrintWriter out = response.getWriter();
out.print(jsonstr);
logger.info("会议室信息获取成功");
// System.out.println(jsonstr);
} catch (Exception e) {
e.printStackTrace();
logger.info(e.getMessage());
logger.info("会议室信息获取失败");
} finally {
JdbcUtils.close(rs);
JdbcUtils.close(pstmt);
JdbcUtils.close(con);
}
logger.info("get end");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("post__start");
doGet(request, response);
logger.info("post end");
}
public void destroy() {
logger.info("+++destroy+++");
}
}
(12)RoomGetSession.java(获取存在Session中的会议室的id)
package com.highgo.booking.room;
import java.io.IOException;
import java.io.PrintWriter;
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 javax.servlet.http.HttpSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@WebServlet("/GetRoomId")
public class RoomGetSession extends HttpServlet {
private static final long serialVersionUID = 1L;
Logger logger = LoggerFactory.getLogger(getClass());
public void init() throws ServletException {
logger.info("+++init+++");
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("get--start");
request.setCharacterEncoding("utf-8");// 设置请求字符集编码
response.setContentType("text/html;charset=utf-8");// 设置响应字符集编码
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
if (session != null) {
Object roomId = session.getAttribute("roomId");
if (null == roomId) {
return;
}
out.print(roomId);
}
logger.info("会议室id获取成功");
logger.info("get end");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("post__start");
doGet(request, response);
logger.info("post end");
}
public void destroy() {
logger.info("+++destroy+++");
}
}
(13)RoomSetSession.java(把前端传来的会议室的id存到Session中)
package com.highgo.booking.room;
import java.io.IOException;
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 javax.servlet.http.HttpSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@WebServlet("/RoomId")
public class RoomSetSession extends HttpServlet {
private static final long serialVersionUID = 1L;
Logger logger = LoggerFactory.getLogger(getClass());
public void init() throws ServletException {
logger.info("+++init+++");
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("get--start");
request.setCharacterEncoding("utf-8");// 设置请求字符集编码
response.setContentType("text/html;charset=utf-8");// 设置响应字符集编码
String roomId = request.getParameter("roomId");
// logger.info(roomId);
try {
HttpSession session = request.getSession();
session.setAttribute("roomId", roomId);
logger.info("会议室id存入session成功");
} catch (Exception e) {
e.printStackTrace();
System.out.println(e);
logger.info("会议室id存入session失败");
}
logger.info("get end");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("post__start");
doGet(request, response);
logger.info("post end");
}
public void destroy() {
logger.info("+++destroy+++");
}
}
(14)MeetingRoomService.java(用会议室id进行条件查询)
package com.highgo.booking.service;
import java.sql.*;
import java.util.*;
import org.slf4j.*;
import com.highgo.booking.model.DayList;
import com.highgo.booking.util.JdbcUtils;
public class MeetingRoomService {
Logger logger = LoggerFactory.getLogger(getClass());
// select data
public List<DayList> getDayList(String roomId) {
logger.info("+++ select start +++");
String str = "select * from meeting_room where roomId = ?";
ResultSet rs = null;
PreparedStatement pstmt = null;
Connection con = null;
List<DayList> dayList = new ArrayList<DayList>();
try {
con = JdbcUtils.getConnection();
pstmt = con.prepareStatement(str);
pstmt.setInt(1, Integer.parseInt(roomId));
rs = pstmt.executeQuery();
while (rs.next()) {
DayList timeRoom = new DayList();
timeRoom.setId(rs.getInt("id"));
timeRoom.setStartTime(rs.getString("startTime"));
timeRoom.setEndTime(rs.getString("endTime"));
timeRoom.setCreator(rs.getString("creator"));
timeRoom.setSubject(rs.getString("subject"));
timeRoom.setDepartment(rs.getString("department"));
timeRoom.setNumber(rs.getInt("number"));
timeRoom.setFacility(rs.getString("facility"));
timeRoom.setService(rs.getBoolean("service"));
timeRoom.setRemark(rs.getString("remark"));
timeRoom.setTime(rs.getString("time"));
timeRoom.setTimeScope(rs.getString("timeScope"));
timeRoom.setRoomId(rs.getInt("roomId"));
dayList.add(timeRoom);
}
logger.info("查询成功");
} catch (Exception e) {
e.printStackTrace();
logger.info(e.getMessage());
logger.info("查询失败");
} finally {
JdbcUtils.close(rs);
JdbcUtils.close(pstmt);
JdbcUtils.close(con);
}
logger.info("select end");
return dayList;
}
// insert data
public void insert(String startTime, String endTime, String creator, String subject, String department,
String number, String facility, String service, String remark, String time, String timeScope,
String roomId) {
logger.info("insert start");
String str = "insert into meeting_room(startTime,endTime,creator,subject,department, number,facility,service,remark,time,timeScope,roomId) values(?,?,?,?,?,?,?,?,?,?,?,?)";
ResultSet rs = null;
PreparedStatement pstmt = null;
Connection con = null;
try {
con = JdbcUtils.getConnection();
pstmt = con.prepareStatement(str);
pstmt.setString(1, startTime);
pstmt.setString(2, endTime);
pstmt.setString(3, creator);
pstmt.setString(4, subject);
pstmt.setString(5, department);
pstmt.setInt(6, Integer.parseInt(number));
pstmt.setString(7, facility);
pstmt.setBoolean(8, Boolean.parseBoolean(service));
pstmt.setString(9, remark);
pstmt.setString(10, time);
pstmt.setString(11, timeScope);
pstmt.setInt(12, Integer.parseInt(roomId));
pstmt.executeUpdate();
logger.info("新增成功");
} catch (Exception e) {
e.printStackTrace();
logger.info(e.getMessage());
logger.info("新增失败");
} finally {
JdbcUtils.close(rs);
JdbcUtils.close(pstmt);
JdbcUtils.close(con);
}
logger.info("insert end");
}
// update data
public void update(String startTime, String endTime, String creator, String subject, String department,
String number, String facility, String service, String remark, String time, String timeScope, String id) {
logger.info("+++ update start +++");
String str = "update meeting_room set startTime=?, endTime=?, creator=?, subject=?, department=?, number=?, facility=?, service=?, remark=?, time=?, timeScope=? where id = ?";
ResultSet rs = null;
PreparedStatement pstmt = null;
Connection con = null;
try {
con = JdbcUtils.getConnection();
pstmt = con.prepareStatement(str);
pstmt.setString(1, startTime);
pstmt.setString(2, endTime);
pstmt.setString(3, creator);
pstmt.setString(4, subject);
pstmt.setString(5, department);
pstmt.setInt(6, Integer.parseInt(number));
pstmt.setString(7, facility);
pstmt.setBoolean(8, Boolean.parseBoolean(service));
pstmt.setString(9, remark);
pstmt.setString(10, time);
pstmt.setString(11, timeScope);
pstmt.setInt(12, Integer.parseInt(id));
pstmt.executeUpdate();
logger.info("修改成功");
} catch (Exception e) {
e.printStackTrace();
logger.info(e.getMessage());
logger.info("修改失败");
} finally {
JdbcUtils.close(rs);
JdbcUtils.close(pstmt);
JdbcUtils.close(con);
}
logger.info("update end");
}
// delete data
public void delete(String id) {
logger.info("+++ delete start +++");
String str = "delete from meeting_room where id = ?";
ResultSet rs = null;
PreparedStatement pstmt = null;
Connection con = null;
try {
con = JdbcUtils.getConnection();
pstmt = con.prepareStatement(str);
pstmt.setInt(1, Integer.parseInt(id));
pstmt.executeUpdate();
logger.info("删除成功");
} catch (Exception e) {
e.printStackTrace();
logger.info(e.getMessage());
logger.info("删除失败");
} finally {
JdbcUtils.close(rs);
JdbcUtils.close(pstmt);
JdbcUtils.close(con);
}
logger.info("delete end");
}
}
(15)CallMethodServlet.java(调用增删改查的方法)
package com.highgo.booking.servlet;
import java.io.*;
import java.util.List;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import org.slf4j.*;
import com.highgo.booking.model.DayList;
import com.highgo.booking.service.MeetingRoomService;
import net.sf.json.JSONArray;
@WebServlet("/MeetingRoom")
public class CallMethodServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
MeetingRoomService utilService = new MeetingRoomService();
Logger logger = LoggerFactory.getLogger(getClass());
public void init() throws ServletException {
logger.info("+++init+++");
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("get--start");
request.setCharacterEncoding("utf-8");// 设置请求字符集编码
response.setContentType("text/html;charset=utf-8");// 设置响应字符集编码
String hiddenvalue = request.getParameter("callMethod");// 获取隐藏域的value值
logger.info("value =" + hiddenvalue);
String hidden = (hiddenvalue == null) ? "select" : hiddenvalue;
try {
if ("select".equals(hidden)) {
String roomId = request.getParameter("roomId");
List<DayList> list = utilService.getDayList(roomId);
JSONArray jsonstr = JSONArray.fromObject(list);
PrintWriter out = response.getWriter();
out.print(jsonstr);
System.out.println(jsonstr);
logger.info("查询数据成功");
} else if ("insert".equals(hidden)) {
String startTime = request.getParameter("startTime");
String endTime = request.getParameter("endTime");
String creator = request.getParameter("creator");
String subject = request.getParameter("subject");
String department = request.getParameter("department");
String number = request.getParameter("number");
String facility = request.getParameter("facility");
String service = request.getParameter("service");
String remark = request.getParameter("remark");
String time = request.getParameter("time");
String timeScope = request.getParameter("timeScope");
String roomId = request.getParameter("roomId");
utilService.insert(startTime, endTime, creator, subject, department, number, facility, service, remark,
time, timeScope, roomId);
logger.info("新增数据成功");
} else if ("update".equals(hidden)) {
String startTime = request.getParameter("startTime");
String endTime = request.getParameter("endTime");
String creator = request.getParameter("creator");
String subject = request.getParameter("subject");
String department = request.getParameter("department");
String number = request.getParameter("number");
String facility = request.getParameter("facility");
String service = request.getParameter("service");
String remark = request.getParameter("remark");
String time = request.getParameter("time");
String timeScope = request.getParameter("timeScope");
String id = request.getParameter("id");
utilService.update(startTime, endTime, creator, subject, department, number, facility, service, remark,
time, timeScope, id);
logger.info("修改数据成功");
} else if ("delete".equals(hidden)) {
String id = request.getParameter("id");
utilService.delete(id);
logger.info("删除数据成功");
}
} catch (Exception e) {
e.printStackTrace();
logger.info(e.getMessage());
logger.info("增删改查操作失败");
}
logger.info("get end");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("post__start");
doGet(request, response);
logger.info("post end");
}
public void destroy() {
logger.info("+++destroy+++");
}
}
(16)verificationServlet.java(提交数据时验证数据库是否存在该数据)
package com.highgo.booking.verification;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.highgo.booking.model.DayList;
import com.highgo.booking.service.MeetingRoomService;
import com.highgo.booking.util.JdbcUtils;
import net.sf.json.JSONArray;
@WebServlet("/VerificationServlet")
public class verificationServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
MeetingRoomService utilService = new MeetingRoomService();
Logger logger = LoggerFactory.getLogger(getClass());
public void init() throws ServletException {
logger.info("+++init+++");
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("get--start");
request.setCharacterEncoding("utf-8");// 设置请求字符集编码
response.setContentType("text/html;charset=utf-8");// 设置响应字符集编码
String time = request.getParameter("time");
String roomId = request.getParameter("roomId");
String str = "select timeScope from meeting_room where roomId = ? and time = ?";
ResultSet rs = null;
PreparedStatement pstmt = null;
Connection con = null;
List<DayList> dayList = new ArrayList<DayList>();
try {
con = JdbcUtils.getConnection();
pstmt = con.prepareStatement(str);
pstmt.setInt(1, Integer.parseInt(roomId));
pstmt.setString(2, time);
rs = pstmt.executeQuery();
while (rs.next()) {
DayList timeRoom = new DayList();
timeRoom.setTimeScope(rs.getString("timeScope"));
dayList.add(timeRoom);
}
JSONArray jsonstr = JSONArray.fromObject(dayList);
PrintWriter out = response.getWriter();
out.print(jsonstr);
logger.info("提交时验证获取信息成功");
} catch (Exception e) {
e.printStackTrace();
logger.info(e.getMessage());
logger.info("提交时验证获取信息失败");
} finally {
JdbcUtils.close(rs);
JdbcUtils.close(pstmt);
JdbcUtils.close(con);
}
logger.info("get end");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("post__start");
doGet(request, response);
logger.info("post end");
}
public void destroy() {
logger.info("+++destroy+++");
}
}
(17)WeekGetSession.java(获取存在Session中周的编号)
package com.highgo.booking.week;
import java.io.IOException;
import java.io.PrintWriter;
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 javax.servlet.http.HttpSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@WebServlet("/GetWeek")
public class WeekGetSession extends HttpServlet {
private static final long serialVersionUID = 1L;
Logger logger = LoggerFactory.getLogger(getClass());
public void init() throws ServletException {
logger.info("+++init+++");
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("get--start");
request.setCharacterEncoding("utf-8");// 设置请求字符集编码
response.setContentType("text/html;charset=utf-8");// 设置响应字符集编码
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
if (session != null) {
Object whatWeek = session.getAttribute("whatWeek");
if (null == whatWeek) {
return;
}
out.print(whatWeek);
logger.info("获取周的编号成功");
}
logger.info("get end");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("post__start");
doGet(request, response);
logger.info("post end");
}
public void destroy() {
logger.info("+++destroy+++");
}
}
(18)WeekSetSession.java(把页面传来的周的编号存到Session中)
package com.highgo.booking.week;
import java.io.IOException;
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 javax.servlet.http.HttpSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@WebServlet("/Week")
public class WeekSetSession extends HttpServlet {
private static final long serialVersionUID = 1L;
Logger logger = LoggerFactory.getLogger(getClass());
public void init() throws ServletException {
logger.info("+++init+++");
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("get--start");
request.setCharacterEncoding("utf-8");// 设置请求字符集编码
response.setContentType("text/html;charset=utf-8");// 设置响应字符集编码
String whatWeek = request.getParameter("whatWeek");
// logger.info(whatWeek);
try {
HttpSession session = request.getSession();
session.setAttribute("whatWeek", whatWeek);
logger.info("周的编号存入session成功");
} catch (Exception e) {
e.printStackTrace();
System.out.println(e);
logger.info("周的编号存入session失败");
}
logger.info("get end");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("post__start");
doGet(request, response);
logger.info("post end");
}
public void destroy() {
logger.info("+++destroy+++");
}
}
四.交付过程
交付过程是比较漫长的,因为我代码规范和可读性太差,一直在不停地修改和优化,并且根据使用的反馈,修改代码和页面,中间出了好多问题,也都进行了修改。
对于遇到的问题和解决办法,请看另一篇文章
网址:https://blog.youkuaiyun.com/sun_ting_chuan/article/details/83689037