基于javaweb和mysql的jsp+servlet家政服务管理系统(java+jsp+struts+javascript+mysql)
·
基于javaweb和mysql的jsp+servlet家政服务管理系统(java+jsp+struts+javascript+mysql)
私信源码获取及调试交流
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb的JSP+Servlet家政服务管理系统(java+jsp+struts+javascript+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.数据库:MySql 5.7版本;
技术栈
HTML+CSS+JavaScript+jsp+mysql
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中application.yml配置文件中的数据库配置改为自己的配置; 4. 运行项目,输入localhost:8080/login.jsp 登录
* @return the headLine
*/
public String getHeadLine() {
return headLine;
}
/**
* @param headLine the headLine to set
*/
public void setHeadLine(String headLine) {
this.headLine = headLine;
}
/**
* @return the content
*/
public String getContent() {
return content;
}
/**
* @param content the content to set
*/
public void setContent(String content) {
this.content = content;
}
/**
* @return the postTime
*/
public String getPostTime() {
return postTime;
}
/**
* @param postTime the postTime to set
*/
public void setPostTime(String postTime) {
this.postTime = postTime;
}
/**
* @return the pay
*/
public String getPay() {
return pay;
}
/**
* @param pay the pay to set
}
/*
* 功能:执行更新操作
*/
public int executeUpdate(String sql) {
int result = 0;
try {
conn = getConnection();
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
result = stmt.executeUpdate(sql);
} catch (SQLException ex) {
result = 0;
}
return result;
}
public void doPstm(String sql, Object[] params) {
if (sql != null && !sql.equals("")) {
if (params == null)
params = new Object[0];
getConnection();
if (conn != null) {
try {
System.out.println(sql);
pstm = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
for (int i = 0; i < params.length; i++) {
pstm.setObject(i + 1, params[i]);
}
pstm.execute();
} catch (SQLException e) {
System.out.println("doPstm()方法出错!");
e.printStackTrace();
}
}
}
}
public ResultSet getRs() throws SQLException {
return pstm.getResultSet();
}
public int getCount() throws SQLException {
return pstm.getUpdateCount();
}
/**
* @param svPoint the svPoint to set
*/
public void setSvPoint(int svPoint) {
this.svPoint = svPoint;
}
/**
* @return the svDate
*/
public String getSvDate() {
return svDate;
}
/**
* @param svDate the svDate to set
*/
public void setSvDate(String svDate) {
this.svDate = svDate;
}
/**
* @return the isOutdated
*/
public String getIsOutdated() {
return isOutdated;
}
/**
* @param isOutdated the isOutdated to set
*/
public void setIsOutdated(String isOutdated) {
this.isOutdated = isOutdated;
}
}
/**
* 工具类,生成随机验证码字符串
*
*/
public class SecurityCode {
/**
* 验证码难度级别,Simple只包含数字,Medium包含数字和小写英文,Hard包含数字和大小写英文
*/
public enum SecurityCodeLevel {Simple,Medium,Hard};
/**
servDailyTime = rs.getInt("worktime");
}
ps.setInt(1, bmId);
ps.setString(2, bmName);
ps.setInt(3, gzId);
ps.setString(4, gzName);
ps.setString(5, gzPhone);
ps.setString(6, startDate);
ps.setString(7, endDate);
ps.setString(8, wkPeriod);
ps.setString(9, gzPay);
ps.setInt(10, servType);
ps.setInt(11, servDailyTime);
ps.setInt(12, isAccomm);
ps.setString(13, gzbkContent);
ps.setString(14, bkDate);
ps.setString(15, "gz");
ps.setString(16, "0");
ps.executeUpdate();
ps.close();
logger.info("执行SQL:"+sql_insertBook);
//更新保姆状态
String sql_updateStatus = "update tb_employee set status ='1' where id="+bmId;
db.executeUpdate(sql_updateStatus);
logger.info("更新保姆状态'已预约',执行SQL:"+sql_updateStatus);
} catch(SQLException e) {
e.printStackTrace();
logger.info(e.getMessage());
}
addActionMessage("成功提交预约信息,我们将尽快处理您的请求!");
} else {
logger.info("雇主【ID"+gzId+"】预约保姆【ID"+bmId+"】失败!");
}
db.close();
return SUCCESS;
}
/*
* 工具类:检查验证码
*/
public boolean check() {
boolean flag = false;
//接收session中securityCode;
String sessionSecurityCode = (String)session.get("SESSION_SECURITY_CODE");
securityCode = bookBm.getSecurityCode();
if(!securityCode.equals(sessionSecurityCode)) {
// addFieldError("bookBm.securityCode","亲,验证码不对哦!!");
flag = true;
} else {
flag = true;
}
return flag;
}
</table>
</s:form>
<div class="down">
<p></p>
<p>版权所有 © 2019 </p>
</div>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>家家乐家政后台管理</title>
<meta name="keywords" content=""/>
<%
String user = null;
user = (String)session.getAttribute("userType");
if(user!=null&&!user.equals("")) {
%>
<style type="text/css">
.adminTop {
height: 64px;
width: 100%;
background-image: url(images/top-right.gif);
background-repeat: repeat-x;
}
.topLeft {
float: left;
}
.topRight {
float: right;
padding-right: 40px;
flag = true;
}
}
if((node==null&&isSuccess==null)) {
flag = true;
}
}
rs2.close();
} catch (SQLException e) {
e.printStackTrace();
logger.info(e.getMessage());
} finally {
db.close();
}
return flag;
}
/*
* 工具类:根据前台长ID截取原始用户ID
*/
public static int cutID(int id) {
int ok_id = 0;
String temp = null;
temp = String.valueOf(id).substring(4);
ok_id = Integer.parseInt(temp);
return ok_id;
}
}
/*
* 日期类Date、Calendar
*/
/**
* @time Jun 14, 2012
* @version V 1.0
*
* 实现的接口如下:
* 1---根据开始时间和间隔天数计算结束时间 Date calculateEndDate(Date sDate, int days)
* 2---根据开始时间、结束时间、间隔类型(年、月、日)计算间隔时间 int calInterval(Date sDate, Date eDate, String type)
* 3---输出日历实例(当前时间)的各个字段值 void printFields(Calendar cNow)
* 4---判定某个年份是否是闰年 boolean isLeapYear(int year)
* 5---比较两个日期的大小 int compareDate(Date sDate, Date eDate)
cm.setBmSignature(rs_queryContract.getString("bmSignature"));
cm.setBmSigDate(rs_queryContract.getString("bmSigDate"));
cm.setSigDate(rs_queryContract.getString("sigDate"));
list.add(cm);
}
JSONArray contract = JSONArray.fromObject(list);
out.print(contract);
out.flush();
out.close();
mydb.close();
} catch(SQLException e) {
e.printStackTrace();
logger.info(e.getMessage());
}
String bmSignature = null, bmSigDate = null;
bmSignature = request.getParameter("bmSig");
bmSigDate = request.getParameter("sigDate");
if(bmSignature!=null){
String sql_updateContract = "update tb_contract set bmSignature ='" +bmSignature+ "', bmSigDate ='" +bmSigDate+ "' where bmID =" +bmID+ " and isOutdated ='0'";
mydb.executeUpdate(sql_updateContract);
logger.info("阿姨ID"+bmID+"签名,执行SQL:"+sql_updateContract);
mydb.close();
}
return "contract";
}
/*
* 填写服务评价
*/
public String gzAssess() {
String regName = (String)session.get("username");
BookBm bookBm = new BookBm();
int gzID = bookBm.queryID(regName, "tb_employer");
String svAttitude = request.getParameter("svAttitude");
String svQuality = request.getParameter("svQuality");
String svPrice = request.getParameter("svPrice");
String svRecommend = request.getParameter("svRecommend");
String svContent = request.getParameter("svContent");
String svDate = request.getParameter("svDate");
String sql = "update tb_assess set svAttitude =?, svQuality=?, svPrice=?, svRecommend=?, svContent=?, svDate =? where isOutdated= '0' and gzID="+gzID;
try {
ps = conn.prepareStatement(sql);
ps.setString(1, svAttitude);
ps.setString(2, svQuality);
ps.setString(3, svPrice);
private int workTime;
//食宿条件
private int isAccomm;
//服务项目
private int workType;
//发布信息标题
private String headLine;
//发布信息内容
private String content;
//发布信息时间
private String postTime;
//薪资要求
private String pay;
//联系方式
private String phone;
//供求信息类型
private String type;
//是否锁定
private String isLock;
/**
* @return the userId
*/
public int getUserId() {
return userId;
}
/**
* @param userId the userId to set
*/
public void setUserId(int userId) {
this.userId = userId;
}
/**
* @return the workTime
*/
public int getWorkTime() {
return workTime;
}
/**
* @param workTime the workTime to set
*/
public void setWorkTime(int workTime) {
this.workTime = workTime;
}
/**
this.servType = servType;
}
/**
* @return the svAttitude
*/
public int getSvAttitude() {
return svAttitude;
}
/**
* @param svAttitude the svAttitude to set
*/
public void setSvAttitude(int svAttitude) {
this.svAttitude = svAttitude;
}
/**
* @return the svQuality
*/
public int getSvQuality() {
return svQuality;
}
/**
* @param svQuality the svQuality to set
*/
public void setSvQuality(int svQuality) {
this.svQuality = svQuality;
}
/**
* @return the svPrice
*/
public int getSvPrice() {
return svPrice;
}
/**
* @param svPrice the svPrice to set
*/
public void setSvPrice(int svPrice) {
this.svPrice = svPrice;
}
/**
* @return the svRecommend
*/
public int getSvRecommend() {
return svRecommend;
}
/**
* @param svRecommend the svRecommend to set
} catch (SQLException ex) {
result = 0;
}
return result;
}
public void doPstm(String sql, Object[] params) {
if (sql != null && !sql.equals("")) {
if (params == null)
params = new Object[0];
getConnection();
if (conn != null) {
try {
System.out.println(sql);
pstm = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
for (int i = 0; i < params.length; i++) {
pstm.setObject(i + 1, params[i]);
}
pstm.execute();
} catch (SQLException e) {
System.out.println("doPstm()方法出错!");
e.printStackTrace();
}
}
}
}
public ResultSet getRs() throws SQLException {
return pstm.getResultSet();
}
public int getCount() throws SQLException {
return pstm.getUpdateCount();
}
/*
* 功能:关闭数据库的连接
*/
public void close() {
try {
if (pstm != null) {
pstm.close();
}
if (rs != null) {
rs.close();
}
if (stmt != null) {
* @param gzPay the gzPay to set
*/
public void setGzPay(String gzPay) {
this.gzPay = gzPay;
}
/**
* @return the gzSignature
*/
public String getGzSignature() {
return gzSignature;
}
/**
* @param gzSignature the gzSignature to set
*/
public void setGzSignature(String gzSignature) {
this.gzSignature = gzSignature;
}
/**
* @return the gzSigDate
*/
public String getGzSigDate() {
return gzSigDate;
}
/**
* @param gzSigDate the gzSigDate to set
*/
public void setGzSigDate(String gzSigDate) {
this.gzSigDate = gzSigDate;
}
/**
* @return the bmSignature
*/
public String getBmSignature() {
return bmSignature;
}
/**
* @param bmSignature the bmSignature to set
*/
public void setBmSignature(String bmSignature) {
this.bmSignature = bmSignature;
}
/**
* @return the bmSigDate
*/
public String getBmSigDate() {
return bmSigDate;
}
/**
* @param bmSigDate the bmSigDate to set
*/
public void setBmSigDate(String bmSigDate) {
this.sigDate = sigDate;
}
}
/*
* 评价实体
*/
public class AssessForm {
//家政阿姨ID
private int bmID;
//家政阿姨姓名
private String bmName;
//雇主ID
private int gzID;
//服务项目
private String servType;
//服务态度
private int svAttitude;
//服务质量
private int svQuality;
//服务价格
private int svPrice;
//推荐指数
private int svRecommend;
//评价内容
private String svContent;
//评价总分
private int svPoint;
//评价日期
private String svDate;
//评价是否过期
private String isOutdated;
/**
* @return the bmID
*/
public int getBmID() {
return bmID;
}
/**
* @param bmID the bmID to set
*/
public void setBmID(int bmID) {
this.bmID = bmID;
}
/**
* @return the bmName
*/
public String getBmName() {
return bmName;
}
ps1.setInt(5, 0);
ps1.setInt(6, 0);
ps1.setInt(7, 0);
ps1.setInt(8, 0);
ps1.executeUpdate();
ps1.close();
logger.info("初始化注册用户的证书表,执行SQL:"+sql_insertCert);
ps2.setInt(1, userId);
ps2.setInt(2, 0);
ps2.setInt(3, 0);
ps2.setInt(4, 0);
ps2.setInt(5, 0);
ps2.setInt(6, 0);
ps2.setInt(7, 0);
ps2.executeUpdate();
ps2.close();
logger.info("初始化注册用户的技能表,执行SQL:"+sql_insertSkills);
ps3.setInt(1, userId);
ps3.setInt(2, 0);
ps3.setInt(3, 0);
ps3.setInt(4, 0);
ps3.setInt(5, 0);
ps3.setInt(6, 0);
ps3.setInt(7, 0);
ps3.setInt(8, 0);
ps3.executeUpdate();
ps3.close();
logger.info("初始化注册用户的语言表,执行SQL:"+sql_insertLang);
ps4.setInt(1, userId);
ps4.setInt(2, 0);
ps4.setInt(3, 0);
ps4.setInt(4, 0);
ps4.setInt(5, 0);
ps4.setInt(6, 0);
ps4.setInt(7, 0);
ps4.setInt(8, 0);
ps4.setInt(9, 0);
ps4.setInt(10, 0);
ps4.setInt(11, 0);
ps4.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
logger.info(e.getMessage());
e.printStackTrace();
} finally {
db.close();
}
return "query";
}
/*
* 默认显示所有保姆的基本信息
*/
public String showAll() throws IOException {
// List<UserInfoForm> bmList = new LinkedList<UserInfoForm>();
response.setContentType("application/json;charset=utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
// //默认查询所有家政人员信息
// String sql_bm = "select id, surname, birthdate, hometown, uptime from tb_employee";
// ResultSet rs = db.executeQuery(sql_bm);
// logger.info("执行SQL:"+sql_bm);
// try{
// while(rs.next()) {
// UserInfoForm bmInfo = new UserInfoForm();
// userId = rs.getInt("id");
// surname = rs.getString("surname");
// birthdate = rs.getString("birthdate");
// hometown = rs.getString("hometown");
// uptime = rs.getString("uptime");
//
// bmInfo.setId(userId);
// bmInfo.setSurname(surname);
// bmInfo.setBirthDate(birthdate);
// bmInfo.setHometown(hometown);
// bmInfo.setUptime(uptime);
// bmList.add(bmInfo);
// System.out.println(bmInfo.getSurname());
// }
// JSONArray all = JSONArray.fromObject(bmList);
// out.print("hello");
// out.flush();
// } catch(SQLException e){
// logger.info(e.getMessage());
// e.printStackTrace();
// } finally {
// db.close();
// out.close();
// }
out.write("hello");
* 0:未选择,默认查询所有
* lang_local:本地方言
* lang_normal:普通话
* lang_sichuan:四川话
* lang_dongbei:东北话
* lang_guangdong:广东话
* lang_kejia:客家话
* lang_minnan:闽南语
*/
private String bmLang;
/*
* 0:未选择,默认查询所有
* flavor_local:本地菜
* flavor_xican:西餐
* flavor_chuancai:川菜
* flavor_yuecai:粤菜
* flavor_lucai:鲁菜
* flavor_sucai:苏菜
* flavor_zhecai:浙菜
* flavor_xiangcai:湘菜
* flavor_mincai:闽菜
* flavor_huicai:徽菜
*/
private String bmFlavor;
private String bmHomeCity;
private static Logger logger = Logger.getLogger(BmInfo.class);
private ConnDB db = new ConnDB();
/*
* 功能:根据条件查询保姆
* @param workTime
* @param accomm
* @param workType
* @param bmCert
* @param bmSkill
* @param bmLang
* @param bmFlavor
* @param bmHomeCity
* @return bmInfo
*/
public String queryBm() throws IOException {
List<UserInfoForm> list = new LinkedList<UserInfoForm>();
response.setContentType("application/json;charset=utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
workTime = request.getParameter("workTime");
logger.info("获取工时:"+workTime);
accomm = request.getParameter("accomm");
logger.info("获取食宿:"+accomm);
workType = request.getParameter("workType");
logger.info("获取工作类型:"+workType);
bmCert = request.getParameter("bmCert");
'a','b','c','d','e','f','g','h','i',
'j','k','m','n','p','q','r','s','t',
'u','v','w','x','y','z','A','B','C',
'D','E','F','G','H','I','J','K','L',
'M','N','P','Q','R','S','T','U','V',
'W','X','Y','Z'};
//更具不同难度截取字符数组
if (level==SecurityCodeLevel.Simple) {
codes = Arrays.copyOfRange(codes, 0, 9);
}else if(level==SecurityCodeLevel.Medium) {
codes = Arrays.copyOfRange(codes, 0, 33);
}
//字符集和长度
int n = codes.length;
//抛出运行时异常
if(len > n&&isCanRepeate==false) {
throw new RuntimeException(
String.format("调用SecurityCode.getSecurityCode(%1$s%2$s%3$s)出现异常," +
"当isCanRepeate为%3$s时,传入参数%1$s不能大于%4$s",
len,level,isCanRepeate,n));
}
//存放抽取出来的字符
char[] result = new char[len];
//判断能否出现重复的字符
if(isCanRepeate) {
for(int i = 0;i < result.length;i++) {
//产生0到n-1的随机数
int r = (int)(Math.random()*n);
//将result中的第i个元素设置为codes[r]存放的数值
result[i]=codes[r];
}
}else{
for(int i = 0;i < result.length;i++) {
//产生0到n-1的随机数
int r = (int)(Math.random()*n);
//将result中的第i个元素设置为codes[r]存放的数值
result[i] = codes[r];
}else if(servTypeTemp==2) {
servType = "育儿嫂";
}else if(servTypeTemp==3) {
servType = "育婴师";
}else if(servTypeTemp==4) {
servType = "月嫂母婴";
}else if(servTypeTemp==5) {
servType = "家教幼教";
}else {
servType = "管家司机";
}
if(servDailyTimeTemp==1) {
servDailyTime = "终点计时";
}else if(servDailyTimeTemp==2) {
servDailyTime = "半天";
}else {
servDailyTime = "全天";
}
if(isAccommTemp==1) {
isAccomm = "住家包吃";
}else if(isAccommTemp==2) {
isAccomm = "不住家包吃";
}else if(isAccommTemp==3) {
isAccomm = "住家不包吃";
}else {
isAccomm = "不住家不包吃";
}
PreparedStatement ps_insertContract = conn.prepareStatement(sql_insertContract);
ps_insertContract.setInt(1, bmId);
ps_insertContract.setString(2, bmName);
ps_insertContract.setInt(3, selGzId);
ps_insertContract.setString(4, gzName);
ps_insertContract.setString(5, servType);
ps_insertContract.setString(6, isAccomm);
ps_insertContract.setString(7, servDailyTime);
ps_insertContract.setString(8, beginDate);
ps_insertContract.setString(9, endDate);
ps_insertContract.setString(10, gzPay);
ps_insertContract.executeUpdate();
ps_insertContract.close();
logger.info("更新合同信息,执行SQL:"+sql_insertContract);
PreparedStatement ps_insertAssess = conn.prepareStatement(sql_insertAssess);
ps_insertAssess.setInt(1, bmId);
ps_insertAssess.setInt(2, selGzId);
ps_insertAssess.setString(3, bmName);
ps_insertAssess.setString(4, servType);
ps_insertAssess.executeUpdate();
ps_insertAssess.close();
logger.info("更新评价表,执行SQL:"+sql_insertAssess);
conn.close();






更多推荐


所有评论(0)