第一个完整的web probject,值得记录下来的一点心得;
还是老规矩,不啰嗦,直接上代码;
第一部分:创建一个web project ,导入jar包,配置文件等;
servlet入门:前端操作结合数据库,实现数据库部门表单数据增,删,改功能

配置文件部分:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>deptMangage</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <servlet>
  	 <servlet-name>dept</servlet-name>
  	 <servlet-class>com.emp.servlet.GeptServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  		<servlet-name>dept</servlet-name>
  		<url-pattern>/dept.do</url-pattern>
  </servlet-mapping>
 
</web-app>

**接着就是第二部分,前端页面,我是直接导入js文件,之前有用jquery写过一个表格组件,就直接拿过来用了,js,css部分(还要导入一个js文件,直接下载就好了)
**
js部分:

;(function ($) {

	var myGridFun = function ($dom,opts) {
		this.$grid = $dom;
		this.$opts = opts;
		this.defaultOpt = {
			//斑马线
			zebraCrossing:true,
			width:'100%',
			//是否支持多选
			multiple : false,
			//选择列是否显示
			selectColumn:false,
			//是否支持编辑
			edited:false
		}
		//合并参数
		var setting = $.extend({}, this.defaultOpt, opts);

		this.setting = setting;

		this.init();
		
	}

	myGridFun.prototype = {
		init:function () {
			
			this.initGridDom();
		},
		//初始化表格dom
		initGridDom : function () {
			this.loadGridHead();

			var dataSource = this.setting.dataSource || [];
			this.loadDateDom(dataSource);

			gridEvent.editEvent(this);
		},
		//初始化表头
		loadGridHead : function () {
			
			this.$grid.html("");
			
			var columns = this.setting.columns || [];
			var codes = [];
			//拼接grid表头
			codes.push("<thead>");
			/*
				<td class="select-column"><input type="checkbox" name="dataCheckbox"></td>
			*/
			codes.push("<tr>");
			//加载多选框
			if (this.setting.selectColumn === true && this.setting.multiple === true) {
				codes.push('<th class="select-column">');
				codes.push('<input type="checkbox" name="checkboxAll">');
				codes.push('</th>');
			}
			
			for (var i = 0; i < columns.length; i++) {
				var c = columns[i];
				//取出配置的字段和标题
				var field = c.field,title = c.title;
				codes.push("<th field='"+field+"'>");
				codes.push(title);
				codes.push("</th>");
			}
			codes.push("</tr>");
			codes.push("</thead>");
			
			
			
			//追加表头
			this.$grid.append(codes.join(""));
			//设置表格的宽度
			this.$grid.css("width",this.setting.width);

			//加载列头复选框事件
			if (this.setting.selectColumn === true && this.setting.multiple === true) {
				var check = this.$grid.find('input[type="checkbox"][name="checkboxAll"]');
				gridEvent.checkboxAllEvent(check,this);
			}
		},
		//单行数据dom创建
		createDataTrDom : function  (data) {
			var _this = this;
			//获取配置信息
			var columns = this.setting.columns || [] ;
			var ds = data;//{name:'秋香',age:'18',hobby:'唐伯虎'},  ds.field   ds['name']
			var $tr = $("<tr class='datagrid-row'>");
			//在tr上缓存当前行的记录
			$tr.data("row-data",ds);

			//加载多选框
			if (this.setting.selectColumn === true && this.setting.multiple === true) {
				$tr.append('<td class="select-column"><input type="checkbox" name="dataCheckbox"></td>');
			}

			//查询grid所需要的字段
			for (var j = 0; j < columns.length; j++) {
				//获取字段
				var field = columns[j].field;
				//获取字段在数据中所对应的值
				var value = ds[field];
				//判断是否存在渲染函数
				if ($.isFunction(columns[j].rendering)) {
					//执行渲染回调函数
					value = columns[j].rendering.call(_this,ds,$tr);

					//value = columns[j].rendering(ds,$tr)
				}

				//td添加到tr中
				$tr.append("<td field='"+field+"'>"+value+"</td>");
			}

			return $tr;
		},

		//加载数据元素
		loadDateDom : function (dataSource) {
			var _this = this;
			//获取配置信息
			var set = this.setting;
			var columns = set.columns || [] ;
			//创建jquery  tbody对象
			var $tbody = $("<tbody>");

			for (var i = 0; i < dataSource.length; i++) {
				$tbody.append(this.createDataTrDom(dataSource[i]));
			}
			//清空数据
			this.$grid.find("tbody").remove();

			//追加数据
			this.$grid.append($tbody);
			//事件处理
			this.rowDataEvent();
			
		},
		//数据行的事件处理
		rowDataEvent : function () {
			var _this = this;

			//数据行TD点击事件
			this.$grid.find("tbody tr.datagrid-row td[field]").unbind('click').bind('click', function(event) {
				//获取行数据
				var rowData  =$(this).parents("tr.datagrid-row").data('row-data');
				//获取被点击的td所对应的字段名
				var field  =$(this).attr("field");

				var events = _this.setting.events || {};
				//执行用户自定义td点击事件
				if ($.isFunction(events.tdClick)) {
					//执行td点击事件回调函数
					value = events.tdClick.call(_this,$(this),rowData[field],rowData);
				}
			});

			//行点击,选择数据
			this.$grid.find("tbody tr.datagrid-row").unbind('click').bind('click', function(event) {
				gridEvent.trClick(this,event,_this);
			});

			//多选框事件
			if (this.setting.selectColumn === true && this.setting.multiple === true) {
				var checks = this.$grid.find('input[type="checkbox"][name="dataCheckbox"]');
				gridEvent.dataCheckboxChange(checks,this);
			}
		},
		//增加数据
		addData : function (datas) {
			//获取tbody对象
			var $tbody = this.$grid.find("tbody");
			for (var i = 0; i < datas.length; i++) {
				$tbody.append(this.createDataTrDom(datas[i]));
			}
			//事件处理
			this.rowDataEvent();
		},
		//获取选中的数据
		getSelectDatas : function () {
			var selects = this.$grid.find("tbody tr.datagrid-row-selected");
			var datas = [];

			selects.each(function(index, el) {
				datas.push($(this).data("row-data"))
			});

			return datas;
		},
		//刷新数据
		refreshData : function (data) {
			//如果传进来的数据为空则刷新原有数据,否则加载新的数据
			if (!gridEvent.isNotNull(data)) {
				data = this.setting.dataSource || [];
			} 
			this.loadDateDom(data);
		},
		//根据行号修改字段值
		updateFieldByRowNo : function (rowNo,field,value) {
			//获取指定行的对象
			var $tr = this.$grid.find('tbody tr.datagrid-row:eq('+rowNo+')');
			//修改显示字段
			$tr.find("td[field='"+field+"']").text(value);

			//获取数据
			var rowData = $tr.data('row-data');
			rowData[field] = value;
			//刷新缓存数据
			$tr.data('row-data',rowData);
		},
		//根据行号修改行数据
		updateRowDataByRowNo : function (rowNo,rowData) {
			var _this = this;
			$.each(rowData,function(key, value) {
				_this.updateFieldByRowNo(rowNo,key,value);
			});
		},
		hideColumn : function (columnName) {
			this.$grid.find("th[field='"+columnName+"']").hide();
			this.$grid.find("td[field='"+columnName+"']").hide();
		},
		showColumn : function (columnName) {
			this.$grid.find("th[field='"+columnName+"']").show();
			this.$grid.find("td[field='"+columnName+"']").show();
		},
		//根据td删除数据
		deleteDataByTd : function ($td) {
			$($td).parents("tr.datagrid-row").remove();
		}
	}

	var gridEvent  = {

		//表格TD编辑事件
		editEvent : function (pthis) {
			//如果表格配置不支持编辑,直接return
			if (pthis.setting.edited !== true)
				return ;

			pthis.$grid.find("tbody tr.datagrid-row td[field]").unbind("dblclick").bind('dblclick', function(event) {
				var _this = this;
				//获取td field属性值
				var field = $(this).attr('field');  //hobby

				//查找字段的编辑配置(判断具体的字段是否支持编辑)
				for (var i = 0; i < pthis.setting.columns.length; i++) {
					var column = pthis.setting.columns[i];
					if (field == column.field) {
						//如果字段配置了不可编辑,则跳出事件
						if (column.edited === false) {
							return ;
						}
					}
				}

				//this;//当前双击的TD对象
				var text = $(this).text();
				var input = $('<input type="text" style="width:calc(100% - 4px)">');
				input.val(text);
				$(this).html(input);

				//让input获得焦点(编辑状态)
				input.focus();

				//输入回车 提交修改值
				input.keyup(function(event) {
					event.keyCode == 13 ? input.blur() : false;
				});

				//input失去焦点事件
				input.blur(function(event) {
					//获取输入框的值
					var value = $(this).val();
					//将输入框的值填充到TD里面
					$(_this).html(value);

					//修改缓存数据
					var rowData = $(_this).parents("tr.datagrid-row").data("row-data");
					rowData[field] = value;
					 $(_this).parents("tr.datagrid-row").data("row-data",rowData);

				});
			});
		},
		//数据行点击事件
		trClick : function (_this,e,pthis) {
			//如果行没有选中,则选中数据,如果已经选中,就取消选中

			//获取数据配置
			var set = pthis.setting;
			set.multiple == false ? $(_this).siblings("tr.datagrid-row-selected").removeClass('datagrid-row-selected') : true;

			if ($(_this).hasClass("datagrid-row-selected")) {
				$(_this).removeClass('datagrid-row-selected');
			} else {
				//添加选中数据项
				$(_this).addClass('datagrid-row-selected');
			}

			var check = $(_this).find('input[name="dataCheckbox"]');
			if (null != check && check.length != 0 ){
				if ($(check).is(':checked')) {//.removeAttr("checked")
					//$(check).attr('checked',false);
				$(check).prop("checked",false);
				} else {
					$(check).prop('checked',true);
				}
			}

			//阻止事件冒泡
			e.stopPropagation();


		},
		//列头多选框事件
		checkboxAllEvent : function (_this,pthis) {
			$(_this).unbind('click').bind('click', function(event) {
				//判断复选框是否选中
				if ($(this).is(':checked')) {
					//全选
					var dataCheckboxs = pthis.$grid.find('input[name="dataCheckbox"]');
					dataCheckboxs.each(function(index, el) {
						if (!$(this).is(':checked')) {
							//模拟点击(勾选)
							$(this).click();
						}
					});
				} else {//全取消
					//全选
					var dataCheckboxs = pthis.$grid.find('input[name="dataCheckbox"]');
					dataCheckboxs.each(function(index, el) {
						if ($(this).is(':checked')) {
							//模拟点击(取消勾选)
							$(this).click();
						}
					});
				}
			});
		},
		//数据列复选框事件
		dataCheckboxChange : function (_this,pthis) {
			$(_this).unbind('click').bind('click', function(event) {
				if ($(this).is(':checked')) {
					//选中,增加数据选中标识
					$(this).parents("tr.datagrid-row").addClass('datagrid-row-selected');
				} else {
					//取消数据选择(去除‘datagrid-row-selected’)
					$(this).parents("tr.datagrid-row").removeClass('datagrid-row-selected');
				}
				//阻止事件冒泡
				event.stopPropagation();
			});
		},
		isNotNull : function (obj) {
			if (undefined != obj && null != obj && "" != obj) {
				return true;
			} else {
				return false;
			}
			
		}
	}

	//入口
	$.fn.myGrid = function (opts) {
		var mg = new myGridFun(this,opts);
		return mg;
	}

})(jQuery);

