十一:javaee会议管理系统实现过程之预定会议功能的代码(完整详细有注释)

目录

 

 

 

 

1.实现Model层

2.预定会议页面

3.显示部门员工列表

4.选择及取消参会人员

5.实现预定会议功能

终于成功了

6.我的预定

7.我的会议

8.查看预定详情并取消

9.查看参会详情

 


 

 

 

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="&gt;"
									onclick="selectEmployees()" /> <input type="button"
									class="clickbutton" value="&lt;" 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="&gt;"
									onclick="selectEmployees()" /> <input type="button"
									class="clickbutton" value="&lt;" 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="&gt;" onclick="selectEmployees()" /> 
								<input type="button"
									class="clickbutton" value="&lt;" 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.测试

 

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一身正气z

打赏随心就好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值