基于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

使用说明

  1. 使用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>版权所有  &copy; 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();

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