css部分:

.my-table
        {
            border-collapse: collapse;
            margin: 0 auto;
            text-align: center;
        }
        .my-table td, .my-table th
        {
            border: 1px solid #cad9ea;
            color: #666;
            height: 30px;
        }
       .my-table thead th
        {
            background-color: #CCE8EB;
            width: 100px;
        }
        .my-table tbody td{
        	font-size: 13px;
        }
        .my-table tbody tr:hover{
        	 background: 	#eaf2ff;
        }
        .my-table .datagrid-row{
        	height:25px;
        }
        .my-table .datagrid-row td{
        	height: 25px;
        }
        
        .my-table .datagrid-row-selected{
        	background: #ffe48d !important;
        }
        
        .my-table .select-column{
        	width: 10px;
        }
        .my-table .select-column input[type='checkbox']{
        	margin:0px;
        	padding: 0px;
        }

第三前端html页面部分:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
	<title>挨踢教育部门管理</title>
	
	<link rel="stylesheet" type="text/css" href="my-grid.css">
    <script type="text/javascript" src="jquery-3.3.1.js"></script>
    <script type="text/javascript" src="my-grid.js"></script>


</head>
<body>
	<h1 style="text-align : center;">挨踢教育部门管理</h1>
	
	<h2>部门信息</h2>
	<p>部门名称:<input id = "deptName"  ></p>
	<p>办公地址:<input  id= "loc"></p>
	<p><button id="addDept">增加部门</button>


	<h2>修改信息</h2>
	<p>部门编号:<input id="deptNoU" readonly = "readonly">
	<p>部门名称:<input id="deptNameU">
	<p>办公地址:<input id="locU">
	<p><button id="updataDept">修改部门</button>
	
	
	<table id="myGridTable" class="my-table" style="margin-top:-380px;"></table>
