基于javaweb+mysql的jsp+servlet会议室预约系统(java+jsp+bootstrap+servlet+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的JSP+Servlet会议室预约系统(java+jsp+bootstrap+servlet+mysql)
项目介绍
网上会议室预约系统,该项目是一个前后台的项目;
前台主要功能有: 登录、注册; 首页、预约须知; 会议室预约; 会议室信息; 会议室预约表; 后台主要功能有: 通告栏:查看、添加、修改、删除; 会议室信息:查看、添加、修改、删除; 查看登记表; 查看预约消息;
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.是否Maven项目: 否;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目 6.数据库:MySql 8.0版本;
技术栈
- 后端:Servlet 2. 前端:JSP+bootstrap+jQuery
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 将项目中druid.properties配置文件中的数据库配置改为自己的配置 3. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat,然后运行; 4. 运行项目, 前台运行地址:http://localhost:8080/index.jsp 登录 后台运行地址:http://localhost:8080/back/index.jsp 登录
if (startDate >= endDate){
out.print("结束时间必须晚于开始时间");
}else if(endDate - startDate >= 1000*60*60*14) {
out.print("预约时常不可超出14小时");
}else if(startHour < 8 || endHour >= 22){
out.print("请在规定的时间段选择预约时间");
}else if (applyService.isExistTime(start,end,mid)){
out.print("此时间段已被预约,请换时间段");
}else {
out.print("ok");
}
}
}
public class UtilHelper {
/**
* 获取当前日期时间
*/
public static String getTime() {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date);
}
/**
* 把date对象转换成String
* @param date
*/
public static String dateToString(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date);
HttpServletResponse response = (HttpServletResponse)resp;
String requestURI = request.getRequestURI();
if (UtilHelper.contains(requestURI,urls)){
chain.doFilter(request, response);
}else {
HttpSession session = request.getSession();
Admin admin = (Admin) session.getAttribute("admin");
if (admin != null){
chain.doFilter(request,response);
}else {
response.sendRedirect("login.jsp");
}
}
}
public void init(FilterConfig config) throws ServletException {
String url = config.getInitParameter("url");
String[] split = url.split(",");
urls = Arrays.asList(split);
}
}
@WebServlet("/modifyPassword")
public class ModifyPasswordServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf8");
String id = request.getParameter("id");
String oldpass = request.getParameter("oldpass");
String newpass = request.getParameter("newpass");
UserService userService = new UserServiceImpl();
String password = userService.getPasswordById(Integer.parseInt(id));
if(password.equals(oldpass)){
if(status.equals("1")){
int uid = applyService.getUid(Integer.parseInt(id));
String username = userService.getNameById(uid);
String meetingName = applyService.getMeetingName(Integer.parseInt(id));
String DateTime = applyService.getDateTime(Integer.parseInt(id));
message.setUid(uid);
message.setTitle("系统消息");
message.setContent("尊敬的用户"+username+",您好!您预约于"+DateTime+meetingName+"号会议室已经预约通过,请您注意时间,准时到达.");
messageService.addMessage(message);
}
}
if (count > 0){
out.print("ok");
}else {
out.print("cancel");
}
}
}
@WebFilter({"/apply.jsp","/regform.jsp"})
public class ApplyFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse)resp;
@WebServlet("/modifyPassword")
public class ModifyPasswordServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf8");
String id = request.getParameter("id");
String oldpass = request.getParameter("oldpass");
String newpass = request.getParameter("newpass");
UserService userService = new UserServiceImpl();
String password = userService.getPasswordById(Integer.parseInt(id));
if(password.equals(oldpass)){
int count = userService.updatePassword(id,newpass);
if(count > 0){
request.setAttribute("msg","修改成功");
request.getRequestDispatcher("update.jsp").forward(request,response);
}else {
response.sendRedirect("errorPage.jsp");
}
}else {
request.setAttribute("msg","原密码错误");
request.getRequestDispatcher("update.jsp").forward(request,response);
}
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf8");
Map<String, String[]> meetingMap = request.getParameterMap();
Meeting meeting = new Meeting();
try {
BeanUtils.populate(meeting,meetingMap);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
MeetingService meetingService = new MeetingServiceImpl();
int count = meetingService.addMeeting(meeting);
if(count > 0){
request.getContextPath();
request.setAttribute("msg","添加成功");
request.getRequestDispatcher("addmeeting.jsp").forward(request,response);
}else {
response.sendRedirect("../errorPage.jsp");
}
}
}
public class CookieUtils {
private static final String KEY = "cookie@ybzy.com123!";
/**
* 指令浏览器创建cookie文件用的方法
*
* @param username:放到cookie信息里用户名
* @param req
* @param resp:调用addCookie方法得response对象
* @param sec:设置Cookie失效日期,单位秒
*/
public static String dateToString(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date);
}
/**
*
* @param num
* @return
*/
public static DateTime createDateTime(int num, HttpServletRequest request){
LocalDate ld = LocalDate.now();
int week = ld.getDayOfWeek().getValue();
LocalDate date = ld.plusWeeks(num);
LocalDate monday = date.plusDays(-(week-1));
LocalDate tuesday = monday.plusDays(1);
LocalDate wednesday = tuesday.plusDays(1);
LocalDate thursday = wednesday.plusDays(1);
LocalDate friday = thursday.plusDays(1);
LocalDate saturday = friday.plusDays(1);
LocalDate sunday = saturday.plusDays(1);
DateTime dateTime = new DateTime();
dateTime.setMonday(monday.toString());
dateTime.setTuesday(tuesday.toString());
dateTime.setWednesday(wednesday.toString());
dateTime.setThursday(thursday.toString());
dateTime.setFriday(friday.toString());
dateTime.setSaturday(saturday.toString());
dateTime.setSunday(sunday.toString());
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
String first = monday.format(formatter);
String last = sunday.format(formatter);
dateTime.setDate(first+"—"+last);
HttpSession session = request.getSession();
session.setAttribute("datetime",dateTime);
/*System.out.println(dateTime);*/
/*Gson gson = new Gson();
String json = gson.toJson(dateTime);
session.setAttribute("datetimeJson",json);*/
return dateTime;
}
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
User user = (User)request.getSession().getAttribute("user");
if (user != null){
regform.setUid(user.getId());
RegformService regformService = new RegformServiceImpl();
int count = regformService.addRegform(regform);
if (count > 0){
request.setAttribute("msg","已发送登记信息,请等待审核通过");
request.getRequestDispatcher("regform.jsp").forward(request,response);
}else {
response.sendRedirect("errorPage.jsp");
}
}else {
response.sendRedirect("login.jsp");
}
}
}
@WebServlet("/back/addMeeting")
public class AddMeetingServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf8");
Map<String, String[]> meetingMap = request.getParameterMap();
Meeting meeting = new Meeting();
try {
LocalDate wednesday = tuesday.plusDays(1);
LocalDate thursday = wednesday.plusDays(1);
LocalDate friday = thursday.plusDays(1);
LocalDate saturday = friday.plusDays(1);
LocalDate sunday = saturday.plusDays(1);
DateTime dateTime = new DateTime();
dateTime.setMonday(monday.toString());
dateTime.setTuesday(tuesday.toString());
dateTime.setWednesday(wednesday.toString());
dateTime.setThursday(thursday.toString());
dateTime.setFriday(friday.toString());
dateTime.setSaturday(saturday.toString());
dateTime.setSunday(sunday.toString());
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
String first = monday.format(formatter);
String last = sunday.format(formatter);
dateTime.setDate(first+"—"+last);
HttpSession session = request.getSession();
session.setAttribute("datetime",dateTime);
/*System.out.println(dateTime);*/
/*Gson gson = new Gson();
String json = gson.toJson(dateTime);
session.setAttribute("datetimeJson",json);*/
return dateTime;
}
public static boolean contains(String str, List<String> lists){
for (String string : lists){
if (str.contains(string)){
return true;
}
}
return false;
}
}
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse)resp;
String requestURI = request.getRequestURI();
if (UtilHelper.contains(requestURI,urls)){
chain.doFilter(request, response);
}else {
HttpSession session = request.getSession();
Admin admin = (Admin) session.getAttribute("admin");
if (admin != null){
chain.doFilter(request,response);
}else {
response.sendRedirect("login.jsp");
}
}
}
public void init(FilterConfig config) throws ServletException {
String url = config.getInitParameter("url");
String[] split = url.split(",");
urls = Arrays.asList(split);
}
}
@WebServlet("/modifyPassword")
public class ModifyPasswordServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf8");
String id = request.getParameter("id");
String oldpass = request.getParameter("oldpass");
String newpass = request.getParameter("newpass");
}else {
out.print("ok");
}
}
}
public class UtilHelper {
/**
* 获取当前日期时间
*/
public static String getTime() {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date);
}
/**
* 把date对象转换成String
* @param date
*/
public static String dateToString(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date);
}
/**
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf8");
String id = request.getParameter("id");
String oldpass = request.getParameter("oldpass");
String newpass = request.getParameter("newpass");
UserService userService = new UserServiceImpl();
String password = userService.getPasswordById(Integer.parseInt(id));
if(password.equals(oldpass)){
int count = userService.updatePassword(id,newpass);
if(count > 0){
request.setAttribute("msg","修改成功");
request.getRequestDispatcher("update.jsp").forward(request,response);
}else {
response.sendRedirect("errorPage.jsp");
}
}else {
request.setAttribute("msg","原密码错误");
request.getRequestDispatcher("update.jsp").forward(request,response);
}
}
}
@WebServlet("/regUser")
public class RegUserServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf8");
Map<String, String[]> userMap = request.getParameterMap();
if (startDate >= endDate){
out.print("结束时间必须晚于开始时间");
}else if(endDate - startDate >= 1000*60*60*14) {
out.print("预约时常不可超出14小时");
}else if(startHour < 8 || endHour >= 22){
out.print("请在规定的时间段选择预约时间");
}else if (applyService.isExistTime(start,end,mid)){
out.print("此时间段已被预约,请换时间段");
}else {
out.print("ok");
}
}
}
public class UtilHelper {
/**
* 获取当前日期时间
*/
public static String getTime() {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date);
}
/**
* 把date对象转换成String
* @param date
*/
public static String dateToString(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date);
}
@WebServlet("/back/modifyMeeting")
public class ModifyMeetingServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf8");
Map<String, String[]> meetingMap = request.getParameterMap();
Meeting meeting = new Meeting();
try {
BeanUtils.populate(meeting,meetingMap);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
MeetingService meetingService = new MeetingServiceImpl();
int count = meetingService.updateMeeting(meeting);
if (count > 0){
response.sendRedirect("meetingList");
}else {
response.sendRedirect("../errorPage.jsp");
}
}
}
@WebFilter(urlPatterns = "/back/*",initParams = {@WebInitParam(name = "url",value = "css,layui,images,login,index.jsp")})
public class LoginFilter implements Filter {
private List<String> urls;
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse)resp;
String requestURI = request.getRequestURI();
if (UtilHelper.contains(requestURI,urls)){
chain.doFilter(request, response);
}else {
HttpSession session = request.getSession();
Admin admin = (Admin) session.getAttribute("admin");
if (admin != null){
chain.doFilter(request,response);
}else {
response.sendRedirect("login.jsp");
}
}
}
public void init(FilterConfig config) throws ServletException {
String url = config.getInitParameter("url");
String[] split = url.split(",");
urls = Arrays.asList(split);
}
}
requestURI.contains("apply.jsp") || requestURI.contains("meetinglist") || requestURI.contains("autoLogin") || requestURI.contains("top.jsp")){*/
if(requestURI.equals("/meeting/") || UtilHelper.contains(requestURI,urls)){
chain.doFilter(request, response);
}else {
HttpSession session = request.getSession();
User user = (User)session.getAttribute("user");
if (user != null){
chain.doFilter(request, response);
}else {
response.sendRedirect(request.getContextPath()+"/login.jsp");
}
}
}
public void init(FilterConfig config) throws ServletException {
String url = config.getInitParameter("url");
String[] strs = url.split(",");
urls = Arrays.asList(strs);
}
}
*
* @param username:放到cookie信息里用户名
* @param req
* @param resp:调用addCookie方法得response对象
* @param sec:设置Cookie失效日期,单位秒
*/
public static void createCookies(String username, HttpServletRequest req, HttpServletResponse resp, int sec) {
Cookie userCookie = new Cookie("userKey", username);
Cookie ssidCookie = new Cookie("ssid", md5Encrypt(username));
userCookie.setMaxAge(sec);
ssidCookie.setMaxAge(sec);
resp.addCookie(userCookie);
resp.addCookie(ssidCookie);
}
/**
* 这个方法得作用就是加密,把一个明文加载成密文
*
* @param ss
* @return
*/
public static String md5Encrypt(String ss) {
ss = ss == null ? "" : ss + KEY;
char[] md5Digist = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
byte[] ssarr = ss.getBytes();
try {
MessageDigest md = MessageDigest.getInstance("MD5");//md5 sha1 sha2 加密算法
md.update(ssarr);//把明文放到MessageDigest的对象实例去,更新数据
byte[] mssarr = md.digest();
int len = mssarr.length;
char[] str = new char[len*2];
int k = 0;//计数
for(int i=0;i<len;i++) {
byte b = mssarr[i];
str[k++] = md5Digist[b >>> 4 & 0xf];
str[k++] = md5Digist[b & 0xf];
}
return new String(str);
} catch (Exception e) {
}
}
@WebServlet("/autoLogin")
public class AutoLoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf8");
Cookie[] cookies = request.getCookies();
String username = null;
String ssid = null;
for (Cookie cookie : cookies){
if(cookie.getName().equals("userKey")){
username = cookie.getValue();
}
if(cookie.getName().equals("ssid")){
ssid = cookie.getValue();
}
}
if(username != null && ssid != null && ssid.equals(CookieUtils.md5Encrypt(username))){
UserService userService = new UserServiceImpl();
User user = userService.getUserForPhone(username);
HttpSession session = request.getSession();
session.setAttribute("user",user);
// response.sendRedirect("index.jsp");
}/*else {
// response.sendRedirect("index.jsp");
}*/
}