目录
1.实现Model层
实现VO/DAO/Service
1.新建meeting.java
package com.meeting.vo;
import java.sql.Timestamp;
/**
* 会议
* @author Administrator
*
*/
public class Meeting {
private int meetingid;
private String meetingname;
private int roomid;//会议室编号
private int reservationistid;
private int numberofparticipants;
private Timestamp starttime;//开始时间
private Timestamp endtime;//结束时间
private Timestamp reservationtime;//预定时间
private Timestamp canceledtime;//取消时间
private String description;//描述
//status为0,表示正常,1表示取消
private String status="0";
public Meeting() {
super();
}
public Meeting(int meetingid) {
super();
this.meetingid = meetingid;
}
public Meeting(String meetingname, int roomid, int reservationistid,
int numberofparticipants, Timestamp starttime, Timestamp endtime,
Timestamp reservationtime, Timestamp canceledtime, String description,
String status) {
super();
this.meetingname = meetingname;
this.roomid = roomid;
this.reservationistid = reservationistid;
this.numberofparticipants = numberofparticipants;
this.starttime = starttime;
this.endtime = endtime;
this.reservationtime = reservationtime;
this.canceledtime = canceledtime;
this.description = description;
this.status = status;
}
public Meeting(int meetingid, String meetingname, int roomid,
int reservationistid, int numberofparticipants, Timestamp starttime,
Timestamp endtime, Timestamp reservationtime, Timestamp canceledtime,
String description, String status) {
super();
this.meetingid = meetingid;
this.meetingname = meetingname;
this.roomid = roomid;
this.reservationistid = reservationistid;
this.numberofparticipants = numberofparticipants;
this.starttime = starttime;
this.endtime = endtime;
this.reservationtime = reservationtime;
this.canceledtime = canceledtime;
this.description = description;
this.status = status;
}
public int getMeetingid() {
return meetingid;
}
public void setMeetingid(int meetingid) {
this.meetingid = meetingid;
}
public String getMeetingname() {
return meetingname;
}
public void setMeetingname(String meetingname) {
this.meetingname = meetingname;
}
public int getRoomid() {
return roomid;
}
public void setRoomid(int roomid) {
this.roomid = roomid;
}
public int getReservationistid() {
return reservationistid;
}
public void setReservationistid(int reservationistid) {
this.reservationistid = reservationistid;
}
public int getNumberofparticipants() {
return numberofparticipants;
}
public void setNumberofparticipants(int numberofparticipants) {
this.numberofparticipants = numberofparticipants;
}
public Timestamp getStarttime() {
return starttime;
}
public void setStarttime(Timestamp starttime) {
this.starttime = starttime;
}
public Timestamp getEndtime() {
return endtime;
}
public void setEndtime(Timestamp endtime) {
this.endtime = endtime;
}
public Timestamp getReservationtime() {
return reservationtime;
}
public void setReservationtime(Timestamp reservationtime) {
this.reservationtime = reservationtime;
}
public Timestamp getCanceledtime() {
return canceledtime;
}
public void setCanceledtime(Timestamp canceledtime) {
this.canceledtime = canceledtime;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
@Override
public String toString() {
return "Meeting [meetingid=" + meetingid + ", meetingname="
+ meetingname + ", roomid=" + roomid + ", reservationistid="
+ reservationistid + ", numberofparticipants="
+ numberofparticipants + ", starttime=" + starttime
+ ", endtime=" + endtime + ", reservationtime="
+ reservationtime + ", canceledtime=" + canceledtime
+ ", description=" + description + ", status=" + status + "]";
}
}
2.新增MeetingDAO.java
package com.meeting.dao;
import java.sql.Connection;
import java.sql.Timestamp;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.meeting.util.ConnectionFactory;
import com.meeting.vo.Employee;
import com.meeting.vo.Meeting;
public class MeetingDAO {
private Connection conn;
/**
* 向表meeting中插入记录,其中status使用默认值0
* @param meeting
* @return
*/
public int insert(Meeting meeting) {
int meetingid = 0;
conn = ConnectionFactory.getConnection();
String sql = "insert into meeting"
+ "(meetingname,roomid,reservationistid,numberofparticipants,starttime,endtime,reservationtime,canceledtime,description,status)"
+ " values(?,?,?,?,?,?,?,?,?,?)";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, meeting.getMeetingname());
pstmt.setInt(2, meeting.getRoomid());
pstmt.setInt(3, meeting.getReservationistid());
pstmt.setInt(4, meeting.getNumberofparticipants());
pstmt.setTimestamp(5, meeting.getStarttime());
pstmt.setTimestamp(6, meeting.getEndtime());
pstmt.setTimestamp(7, meeting.getReservationtime());
pstmt.setTimestamp(8, meeting.getCanceledtime());
pstmt.setString(9, meeting.getDescription());
pstmt.setString(10, "0");
pstmt.executeUpdate();
ResultSet rs = pstmt.executeQuery("select max(meetingid) from meeting");
if (rs.next()) {
meetingid = rs.getInt(1);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
ConnectionFactory.closeConnection();
}
return meetingid;
}
/**
* 根据meetingid,更新会议的状态,删除时间
* 状态从0变成1 变成取消状态
* @param meetingid
* @param status
* @param canceledtime
*/
public void update(int meetingid, String status, Timestamp canceledtime) {
conn = ConnectionFactory.getConnection();
String sql = "update meeting set status=?,canceledtime=? where meetingid=" + meetingid;
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, status);
pstmt.setTimestamp(2, canceledtime);
pstmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
ConnectionFactory.closeConnection();
}
}
/**
* 查询某员工预定的所有会议
* @param reservationistid
* @return
*/
public List<Meeting> selectAllMeetingsByReserId(int reservationistid) {
conn = ConnectionFactory.getConnection();
List<Meeting> meetingslist = new ArrayList<Meeting>();
Meeting meeting = null;
try {
PreparedStatement st = null;
String sql = "select * from meeting where reservationistid=" + reservationistid;
st = conn.prepareStatement(sql);
ResultSet rs = st.executeQuery(sql);
while (rs.next()) {
meeting = new Meeting();
meeting.setMeetingid(rs.getInt("meetingid"));
meeting.setMeetingname(rs.getString("meetingname"));
meeting.setRoomid(rs.getInt("roomid"));
meeting.setReservationistid(rs.getInt("reservationistid"));
meeting.setNumberofparticipants(rs.getInt("numberofparticipants"));
meeting.setStarttime(rs.getTimestamp("starttime"));
meeting.setEndtime(rs.getTimestamp("endtime"));
meeting.setReservationtime(rs.getTimestamp("reservationtime"));
meeting.setCanceledtime(rs.getTimestamp("canceledtime"));
meeting.setDescription(rs.getString("description"));
meeting.setStatus(rs.getString("status"));
meetingslist.add(meeting);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
ConnectionFactory.closeConnection();
}
return meetingslist;
}
/**
* 测试方法
*
* @param args
*/
public static void main(String[] args) {
MeetingDAO dao = new MeetingDAO();
Meeting meeting = new Meeting(8, "运营会88", 5, 8, 10, Timestamp.valueOf("2015-01-02 11:09:00"),
Timestamp.valueOf("2015-01-03 11:09:00"), Timestamp.valueOf("2015-01-02 11:09:00"),
Timestamp.valueOf("2015-01-02 11:09:00"), "看当月运营情况", "0");
System.out.println(dao.insert(meeting));
dao.update(5, "0", Timestamp.valueOf("2015-01-02 11:09:00"));
List<Meeting> list = dao.selectAllMeetingsByReserId(8);
for (Meeting m : list) {
System.out.println(m);
}
}
}
3.employeeDAO新增了一个方法:
/**
* 方法八:添加会议时,添加不同部门参加会议的人员
* 根据部门查询当前部门的员工
* @param departmentid
* @return
*/
public List<Employee> selectEmployeesByDept(int departmentid){
conn=ConnectionFactory.getConnection();
List<Employee> employeeslist=new ArrayList<Employee>();
Employee employee=null;
try {
PreparedStatement st=null;
String sql="select * from employee where departmentid="+departmentid;
st = conn.prepareStatement(sql);
ResultSet rs =st.executeQuery(sql);
while(rs.next()){
employee=new Employee();
employee.setEmployeeid(rs.getInt("employeeid"));
employee.setEmployeename(rs.getString("employeename"));
employee.setUsername(rs.getString("username"));
employee.setPhone(rs.getString("phone"));
employee.setEmail(rs.getString("email"));
employee.setStatus(rs.getString("status"));
employee.setDepartmentid(rs.getInt("departmentid"));
employee.setPassword(rs.getString("password"));
employee.setRole(rs.getString("role"));
employeeslist.add(employee);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
ConnectionFactory.closeConnection();
}
return employeeslist;
}
4.新增MeetingParticipantsDAO
package com.meeting.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.meeting.util.ConnectionFactory;
import com.meeting.vo.Employee;
import com.meeting.vo.Meeting;
import com.meeting.vo.MeetingRoom;
/**
* 会议参与者的DAO
* @author Administrator
*
*/
public class MeetingParticipantsDAO {
private Connection conn;
/**
* 向表meetingparticipants中插入记录
* 每一个参加人员对应一条记录
* @param meetingid
* @param employeeid
*/
public void insert(int meetingid, int employeeid) {
conn = ConnectionFactory.getConnection();
String sql = "insert into meetingparticipants values(?,?)";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, meetingid);
pstmt.setInt(2, employeeid);
pstmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
ConnectionFactory.closeConnection();
}
}
/**
* 根据参与者的id,来查出来他参加了的所有会议
* @param participantsid
* @return
*/
public List<Meeting> selectAllMeetingsByParId(int participantsid) {
conn = ConnectionFactory.getConnection();
List<Meeting> meetingslist = new ArrayList<Meeting>();
Meeting meeting = null;
try {
PreparedStatement st = null;
String sql = "select * from meeting,meetingparticipants where meeting.meetingid=meetingparticipants.meetingid and meetingparticipants.employeeid="
+ participantsid;
st = conn.prepareStatement(sql);
ResultSet rs = st.executeQuery(sql);
while (rs.next()) {
meeting = new Meeting();
meeting.setMeetingid(rs.getInt("meetingid"));
meeting.setMeetingname(rs.getString("meetingname"));
meeting.setRoomid(rs.getInt("roomid"));
meeting.setReservationistid(rs.getInt("reservationistid"));
meeting.setNumberofparticipants(rs.getInt("numberofparticipants"));
meeting.setStarttime(rs.getTimestamp("starttime"));
meeting.setEndtime(rs.getTimestamp("endtime"));
meeting.setReservationtime(rs.getTimestamp("reservationtime"));
meeting.setCanceledtime(rs.getTimestamp("canceledtime"));
meeting.setDescription(rs.getString("description"));
meeting.setStatus(rs.getString("status"));
meetingslist.add(meeting);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
ConnectionFactory.closeConnection();
}
return meetingslist;
}
/**
* 根据会议的id来查出所有的参会员工
* @param meetingid
* @return
*/
public List<Employee> selectAllEmployeesByMeetingId(int meetingid) {
conn = ConnectionFactory.getConnection();
List<Employee> employeeslist = new ArrayList<Employee>();
Employee employee = null;
try {
PreparedStatement st = null;
String sql = "select * from employee,meetingparticipants where employee.employeeid=meetingparticipants.employeeid and meetingparticipants.meetingid="
+ meetingid;
st = conn.prepareStatement(sql);
ResultSet rs = st.executeQuery(sql);
while (rs.next()) {
employee = new Employee();
employee.setEmployeeid(rs.getInt("employeeid"));
employee.setEmployeename(rs.getString("employeename"));
employee.setUsername(rs.getString("username"));
employee.setPhone(rs.getString("phone"));
employee.setEmail(rs.getString("email"));
employee.setStatus(rs.getString("status"));
employee.setDepartmentid(rs.getInt("departmentid"));
employee.setPassword(rs.getString("password"));
employee.setRole(rs.getString("role"));
employeeslist.add(employee);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
ConnectionFactory.closeConnection();
}
return employeeslist;
}
/**
* @param args
*/
public static void main(String[] args) {
MeetingParticipantsDAO dao = new MeetingParticipantsDAO();
// dao.insert(5, 8);
// dao.insert(5, 9);
// dao.insert(5, 10);
// List<Meeting> list=dao.selectAllMeetingsByParId(8);
// for(Meeting meeting:list){
// System.out.println(meeting);
// }
List<Employee> list = dao.selectAllEmployeesByMeetingId(6);
for (Employee e : list) {
System.out.println(e);
}
}
}
5.新增meetingservice
package com.meeting.service;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import com.meeting.dao.MeetingDAO;
import com.meeting.dao.MeetingParticipantsDAO;
import com.meeting.vo.Meeting;
/**
* 会议:对外提供的服务类
* @author Administrator
*
*/
public class MeetingService {
private MeetingDAO meetingDao=new MeetingDAO();
private MeetingParticipantsDAO parDao=new MeetingParticipantsDAO();
/**
* 预定会议
* @param meeting
* @param employeeidList
*/
public void bookMeeting(Meeting meeting,List<Integer> employeeidList){
//插入会议信息
int meetingid=meetingDao.insert(meeting);
//循环列表,把参会人员的信息插入到会议信息表里
for(Integer employeeid:employeeidList){
parDao.insert(meetingid, employeeid);
}
}
/**
* 取消会议,把会议状态变为1,并传入取消会议的时间(当前时间
* @param meetingid
*/
public void cancelMeeting(int meetingid){
meetingDao.update(meetingid, "1", new Timestamp(System.currentTimeMillis()));
}
/**
* 根据当前id来查询预定的会议
* @param reservationistid
* @return
*/
public List<Meeting> viewMyBookingInfo(int reservationistid){
return meetingDao.selectAllMeetingsByReserId(reservationistid);
}
/**
* 根据当前的id来查询所有的参会信息
* @param participantsid
* @return
*/
public List<Meeting> viewMymeetingsInfo(int participantsid){
return parDao.selectAllMeetingsByParId(participantsid);
}
/**
* @param args
*/
public static void main(String[] args) {
MeetingService service=new MeetingService();
// Meeting meeting=new Meeting("运营会wuwuw",5,8,10,Timestamp.valueOf("2015-01-02 11:09:00"),Timestamp.valueOf("2015-01-03 11:09:00"),Timestamp.valueOf("2015-01-02 11:09:00"),Timestamp.valueOf("2015-01-02 11:09:00"),"看当月运营情况","0");
// List<Integer> idList=new ArrayList<Integer>();
// idList.add(8);
// idList.add(9);
//
// service.bookMeeting(meeting, idList);
//service.cancelMeeting(23);
}
}
2.预定会议页面
完善预定会议的JSP:时间控件\显示数据库中的会议室\部门
别人写好的jsp文件
1.新增bookmeeting.jsp
<%@ page language="java"
import="java.util.*,com.meeting.vo.*" pageEncoding="utf-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>CoolMeeting会议管理系统</title>
<link rel="stylesheet" href="styles/common03.css" />
<style type="text/css">
#divfrom {
float: left;
width: 150px;
}
#divto {
float: left;
width: 150px;
}
#divoperator {
float: left;
width: 50px;
padding: 60px 5px;
}
#divoperator input[type="button"] {
margin: 10px 0;
}
#selDepartments {
display: block;
width: 100%;
}
#selEmployees {
display: block;
width: 100%;
height: 200px;
}
#selSelectedEmployees {
display: block;
width: 100%;
height: 225px;
}
</style>
<!-- 导入包 -->
<script language="javascript" type="text/javascript"
src="My97DatePicker/WdatePicker.js"></script>
<script type="text/javascript">
function employee(employeeid, employeename) {
this.employeeid = employeeid;
this.employeename = employeename;
}
function department(departmentid, departmentname, employees) {
this.departmentid = departmentid;
this.departmentname = departmentname;
this.employees = employees;
}
var selDepartments;
var selEmployees;
var selSelectedEmployees;
function body_load() {
selDepartments = document.getElementById("selDepartments");
selEmployees = document.getElementById("selEmployees");
selSelectedEmployees = document.getElementById("selSelectedEmployees");
for ( var i = 0; i < data.length; i++) {
var dep = document.createElement("option");
dep.value = data[i].departmentid;
dep.text = data[i].departmentname;
selDepartments.appendChild(dep);
}
fillEmployees();
}
function fillEmployees() {
clearList(selEmployees);
var departmentid = selDepartments.options[selDepartments.selectedIndex].value;
var employees;
for ( var i = 0; i < data.length; i++) {
if (departmentid == data[i].departmentid) {
employees = data[i].employees;
break;
}
}
for (i = 0; i < employees.length; i++) {
var emp = document.createElement("option");
emp.value = employees[i].employeeid;
emp.text = employees[i].employeename;
selEmployees.appendChild(emp);
}
}
function clearList(list) {
while (list.childElementCount > 0) {
list.removeChild(list.lastChild);
}
}
function selectEmployees() {
for ( var i = 0; i < selEmployees.options.length; i++) {
if (selEmployees.options[i].selected) {
addEmployee(selEmployees.options[i]);
selEmployees.options[i].selected = false;
}
}
}
function deSelectEmployees() {
var elementsToRemoved = new Array();
var options = selSelectedEmployees.options;
for ( var i = 0; i < options.length; i++) {
if (options[i].selected) {
elementsToRemoved.push(options[i]);
}
}
for (i = 0; i < elementsToRemoved.length; i++) {
selSelectedEmployees.removeChild(elementsToRemoved[i]);
}
}
function addEmployee(optEmployee) {
var options = selSelectedEmployees.options;
var i = 0;
var insertIndex = -1;
while (i < options.length) {
if (optEmployee.value == options[i].value) {
return;
} else if (optEmployee.value < options[i].value) {
insertIndex = i;
break;
}
i++;
}
var opt = document.createElement("option");
opt.value = optEmployee.value;
opt.text = optEmployee.text;
if (insertIndex == -1) {
selSelectedEmployees.appendChild(opt);
} else {
selSelectedEmployees.insertBefore(opt, options[insertIndex]);
}
}
</script>
</head>
<body onload="body_load()">
<div class="page-content">
<div class="content-nav">会议预定 > 预定会议</div>
<form>
<fieldset>
<legend>会议信息</legend>
<table class="formtable">
<tr>
<td>会议名称:</td>
<td><input type="text" id="meetingname" maxlength="20" />
</td>
</tr>
<tr>
<td>预计参加人数:</td>
<td><input type="text" id="numofattendents" />
</td>
</tr>
<tr>
<!-- 类名是固定的 -->
<td>预计开始时间:</td>
<td><input class="Wdate" type="text" name="starttime"
onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})">
</td>
</tr>
<tr>
<td>预计结束时间:</td>
<td><input class="Wdate" type="text" name="endtime"
onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})"></td>
</tr>
<tr>
<td>选择会议室:</td>
<td><select name="roomid">
<c:forEach var="room" items="${requestScope.roomsList}">
<option value="${room.roomid}">${room.roomname}</option>
</c:forEach>
</select>
</td>
</tr>
<tr>
<td>会议说明:</td>
<td><textarea id="description" rows="5"></textarea>
</td>
</tr>
<tr>
<td>选择参会人员:</td>
<td>
<div id="divfrom">
<select id="selDepartments" onchange="fillEmployees()">
<c:forEach var="dept" items="${requestScope.deptsList}">
<option value="${dept.departmentid}">${dept.departmentname}</option>
</c:forEach>
</select>
<select id="selEmployees" multiple="true">
</select>
</div>
<div id="divoperator">
<input type="button" class="clickbutton" value=">"
onclick="selectEmployees()" /> <input type="button"
class="clickbutton" value="<" onclick="deSelectEmployees()" />
</div>
<div id="divto">
<select id="selSelectedEmployees" multiple="true">
</select>
</div>
</td>
</tr>
<tr>
<td class="command" colspan="2"><input type="submit"
class="clickbutton" value="预定会议" /> <input type="reset"
class="clickbutton" value="重置" />
</td>
</tr>
</table>
</fieldset>
</form>
</div>
<div class="page-footer">
<hr />
更多问题,欢迎联系<a href="mailto:webmaster@eeg.com">管理员</a> <img
src="images/footer.png" alt="CoolMeeting" />
</div>
</body>
</html>
2.新增BookMeetingServlet.java
package com.meeting.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.meeting.dao.DepartmentDAO;
import com.meeting.dao.MeetingRoomDAO;
import com.meeting.vo.Department;
import com.meeting.vo.MeetingRoom;
/**
* 预定会议控制器
* @author Administrator
*
*/
public class BookMeetingServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String code=request.getParameter("code");
//当?code=prepare时候才执行
if(code!=null&&code.equals("prepare")){
MeetingRoomDAO roomDao=new MeetingRoomDAO();
DepartmentDAO deptDao=new DepartmentDAO();
//查出所有会议
List<MeetingRoom> roomsList=roomDao.selectAllMeetingRooms();
//查出所有部门
List<Department> deptsList=deptDao.selectAll();
//把上面查出的返回到页面
request.setAttribute("roomsList", roomsList);
request.setAttribute("deptsList", deptsList);
request.getRequestDispatcher("bookmeeting.jsp").forward(request, response);
}
}
}
3.配置web.xml
4修改adminleft.jsp
开始测试:
3.显示部门员工列表
选择部门,显示对应员工
使用AJAX实现局部(异步)刷新每个部门的员工列表,而不会刷新到其他部分(如页面)
1.创建SelectEmployeeOfDeptServlet
根据部门id查询对应的员工列表,并把员工信息以xml格式返回
package com.meeting.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.meeting.dao.EmployeeDAO;
import com.meeting.vo.Employee;
public class SelectEmployeesOfDeptServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取部门id
int departmentid = Integer.parseInt(request
.getParameter("departmentid"));
//System.out.println("departmentid " + departmentid);
EmployeeDAO dao = new EmployeeDAO();
//根据部门的id来获取当前部门的员工列表
List<Employee> employeesList = dao.selectEmployeesByDept(departmentid);
//将查询得到的员工信息,以XML文档的格式返回到浏览器,用AJAX来解析它
response.setContentType("text/xml;charset=utf-8");
PrintWriter out = response.getWriter();
response.setHeader("Cache-Control", "no-cache");
out.println("<?xml version='1.0' encoding='" + "utf-8" + "' ?>");
//返回信息,符合XML规范,有根节点,否则解析有问题
//根节点是employees,option里有每一个员工,值-id跟文本-员工名字
out.println("<employees>");
for (Employee e : employeesList) {
out.println("<option>");
out.println("<value>" + e.getEmployeeid() + "</value>");
out.println("<text>" + e.getEmployeename() + "</text>");
out.println("</option>");
}
out.println("</employees>");
out.close();
}
}
2.主要修改bookmeeting.jsp
选择部门时,调用js的showEmployee()方法,这个方法又调用SelectEmployeeOfDeptServlet来
刷新返回的列表
异步返回时,调用callback方法,解析xml文档,显示到员工列表里
<%@ page language="java"
import="java.util.*,com.meeting.vo.*" pageEncoding="utf-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>CoolMeeting会议管理系统</title>
<link rel="stylesheet" href="styles/common03.css" />
<style type="text/css">
#divfrom {
float: left;
width: 150px;
}
#divto {
float: left;
width: 150px;
}
#divoperator {
float: left;
width: 50px;
padding: 60px 5px;
}
#divoperator input[type="button"] {
margin: 10px 0;
}
#selDepartments {
display: block;
width: 100%;
}
#selEmployees {
display: block;
width: 100%;
height: 200px;
}
#selSelectedEmployees {
display: block;
width: 100%;
height: 225px;
}
</style>
<script language="javascript" type="text/javascript"
src="My97DatePicker/WdatePicker.js"></script>
<script type="text/javascript">
var xmlHttp;
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
/* 查询员工 */
function showEmployees() {
createXMLHttpRequest();
var deptid=document.getElementById("selDepartments").value;
var url = "SelectEmployeesOfDeptServlet?departmentid=" + escape(deptid);
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = callback;
xmlHttp.send(null);
}
/* 把返回的信息进行解析 */
function callback() {
clearEmployees();
var selEmployees=document.getElementById("selEmployees");
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
var elements = xmlHttp.responseXML.getElementsByTagName("option");
for (var i = 0; i < elements.length; i++) {
var value = elements[i].getElementsByTagName("value")[0].firstChild.nodeValue;
var text = elements[i].getElementsByTagName("text")[0].firstChild.nodeValue;
selEmployees.options.add(new Option(text,value));
}
}
}
}
/* 每次查询前都会把前面的结果清空 */
function clearEmployees(list){
document.getElementById("selEmployees").options.length=0;
}
</script>
</head>
<body >
<div class="page-content">
<div class="content-nav">会议预定 > 预定会议</div>
<form>
<fieldset>
<legend>会议信息</legend>
<table class="formtable">
<tr>
<td>会议名称:</td>
<td><input type="text" id="meetingname" maxlength="20" /></td>
</tr>
<tr>
<td>预计参加人数:</td>
<td><input type="text" id="numofattendents" /></td>
</tr>
<tr>
<!-- 类名是固定的 -->
<td>预计开始时间:</td>
<td><input class="Wdate" type="text" name="starttime"
onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})"></td>
</tr>
<tr>
<td>预计结束时间:</td>
<td><input class="Wdate" type="text" name="endtime"
onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})">
</td>
</tr>
<tr>
<td>选择会议室:</td>
<!--循环迭代标签,把会议室名字遍历出来 -->
<td><select name="roomid">
<c:forEach var="room" items="${requestScope.roomsList}">
<option value="${room.roomid}">${room.roomname}</option>
</c:forEach>
</select></td>
</tr>
<tr>
<td>会议说明:</td>
<td><textarea id="description" rows="5"></textarea></td>
</tr>
<tr>
<td>选择参会人员:</td>
<td>
<div id="divfrom">
<!-- 每次点一次就会 调用showEmployees()函数-->
<select id="selDepartments" onchange="showEmployees()">
<option>请选择部门</option>
<!--循环迭代标签,把部门信息遍历出来 -->
<c:forEach var="dept" items="${requestScope.deptsList}">
<!-- 部门id 部门名称 -->
<option value="${dept.departmentid}">${dept.departmentname}</option>
</c:forEach>
</select> <select id="selEmployees" multiple="true">
</select>
</div>
<div id="divoperator">
<input type="button" class="clickbutton" value=">"
onclick="selectEmployees()" /> <input type="button"
class="clickbutton" value="<" onclick="deSelectEmployees()" />
</div>
<div id="divto">
<select id="selSelectedEmployees" multiple="true">
</select>
</div></td>
</tr>
<tr>
<td class="command" colspan="2"><input type="submit"
class="clickbutton" value="预定会议" /> <input type="reset"
class="clickbutton" value="重置" /></td>
</tr>
</table>
</fieldset>
</form>
</div>
<div class="page-footer">
<hr />
更多问题,欢迎联系<a href="mailto:webmaster@eeg.com">管理员</a> <img
src="images/footer.png" alt="CoolMeeting" />
</div>
</body>
</html>
3.配置web.xml
4.测试
4.选择及取消参会人员
主要使用JS来实现
selectEmployee,deselectEmployee两个方法
1.修改bookmeeting.jsp
/* 添加员工到列表 */
function selectEmployees() {
/* 左边的列表 */
var selEmployees = document.getElementById("selEmployees");
/* 右边的列表 */
var selSelectedEmployees = document.getElementById("selSelectedEmployees");
for (var i = 0; i < selEmployees.options.length; i++) {
/*判断是否被选中 */
if (selEmployees.options[i].selected) {
/* 把选中的id和姓名移到右边 */
selSelectedEmployees.options.add(new Option(
selEmployees.options[i].text,
selEmployees.options[i].value));
/*并把左边的消去 */
selEmployees.options.remove(i);
}
}
}
/* 从列表移除员工 */
function deSelectEmployees() {
/* 左边的列表 */
var selEmployees = document.getElementById("selEmployees");
/* 右边的列表 */
var selSelectedEmployees = document.getElementById("selSelectedEmployees");
for (var i = 0; i < selSelectedEmployees.options.length; i++) {
/*判断是否被选中 */
if (selSelectedEmployees.options[i].selected) {
/* 把选中的id和姓名移到左边 */
selEmployees.options.add(new Option(
selSelectedEmployees.options[i].text,
selSelectedEmployees.options[i].value));
/*并把右边的消去 */
selSelectedEmployees.options.remove(i);
}
}
}
2.测试:
5.实现预定会议功能
1.修改bookMeetingServlet
注意这里导包的是sql的
package com.meeting.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.meeting.dao.DepartmentDAO;
import com.meeting.dao.MeetingRoomDAO;
import com.meeting.service.MeetingService;
import com.meeting.vo.Department;
import com.meeting.vo.Meeting;
import com.meeting.vo.MeetingRoom;
/**
* 预定会议控制器
*
* @author Administrator
*
*/
public class BookMeetingServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String code = request.getParameter("code");
// 当?code=prepare时候才执行
if (code != null && code.equals("prepare")) {
MeetingRoomDAO roomDao = new MeetingRoomDAO();
DepartmentDAO deptDao = new DepartmentDAO();
// 查出所有会议
List<MeetingRoom> roomsList = roomDao.selectAllMeetingRooms();
// 查出所有部门
List<Department> deptsList = deptDao.selectAll();
// 把上面查出的返回到页面
request.setAttribute("roomsList", roomsList);
request.setAttribute("deptsList", deptsList);
request.getRequestDispatcher("bookmeeting.jsp").forward(request, response);
}
//新建分支,当?code=book时,实现预定会议功能
if (code != null && code.equals("book")) {
MeetingService meetingService = new MeetingService();
String meetingname = request.getParameter("meetingname");
int roomid = Integer.parseInt(request.getParameter("roomid"));
HttpSession session = request.getSession();
//这里预订者的id是登录者的id,从LoginServlet存的session那获取employeeid(那里的代码为session.setAttribute("employeeid", loginedEmployee.getEmployeeid());)
int reservationistid = (Integer) session.getAttribute("employeeid");
int numofparticipants = Integer.parseInt(request.getParameter("numofparticipants"));
//时间取出来的时候是字符串,现在把他强转为Timestamp类型
Timestamp starttime = Timestamp.valueOf(request.getParameter("starttime"));
Timestamp endtime = Timestamp.valueOf(request.getParameter("endtime"));
Timestamp reservationtime = new Timestamp(System.currentTimeMillis());
Timestamp canceledtime = null;
String status = "0";
String description = request.getParameter("description");
//获得meeting的信息
Meeting meeting = new Meeting(meetingname, roomid, reservationistid, numofparticipants, starttime, endtime,
reservationtime, canceledtime, description, status);
//获得多个参会人员的id,用字符串数组存起来
String[] employeesid = request.getParameterValues("selSelectedEmployees");
//获得参会人员employeesidList信息
List<Integer> employeesidList = new ArrayList<Integer>();
//迭代循环字符串数组把参会人员的id放在集合里
for (String s : employeesid) {
employeesidList.add(Integer.parseInt(s));
}
//调用service的预定会议的方法(会议,参会人员的集合信息)
meetingService.bookMeeting(meeting, employeesidList);
}
}
}
2.修改LoginServlet 用Session存一下登陆者的id
3.修改bookmeeting.jsp中js 保证参会人员提交前,参会人员被选中
新增一个js方法来保证选中人员会被选中
4.观察meeting表\ meetingpartcipants表 来验证效果
查看数据库发现并没有信息添加进去,唉
查看了一下,原来之前没有填写表单提交的
重启tomcat再测试一下
还是失败
继续差错,少了这个传参的...
给完整的源码
<%@ page language="java"
import="java.util.*,com.chinasofti.meeting.vo.*" pageEncoding="utf-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>CoolMeeting会议管理系统</title>
<link rel="stylesheet" href="styles/common03.css" />
<style type="text/css">
#divfrom {
float: left;
width: 150px;
}
#divto {
float: left;
width: 150px;
}
#divoperator {
float: left;
width: 50px;
padding: 60px 5px;
}
#divoperator input[type="button"] {
margin: 10px 0;
}
#selDepartments {
display: block;
width: 100%;
}
#selEmployees {
display: block;
width: 100%;
height: 200px;
}
#selSelectedEmployees {
display: block;
width: 100%;
height: 225px;
}
</style>
<script language="javascript" type="text/javascript"
src="My97DatePicker/WdatePicker.js"></script>
<script type="text/javascript">
var xmlHttp;
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
function showEmployees() {
createXMLHttpRequest();
var deptid=document.getElementById("selDepartments").value;
var url = "SelectEmployeesOfDeptServlet?departmentid=" + escape(deptid);
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = callback;
xmlHttp.send(null);
}
function callback() {
clearEmployees();
var selEmployees=document.getElementById("selEmployees");
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
var elements = xmlHttp.responseXML.getElementsByTagName("option");
for (var i = 0; i < elements.length; i++) {
var value = elements[i].getElementsByTagName("value")[0].firstChild.nodeValue;
var text = elements[i].getElementsByTagName("text")[0].firstChild.nodeValue;
selEmployees.options.add(new Option(text,value));
}
}
}
}
function clearEmployees(list){
document.getElementById("selEmployees").options.length=0;
}
function selectEmployees(){
var selEmployees=document.getElementById("selEmployees");
var selSelectedEmployees=document.getElementById("selSelectedEmployees");
for(var i=0;i<selEmployees.options.length;i++){
if (selEmployees.options[i].selected){
var opt=new Option(selEmployees.options[i].text,selEmployees.options[i].value);
opt.selected=true;
selSelectedEmployees.options.add(opt);
selEmployees.options.remove(i);
}
}
}
function deSelectEmployees(){
var selEmployees=document.getElementById("selEmployees");
var selSelectedEmployees=document.getElementById("selSelectedEmployees");
for(var i=0;i<selSelectedEmployees.options.length;i++){
if (selSelectedEmployees.options[i].selected){
selEmployees.options.add(new Option(selSelectedEmployees.options[i].text,selSelectedEmployees.options[i].value));
selSelectedEmployees.options.remove(i);
}
}
setSelected();
}
function setSelected(){
var selSelectedEmployees=document.getElementById("selSelectedEmployees");
for(var i=0;i<selSelectedEmployees.options.length;i++){
selSelectedEmployees.options[i].selected=true;
}
}
</script>
</head>
<body >
<div class="page-content">
<div class="content-nav">会议预定 > 预定会议</div>
<form method="post" action="BookMeetingServlet">
<fieldset>
<legend>会议信息</legend>
<table class="formtable">
<tr>
<td>会议名称:</td>
<td><input type="text" id="meetingname" name="meetingname" maxlength="20" /></td>
</tr>
<tr>
<td>预计参加人数:</td>
<td><input type="text" id="numofattendents" name="numofparticipants"/></td>
</tr>
<tr>
<td>预计开始时间:</td>
<td><input class="Wdate" type="text" name="starttime"
onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})"></td>
</tr>
<tr>
<td>预计结束时间:</td>
<td><input class="Wdate" type="text" name="endtime"
onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})">
</td>
</tr>
<tr>
<td>选择会议室:</td>
<td><select name="roomid">
<c:forEach var="room" items="${requestScope.roomsList}">
<option value="${room.roomid}">${room.roomname}</option>
</c:forEach>
</select></td>
</tr>
<tr>
<td>会议说明:</td>
<td><textarea id="description" name="description" rows="5"></textarea></td>
</tr>
<tr>
<td>选择参会人员:</td>
<td>
<div id="divfrom">
<select id="selDepartments" onchange="showEmployees()">
<option>请选择部门</option>>
<c:forEach var="dept" items="${requestScope.deptsList}">
<option value="${dept.departmentid}">${dept.departmentname}</option>
</c:forEach>
</select> <select id="selEmployees" multiple="multiple">
</select>
</div>
<div id="divoperator">
<input type="button" class="clickbutton" value=">" onclick="selectEmployees()" />
<input type="button"
class="clickbutton" value="<" onclick="deSelectEmployees()" />
</div>
<div id="divto">
<select id="selSelectedEmployees" name="selSelectedEmployees" multiple="multiple" >
</select>
</div></td>
</tr>
<tr>
<td class="command" colspan="2">
<input type="hidden" name="code" value="book">
<input type="submit" class="clickbutton" value="预定会议" />
<input type="reset" class="clickbutton" value="重置" /></td>
</tr>
</table>
</fieldset>
</form>
</div>
<div class="page-footer">
<hr />
更多问题,欢迎联系<a href="mailto:webmaster@eeg.com">管理员</a> <img
src="images/footer.png" alt="CoolMeeting" />
</div>
</body>
</html>
终于成功了
6.我的预定
1.创建ViewMyBookingServlet.java
package com.meeting.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.meeting.service.MeetingRoomService;
import com.meeting.service.MeetingService;
import com.meeting.vo.Meeting;
public class ViewMyBookingServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session=request.getSession();
//取出预订者的id,也就是登录用户的id
int reservationistid=(Integer) session.getAttribute("employeeid");
MeetingService service=new MeetingService();
MeetingRoomService roomService=new MeetingRoomService();
//根据当前的id来查询会议
List<Meeting> meetingsList=service.viewMyBookingInfo(reservationistid);
//因为会议在不同的会议室举行,所以把会议室的名字也取出来
List<String> roomsNameList=new ArrayList<String>();
//根据roomid来查会议室
for(Meeting m:meetingsList){
roomsNameList.add(roomService.viewOneMeetingRoom(m.getRoomid()).getRoomname());
}
//meeting和字符串键值对地存起来
Map<Meeting,String> map=new HashMap<Meeting,String>();
for(int i=0;i<meetingsList.size();i++){
map.put(meetingsList.get(i), roomsNameList.get(i));
}
//把map存到前端
request.setAttribute("map", map);
request.getRequestDispatcher("mybookings.jsp").forward(request, response);
}
}
2.修改mybookings.jsp
<%@ page language="java"
import="java.util.*,com.meeting.vo.*" pageEncoding="utf-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>CoolMeeting会议管理系统</title>
<link rel="stylesheet" href="styles/common03.css"/>
<style type="text/css">
</style>
</head>
<body>
<div class="page-content">
<div class="content-nav">
个人中心 > 我的预定
</div>
<table class="listtable">
<caption>我预定的会议:</caption>
<tr class="listheader">
<th>会议名称</th>
<th>会议室名称</th>
<th>会议开始时间</th>
<th>会议结束时间</th>
<th>会议预定时间</th>
<th>操作</th>
</tr>
<c:forEach var="item" items="${requestScope.map}">
<tr>
<td>${item.key.meetingname}</td>
<td>${item.value}</td>
<td>${item.key.starttime}</td>
<td>${item.key.endtime}</td>
<td>${item.key.reservationtime}</td>
<td>
<a class="clickbutton" href="#">查看/撤销</a>
</td>
</tr>
</c:forEach>
</table>
</div>
<div class="page-footer">
<hr/>
更多问题,欢迎联系<a href="mailto:webmaster@eeg.com">管理员</a>
<img src="images/footer.png" alt="CoolMeeting"/>
</div>
</body>
</html>
3.web.xml
4.修改adminleft.jsp
5.测试:
7.我的会议
1.创建ViewMyMeetingsServlet
这里创建的时候会报错,因为前门的EmployeeDAO漏了一个方法
这里补上
/**
* 方法九:根据id查询登陆者的信息
* 通过用户名查询,返回Employee对象,把查到的所有属性返回,以便后续使用。如果返回值为null,表示用户名不存在
* @param id
* @return
*/
public Employee selectById(int id){
conn=ConnectionFactory.getConnection();
Employee employee=null;
try {
PreparedStatement st=null;
String sql="select * from employee where employeeid="+id;
st = conn.prepareStatement(sql);
ResultSet rs =st.executeQuery(sql);
if(rs.next()==true){
employee=new Employee();
employee.setEmployeeid(rs.getInt("employeeid"));
employee.setEmployeename(rs.getString("employeename"));
employee.setUsername(rs.getString("username"));
employee.setPhone(rs.getString("phone"));
employee.setEmail(rs.getString("email"));
employee.setStatus(rs.getString("status"));
employee.setDepartmentid(rs.getInt("departmentid"));
employee.setPassword(rs.getString("password"));
employee.setRole(rs.getString("role"));
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
ConnectionFactory.closeConnection();
}
return employee;
}
package com.meeting.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.meeting.dao.EmployeeDAO;
import com.meeting.service.EmployeeService;
import com.meeting.service.MeetingRoomService;
import com.meeting.service.MeetingService;
import com.meeting.vo.Meeting;
public class ViewMyMeetingsServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session=request.getSession();
//用当前登录的id作为参会者id
int employeeid=(Integer) session.getAttribute("employeeid");
MeetingService service=new MeetingService();
MeetingRoomService roomService=new MeetingRoomService();
EmployeeDAO empDao=new EmployeeDAO();
//查询当前id的参会信息
List<Meeting> meetingsList=service.viewMymeetingsInfo(employeeid);
List<String[]> nameList=new ArrayList<String[]>();
//用数组来存预订者的姓名,会议室的姓名
for(Meeting m:meetingsList){
String empName=empDao.selectById(m.getReservationistid()).getEmployeename();
String roomName=roomService.viewOneMeetingRoom(m.getRoomid()).getRoomname();
nameList.add(new String[]{empName,roomName});
}
//
Map<Meeting,String[]> map=new HashMap<Meeting,String[]>();
for(int i=0;i<meetingsList.size();i++){
map.put(meetingsList.get(i), nameList.get(i));
}
request.setAttribute("map", map);
request.getRequestDispatcher("mymeetings.jsp").forward(request, response);
}
}
2.新建mymeetings.jsp
<%@ page language="java"
import="java.util.*,com.meeting.vo.*" pageEncoding="utf-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<title>CoolMeeting会议管理系统</title>
<link rel="stylesheet" href="styles/common03.css"/>
<style type="text/css">
</style>
</head>
<body>
<div class="page-content">
<div class="content-nav">
个人中心 > 我的会议
</div>
<table class="listtable">
<caption>我将参加的会议:</caption>
<tr class="listheader">
<th>会议名称</th>
<th>会议室名称</th>
<th>会议开始时间</th>
<th>会议结束时间</th>
<th>会议预定时间</th>
<th>预定者</th>
<th>操作</th>
</tr>
<!--迭代map -->
<c:forEach var="item" items="${requestScope.map}">
<tr>
<td>${item.key.meetingname}</td>
<!--会议室的名字 -->
<td>${item.value[1]}</td>
<td>${item.key.starttime}</td>
<td>${item.key.endtime}</td>
<td>${item.key.reservationtime}</td>
<!--预订者名字 -->
<td>${item.value[0]}</td>
<td>
<a class="clickbutton" href="#">查看/撤销</a>
</td>
</tr>
</c:forEach>
</table>
</div>
<div class="page-footer">
<hr/>
更多问题,欢迎联系<a href="mailto:webmaster@eeg.com">管理员</a>
<img src="images/footer.png" alt="CoolMeeting"/>
</div>
</body>
</html>
3.修改adminleft.jsp
4.配置web.xml
5.测试
8.查看预定详情并取消
1.创建ViewMyBookingDetailServlet查看我的会议
同上,要在meetingDAO那里新增一个selectByid方法
查询某id值对应的会议
public Meeting selectById(int meetingid){
conn=ConnectionFactory.getConnection();
Meeting meeting=null;
try {
PreparedStatement st=null;
String sql="select * from meeting where meetingid="+meetingid;
st = conn.prepareStatement(sql);
ResultSet rs =st.executeQuery(sql);
while(rs.next()){
meeting=new Meeting();
meeting.setMeetingid(rs.getInt("meetingid"));
meeting.setMeetingname(rs.getString("meetingname"));
meeting.setRoomid(rs.getInt("roomid"));
meeting.setReservationistid(rs.getInt("reservationistid"));
meeting.setNumberofparticipants(rs.getInt("numberofparticipants"));
meeting.setStarttime(rs.getTimestamp("starttime"));
meeting.setEndtime(rs.getTimestamp("endtime"));
meeting.setReservationtime(rs.getTimestamp("reservationtime"));
meeting.setCanceledtime(rs.getTimestamp("canceledtime"));
meeting.setDescription(rs.getString("description"));
meeting.setStatus(rs.getString("status"));
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
ConnectionFactory.closeConnection();
}
return meeting;
}
新增的servlet
package com.meeting.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.meeting.dao.EmployeeDAO;
import com.meeting.dao.MeetingDAO;
import com.meeting.dao.MeetingParticipantsDAO;
import com.meeting.service.MeetingService;
import com.meeting.vo.Employee;
import com.meeting.vo.Meeting;
/**
* 我的预定的详情
* @author Administrator
*
*/
public class ViewMyBookingDetailServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获得预定id
int meetingid=Integer.parseInt(request.getParameter("meetingid"));
MeetingDAO meetingDao=new MeetingDAO();
MeetingParticipantsDAO parDao=new MeetingParticipantsDAO();
//通过id查询得到对应的会议
Meeting meeting=meetingDao.selectById(meetingid);
//通过会议id值查到所有参会人员的id值放在列表employeesList里
List<Employee> employeesList=parDao.selectAllEmployeesByMeetingId(meeting.getMeetingid());
//保存会议和员工列表
request.setAttribute("meeting", meeting);
request.setAttribute("employeesList", employeesList);
request.getRequestDispatcher("mybookingdetail.jsp").forward(request, response);
}
}
2.修改mybookingdetail.jsp
<%@ page language="java"
import="java.util.*,com.meeting.vo.*" pageEncoding="utf-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>CoolMeeting会议管理系统</title>
<link rel="stylesheet" href="styles/common03.css"/>
<style type="text/css">
#divfrom{
float:left;
width:200px;
}
#divto{
float:left;
width:200px;
}
#divoperator{
float:left;
width:50px;
padding:60px 5px;
}
#divoperator input[type="button"]{
margin:10px 0;
}
#selDepartments{
display:block;
width:100%;
}
#selEmployees{
display:block;
width:100%;
height:200px;
}
#selSelectedEmployees{
display:block;
width:100%;
height:225px;
}
</style>
</head>
<body>
<div class="page-content">
<div class="content-nav">
会议预定 > 修改会议预定
</div>
<form method="post" action="CancelMeetingServlet">
<fieldset>
<legend>会议信息</legend>
<table class="formtable">
<tr>
<td>会议名称:</td>
<td>${requestScope.meeting.meetingname}</td>
</tr>
<tr>
<td>预计参加人数:</td>
<td>${requestScope.meeting.numberofparticipants}</td>
</tr>
<tr>
<td>预计开始时间:</td>
<td>${requestScope.meeting.starttime}</td>
</tr>
<tr>
<td>预计结束时间:</td>
<td>${requestScope.meeting.endtime}
</td>
</tr>
<tr>
<td>会议说明:</td>
<td>
${requestScope.meeting.description}
</td>
</tr>
<tr>
<td>参会人员:</td>
<td>
<table class="listtable">
<tr class="listheader">
<th>姓名</th>
<th>联系电话</th>
<td>电子邮件</td>
</tr>
<!-- 迭代显示信息 -->
<c:forEach var="emp" items="${requestScope.employeesList}">
<tr>
<td>${emp.employeename}</td>
<td>${emp.phone}</td>
<td>${emp.email}</td>
</tr>
</c:forEach>
</table>
</td>
</tr>
<tr>
<td class="command" colspan="2">
<input type="hidden" name="meetingid" value="${requestScope.meeting.meetingid }">
<input type="submit" class="clickbutton" value="取消会议" />
<input type="button" class="clickbutton" value="返回" onclick="window.history.back();"/>
</td>
</tr>
</table>
</fieldset>
</form>
</div>
<div class="page-footer">
<hr/>
更多问题,欢迎联系<a href="mailto:webmaster@eeg.com">管理员</a>
<img src="images/footer.png" alt="CoolMeeting"/>
</div>
</body>
</html>
3.创建CancelMeetingServlet来取消会议
package com.meeting.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.meeting.service.MeetingService;
public class CancelMeetingServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//通过获得会议id
int meetingid=Integer.parseInt(request.getParameter("meetingid"));
MeetingService service=new MeetingService();
//调用取消会议的方法
service.cancelMeeting(meetingid);
request.getRequestDispatcher("ViewMyBookingServlet").forward(request, response);
}
}
3.配置web.xml
4.修改mybookings.jsp
5.测试:
9.查看参会详情
1.创建ViewMyMeetingDetailServlet
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取会议id
int meetingid=Integer.parseInt(request.getParameter("meetingid"));
MeetingDAO meetingDao=new MeetingDAO();
MeetingParticipantsDAO parDao=new MeetingParticipantsDAO();
//通过会议id查询会议
Meeting meeting=meetingDao.selectById(meetingid);
//查询这个会议的所有参会人员的信息
List<Employee> employeesList=parDao.selectAllEmployeesByMeetingId(meeting.getMeetingid());
request.setAttribute("meeting", meeting);
request.setAttribute("employeesList", employeesList);
request.getRequestDispatcher("mymeetingdetail.jsp").forward(request, response);
}
2.配置web.xml
3.创建mymeetingdetails.jsp
<%@ page language="java" import="java.util.*,com.meeting.vo.*"
pageEncoding="utf-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>CoolMeeting会议管理系统</title>
<link rel="stylesheet" href="styles/common03.css" />
<style type="text/css">
#divfrom {
float: left;
width: 200px;
}
#divto {
float: left;
width: 200px;
}
#divoperator {
float: left;
width: 50px;
padding: 60px 5px;
}
#divoperator input[type="button"] {
margin: 10px 0;
}
#selDepartments {
display: block;
width: 100%;
}
#selEmployees {
display: block;
width: 100%;
height: 200px;
}
#selSelectedEmployees {
display: block;
width: 100%;
height: 225px;
}
</style>
</head>
<body>
<div class="page-content">
<div class="content-nav">会议预定 > 修改会议预定</div>
<form>
<fieldset>
<legend>会议信息</legend>
<table class="formtable">
<tr>
<td>会议名称:</td>
<td>${requestScope.meeting.meetingname}</td>
</tr>
<tr>
<td>预计参加人数:</td>
<td>${requestScope.meeting.numberofparticipants}</td>
</tr>
<tr>
<td>预计开始时间:</td>
<td>${requestScope.meeting.starttime}</td>
</tr>
<tr>
<td>预计结束时间:</td>
<td>${requestScope.meeting.endtime}</td>
</tr>
<tr>
<td>会议说明:</td>
<td>${requestScope.meeting.description}</td>
</tr>
<tr>
<td>参会人员:</td>
<td>
<table class="listtable">
<tr class="listheader">
<th>姓名</th>
<th>联系电话</th>
<td>电子邮件</td>
</tr>
<c:forEach var="emp" items="${requestScope.employeesList}">
<tr>
<td>${emp.employeename}</td>
<td>${emp.phone}</td>
<td>${emp.email}</td>
</tr>
</c:forEach>
</table>
</td>
</tr>
<tr>
<td class="command" colspan="2"><input type="button"
class="clickbutton" value="返回" onclick="window.history.back();" />
</td>
</tr>
</table>
</fieldset>
</form>
</div>
<div class="page-footer">
<hr />
更多问题,欢迎联系<a href="mailto:webmaster@eeg.com">管理员</a> <img
src="images/footer.png" alt="CoolMeeting" />
</div>
</body>
</html>
4.修改mymeetings.jsp
5.测试