</body>
	<script type="text/javascript">

		//单击事件新增
		$("#addDept").click(function(){
			var deptName = $("#deptName").val();
			var loc = $("#loc").val();
			//组装对象
			var dept = {
					name : deptName,
					loc: loc
			}
			//增加数据
			$.ajax({
				url:'http://localhost:8080/deptMangage/dept.do?method=add',
				type:'POST',
				data:dept,
				success:function(datas){
					var datas  = JSON.parse(datas);
					if(datas.issuccess == true){
						
						//重新加载数据表格
						findAllDeptInfos();
						
						//alert("新增成功");
						
					}else{
						alert("新增失败");
					}
				}
			});
			
		});
	
		//部门修改
		$("#updataDept").click(function (){
			var deptName = $("#deptNameU").val();
			var loc = $("#locU").val();
			var no = $("#deptNoU").val();
			
			//组装对象
			var dept = {
					name : deptName,
					loc :loc,
					no : no
			}
			//增加数据
			$.ajax({
				url:'http://localhost:8080/deptMangage/dept.do?method=update',
				type:'POST',
				data:dept,
				success:function(datas){
					alert("数据修改成功");
					//重新加载表格数据	
					findAllDeptInfos();
				}
			});
			
			
		});
			
		function findAllDeptInfos(){
			//数据
			$.ajax({
				url:'http://localhost:8080/deptMangage/dept.do?method=findAll',
				type:'GET',
				success:function(datas){
					initDeptGrid(datas);
				}
			});
		}
			
		//页面加载时,加载部门表格数据
		findAllDeptInfos();
	
		//初始化部门表格
		function initDeptGrid(datas){
	
			var opt = {
				zebraCrossing : false,
				//数据源
				dataSource:datas,
				//多选
				multiple:false,
				//选择列是否显示
				selectColumn:false,
				width:'60%',
				//表格列头
				columns:[
					{field:'no',title:'No',edited:false},
					{field:'name',title:'部门名称'},
					{field:'loc',title:'办公地址'},
					{field:'option', title:'删除',edited:false,rendering:function(data,tr){
						var t = this;
						return '<button onclick= dalectData(this)>删除</button>';
					}}
				],
				events:{
					tdClick: function(td,value,rowData){
						//将要修改的数据填充到输入框
						
						$("#deptNameU").val(rowData.name);
						$("#locU").val(rowData.loc);
						$("#deptNoU").val(rowData.no);
					
		
					}
				}
			}
			var grid = $("#myGridTable").myGrid(opt);
		}	
		
		
		//删除的点击事件
		
		function dalectData($this){
			//通过当前的button查询它所在的tr父级对象
			var tr = $($this).parents("tr.datagrid-row");
			
			//获取行数据
			var rowData = tr.data("row-data");
			
			var bool = confirm("确定删除\""+rowData.name+"\"部门吗?");
			if(bool == false){//不能删除
				return;
			}
			//需要删除的No
			var no = rowData.no;
			//删除节点
			tr.remove();
			
			//删除后台数据
			deleteDeptInfoByNo(no);
			
		}
		
		//根据No删除部门信息
		function deleteDeptInfoByNo(no){
			$.ajax({
				url:'http://localhost:8080/deptMangage/dept.do?method=delete&no='+no,
				type:'GET',
				success:function(datas){
					
				}
			});
		}
		
	</script>
		
</html>

第四属性类文件部分:

package com.emp.bean;

public class DeptVO {
	
	private String no;
	private String Name;
	private String loc;
	
	
	public String getNo() {
		return no;
	}
	public void setNo(String no) {
		this.no = no;
	}
	public String getName() {
		return Name;
	}
	public void setName(String name) {
		Name = name;
	}
	public String getLoc() {
		return loc;
	}
	public void setLoc(String loc) {
		this.loc = loc;
	}

}

第五执行层部分:

package com.emp.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.emp.bean.DeptVO;
import com.emp.util.DeptMysql;

public class GeptServlet extends HttpServlet{
	
	public void init() {
		
	}


	private static final long serialVersionUID = 1L;
	
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
		System.out.println("doGet");
		
		doPost(request,response);
		
		
	}
	
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
		System.out.println("doPost");
		//获取放法标识
		String method = request.getParameter("method");
		
		switch(method) {
		case "findAll":
			this.findAllDeptList(request,response);
			break;
		case "add":
			this.addDeptInfo(request,response);
			break;
			
		case "update":
			this.updateDeptInfoByNo(request,response);
			
			break;
			
		case "delete":
			this.deleteDeptInfoByNo(request,response);
			break;
		default:
			break;
		}
		
		
		/*if(method.equals("findAll")) {
			this.findAllDeptList(request,response);
		}else if("add".equals(method)) {
			this.addDeptInfo(request,response);
		}*/
		
		
	
	}
	/**
	 * 根据编号修改信息
	 * @throws SQLException 
	 * @throws ClassNotFoundException 
	 */
	public void updateDeptInfoByNo(HttpServletRequest request, HttpServletResponse response) {
		//获取增加的部门信息
		String name = request.getParameter("name");
		String loc = request.getParameter("loc");
		String no = request.getParameter("no");
		
		//组装部门对像
		DeptVO deptVO = new DeptVO();
		deptVO.setName(name);
		deptVO.setLoc(loc);
		deptVO.setNo(no);
		
		DeptMysql deptMysql = new  DeptMysql();
		try {
			deptMysql.updateDeptInfoByNo(deptVO);
		} catch (ClassNotFoundException | SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
	}
	//根据部门号删除部门信息
	public void deleteDeptInfoByNo(HttpServletRequest request, HttpServletResponse response) {
	
		String no = request.getParameter("no");
		//删除部门信息
		DeptMysql deptMysql = new  DeptMysql();
		
		try {
			deptMysql.deleteDeptInfoByNo(no);
		} catch (ClassNotFoundException | SQLException e) {
			
			e.printStackTrace();
		}
	}

	/**
	 *查询所有部门信息
	 * @param request
	 * @param response
	 * @throws IOException
	 */
	public void findAllDeptList(HttpServletRequest request, HttpServletResponse response)throws IOException {
		//设置编码
		response.setCharacterEncoding("utf-8");
		request.setCharacterEncoding("utf-8");
		response.setContentType("application/json; charset=utf-8");
		
		DeptMysql deptMysql = new DeptMysql();
		List<DeptVO> depts= null;
		
		//查询出所有部门数据
		try {
			depts = deptMysql.findAllDeptList();
			
		} catch (ClassNotFoundException | SQLException e) {
			
			e.printStackTrace();
		}
		
		PrintWriter out = response.getWriter();
		//将部门结果集转换为JSON字符串
		String deptStr = JSONArray.toJSONString(depts);
		System.out.println(deptStr);
		out.write(deptStr);
	}
	
	public void addDeptInfo(HttpServletRequest request, HttpServletResponse response)throws IOException {
		//获取增加的部门信息
		String name = request.getParameter("name");
		String loc = request.getParameter("loc");
		
		//组装部门对象
		DeptVO deptVO = new  DeptVO();
		deptVO.setName(name);
		deptVO.setLoc(loc);
		
		//到DeptMysql类里面新建addDeptInfo函数
		DeptMysql deptMysql = new DeptMysql();
		
		boolean bool = true;
		
		try {
			deptMysql.addDeptInfo(deptVO);
		} catch (ClassNotFoundException | SQLException e) {
			bool = false;
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			Map<String,Boolean>  success = new HashMap<>();
			//返回消息告诉前台数据是否增加成功
				success.put("issuccess",bool);
				PrintWriter out = response.getWriter();
				out.write(JSONObject.toJSONString(success));
			
		}
		
	}
	public void destroy() {
		super.destroy();
	}
	
}

第六连接数据库部分:

package com.emp.util;

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.emp.bean.DeptVO;

public class DeptMysql {
	
	/**
	 * 查询所有部门数据
	 * @return
	 * @throws SQLException 
	 * @throws ClassNotFoundException 
	 */
	public List<DeptVO> findAllDeptList() throws ClassNotFoundException, SQLException{
		Connection connection = MySQLUtil.getConnectionInstance();
		PreparedStatement ps = connection.prepareStatement("select t.deptno, t.dname, t.loc  from deptone t ");
		//获取查询结果
		ResultSet result = ps.executeQuery();
		
		List<DeptVO> depts = new ArrayList<DeptVO>();
		
		while(result.next()) {
			String deptno = result.getString("deptno");
			String dname = result.getString("dname");
			String loc = result.getString("loc");
			
			DeptVO dept = new  DeptVO();
			dept.setNo(deptno);
			dept.setName(dname);
			dept.setLoc(loc);
			
			depts.add(dept);
		}
		ps.close();
		return depts;
	}

	//新增数据
	public void addDeptInfo(DeptVO deptVO) throws ClassNotFoundException, SQLException {
		Connection connection = MySQLUtil.getConnectionInstance();
		
		PreparedStatement ps = connection.prepareStatement("insert into deptone (dname,loc) values (?,?)");
		//设置SQL参数
		ps.setString(1, deptVO.getName());
		ps.setString(2, deptVO.getLoc());
		//执行SQL
		ps.executeUpdate();
		ps.close();
	
	}

	//根据编号修改信息
	public void updateDeptInfoByNo(DeptVO deptVO) throws ClassNotFoundException, SQLException  {
		Connection connection = MySQLUtil.getConnectionInstance();
		
		PreparedStatement ps = connection.prepareStatement("update deptone t set t.dname=?, t.loc=?  where t.deptno = ?");
	
		ps.setString(1, deptVO.getName());
		ps.setString(2, deptVO.getLoc());
		ps.setString(3, deptVO.getNo());
		ps.executeUpdate();
		ps.close();
		
	}

	//删除信息
	public void deleteDeptInfoByNo(String no) throws ClassNotFoundException, SQLException {
		Connection connection = MySQLUtil.getConnectionInstance();
		
		PreparedStatement ps = connection.prepareStatement("delete from deptone where deptno=?");
		//设置SQL参数
		ps.setString(1, no);
		//执行SQL
		ps.executeUpdate();
		ps.close();
	}
		

}

最后的运行效果如图:
servlet入门:前端操作结合数据库,实现数据库部门表单数据增,删,改功能
好了,到这儿就完结了!

相关文章: