07-EasyUI尚硅谷-datagrid的CRUD操作
增删改查:
一、数据库名称:easyui,脚本:
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) DEFAULT NULL, `password` varchar(50) DEFAULT NULL, `sex` varchar(10) DEFAULT NULL, `age` int(10) DEFAULT NULL, `birthday` varchar(50) DEFAULT NULL, `city` varchar(50) DEFAULT NULL, `salary` decimal(50,0) DEFAULT NULL, `starttime` varchar(100) DEFAULT NULL, `endtime` varchar(100) DEFAULT NULL, `description` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=245 DEFAULT CHARSET=utf8;
二、jar包
commons-beanutils.jar commons-collections-3.1.jar commons-lang-2.3.jar commons-logging-1.0.4.jar ezmorph-1.0.4.jar json-lib-2.2.2-jdk15.jar mysql-connector-java-3.1.13-bin.jar
三、工程结构:
各文件:
User.java:
public class User implements Serializable { private String id; private String username; private String password; private String sex; private String age; private String birthday; private String city; private String salary; private String starttime; private String endtime; private String description;
UserServlet.java:
package sxt.easyui.servlet; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; 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 sxt.easyui.model.User; import sxt.easyui.util.DBHelper; import sxt.easyui.util.JsonUtil; import com.mysql.jdbc.PreparedStatement; @SuppressWarnings("serial") public class UserServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String method = req.getParameter("method"); if ("addUser".equals(method)) { this.saveUser(req, resp); } else if ("findUserList".equals(method)) { // 查询用户列表 List<User> userList = this.findUserListByCondictions(req, resp, null, null, null); int total = this.getTotalByCondictions(req, resp, null, null, null); String result = this.transToJsonStr(userList, total); if (!"".equals(resp)) { resp.setContentType("text/html;charset=utf-8"); //Thread.sleep(2000); // 测试用 resp.getWriter().write(result); } } else if("editUser".equals(method)) { this.editUser(req, resp); } else if("deleteUserByIds".equals(method)) { String ids = req.getParameter("ids"); this.deleteUserByIds(req, resp, ids); } else if("findUserListByCondictions".equals(method)) { String username = req.getParameter("username"); String starttime = req.getParameter("starttime"); String endtime = req.getParameter("endtime"); // 这里可以把条件封装成一个POJO, 或者放到一个Map集合中遍历 List<User> userList = this.findUserListByCondictions(req, resp, username, starttime, endtime); int total = this.getTotalByCondictions(req, resp, username, starttime, endtime); String result = this.transToJsonStr(userList, total); resp.setContentType("text/html;charset=utf-8"); resp.getWriter().write(result); } else { try { throw new Exception("请求失败!"); } catch (Exception e) { e.printStackTrace(); } } } private String transToJsonStr(List<User> userList, int total) { String result = ""; // 将userList转换成json字串数组 try { // {"total":239,"rows":[{"":"","":""},{},{}]} // 把List转换成JSON字串数组 String jsonStr = JsonUtil.Object2JsonStr(userList); result = "{\"total\":"+total+",\"rows\":"+jsonStr+"}"; } catch (Exception e) { e.printStackTrace(); } return result; } // 综合查询用户列表 private List<User> findUserListByCondictions(HttpServletRequest req, HttpServletResponse resp, String username, String starttime, String endtime) { // 接收分页参数【使用easyui框架,浏览器自动传递分页参数】 int currentPage = Integer.parseInt(req.getParameter("page")); int pageSize = Integer.parseInt(req.getParameter("rows")); // 排序字段 String sort = req.getParameter("sort"); // 升序还是降序 String order = req.getParameter("order"); if (order == null || "".equals(order)) { order = "DESC"; } if (currentPage < 0 || pageSize < 0) { currentPage = 1; pageSize = 10; } String sql = ""; if (username == null && starttime == null && endtime == null) { // 第一次进来 sql = "SELECT * FROM user"; if (sort != null && !"".equals(sort)) { sql += " ORDER BY " + sort; } if (order != null && !"".equals(order)) { sql += " " + order; } sql += " LIMIT ?,?"; } else { // 条件查询 // 拼接sql语句 sql = "SELECT * FROM user WHERE 1=1 "; if (username != null && !"".equals(username)) { sql += "AND username LIKE '%"+username+"%' "; } if (starttime != null && !"".equals(starttime)) { sql += "AND starttime >= '"+starttime+"' "; } if (endtime != null && !"".equals(endtime)) { sql += "AND endtime <= '"+endtime+"'"; } if (sort != null && !"".equals(sort)) { sql += " ORDER BY " + sort; } if (order != null && !"".equals(order)) { sql += " " + order; } if (currentPage > 0 && pageSize > 0) { sql += " LIMIT ?,?"; } } Connection conn = DBHelper.getConn(); PreparedStatement ps = (PreparedStatement) DBHelper.prepare(conn, sql); try { ps.setInt(1, (currentPage-1)*pageSize); ps.setInt(2, pageSize); } catch (SQLException e1) { e1.printStackTrace(); } // 查询用户列表 List<User> userList = new ArrayList<User>(); try { ResultSet rs = ps.executeQuery(); while (rs.next()) { String id = rs.getString("id"); username = rs.getString("username"); String password = rs.getString("password"); String sex = rs.getString("sex"); String age = String.valueOf(rs.getInt("age")); String birthday = rs.getString("birthday"); String city = rs.getString("city"); String salary = rs.getString("salary"); starttime = rs.getString("starttime"); endtime = rs.getString("endtime"); String description = rs.getString("description"); User user = new User(id, username, password, sex, age, birthday, city, salary, starttime, endtime, description); userList.add(user); } return userList; } catch (SQLException e) { e.printStackTrace(); } return null; } // 批量删除用户 private void deleteUserByIds(HttpServletRequest req, HttpServletResponse resp, String ids) { Connection conn = DBHelper.getConn(); String sql = "DELETE FROM user WHERE id IN("+ids+")"; PreparedStatement ps = (PreparedStatement) DBHelper.prepare(conn, sql); String result = "{\"status\":\"操作失败!\"}"; resp.setContentType("text/html;charset=utf-8"); try { int count = ps.executeUpdate(); if (ids.split(",").length == count) { result = "{\"status\":\"操作成功!\"}"; } } catch (SQLException e) { e.printStackTrace(); } finally { try { resp.getWriter().write(result); DBHelper.close(ps); DBHelper.close(conn); } catch (IOException e) { e.printStackTrace(); } } } // 编辑用户 private void editUser(HttpServletRequest req, HttpServletResponse resp) { // 接收表单数据 String id = req.getParameter("id"); String username = req.getParameter("username"); String password = req.getParameter("password"); String sex = req.getParameter("sex"); String age = req.getParameter("age"); String birthday = req.getParameter("birthday"); String city = req.getParameter("city"); String salary = req.getParameter("salary"); String starttime = req.getParameter("starttime"); String endtime = req.getParameter("endtime"); String description = req.getParameter("description"); // 插入记录 Connection conn = DBHelper.getConn(); String sql = "UPDATE user SET username=?,password=?,sex=?,age=?,birthday=?,city=?,salary=?,starttime=?,endtime=?,description=? WHERE id=?"; PreparedStatement ps = (PreparedStatement) DBHelper.prepare(conn, sql); resp.setContentType("text/html;charset=utf-8"); String str = ""; try { ps.setString(1, username); ps.setString(2, password); ps.setString(3, sex); ps.setString(4, age); ps.setString(5, birthday); ps.setString(6, city); ps.setString(7, salary); ps.setString(8, starttime); ps.setString(9, endtime); ps.setString(10, description); ps.setString(11, id); // int a = 1/0; // 操作失败演示 int count = ps.executeUpdate(); // 用户添加成功后返回:{"status":"ok","message":"操作成功!"},失败返回:// 用户添加成功后返回:{"status":"error","message":"操作失败!"} if (count == 1) { str = "{\"status\":\"ok\",\"message\":\"操作成功!\"}"; } else { str = "{\"status\":\"error\",\"message\":\"操作失败!\"}"; } } catch (Exception e) { str = "{\"status\":\"error\",\"message\":\"操作失败!\"}"; e.printStackTrace(); } finally { // 不管操作成功或者失败,都会执行这里的代码 try { resp.getWriter().write(str); } catch (IOException e) { e.printStackTrace(); } DBHelper.close(ps); DBHelper.close(conn); } } // 获取总记录数 private int getTotalByCondictions(HttpServletRequest req, HttpServletResponse resp, String username, String starttime, String endtime) { Connection conn = DBHelper.getConn(); String sql = ""; if (username == null && starttime == null && endtime == null) { // 第一次进来 sql = "SELECT COUNT(*) FROM user"; } else { // 条件查询 // 拼接sql语句 sql = "SELECT COUNT(*) FROM user WHERE 1=1 "; if (username != null && !"".equals(username)) { sql += "AND username LIKE '%"+username+"%' "; } if (starttime != null && !"".equals(starttime)) { sql += "AND starttime >= '"+starttime+"' "; } if (endtime != null && !"".equals(endtime)) { sql += "AND endtime <= '"+endtime+"' "; } } PreparedStatement ps = (PreparedStatement) DBHelper.prepare(conn, sql); int count = 0; ResultSet rs = null; try { rs = ps.executeQuery(); if (rs.next()) { count = rs.getInt(1); } } catch (SQLException e) { e.printStackTrace(); } finally { DBHelper.close(rs); DBHelper.close(ps); DBHelper.close(conn); } return count; } // 获取用户列表 /* private List<User> findUserListByCondi(HttpServletRequest req, HttpServletResponse resp) { // 接收分页参数 int currentPage = Integer.parseInt(req.getParameter("page")); int pageSize = Integer.parseInt(req.getParameter("rows")); if (currentPage < 0 || pageSize < 0) { currentPage = 1; pageSize = 10; } Connection conn = DBHelper.getConn(); String sql = "SELECT * FROM user LIMIT ?,?"; PreparedStatement ps = (PreparedStatement) DBHelper.prepare(conn, sql); try { ps.setInt(1, (currentPage-1)*pageSize); ps.setInt(2, pageSize); } catch (SQLException e1) { e1.printStackTrace(); } // 查询用户列表 List<User> userList = new ArrayList<User>(); try { ResultSet rs = ps.executeQuery(); while (rs.next()) { String id = rs.getString("id"); String username = rs.getString("username"); String password = rs.getString("password"); String sex = rs.getString("sex"); String age = String.valueOf(rs.getInt("age")); String birthday = rs.getString("birthday"); String city = rs.getString("city"); String salary = rs.getString("salary"); String starttime = rs.getString("starttime"); String endtime = rs.getString("endtime"); String description = rs.getString("description"); User user = new User(id, username, password, sex, age, birthday, city, salary, starttime, endtime, description); userList.add(user); } return userList; } catch (SQLException e) { e.printStackTrace(); } return null; }*/ // 新增用户 private void saveUser(HttpServletRequest req, HttpServletResponse resp) { // 接收表单数据 String username = req.getParameter("username"); String password = req.getParameter("password"); String sex = req.getParameter("sex"); String age = req.getParameter("age"); String birthday = req.getParameter("birthday"); String city = req.getParameter("city"); String salary = req.getParameter("salary"); String starttime = req.getParameter("starttime"); String endtime = req.getParameter("endtime"); String description = ""; try { description = new String(req.getParameter("description").getBytes("ISO-8859-1"), "UTF-8"); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } // 插入记录 Connection conn = DBHelper.getConn(); String sql = "INSERT INTO user(username, password, sex, age, birthday, city, salary, starttime, endtime, description) " + "VALUES('"+username+"','"+password+"','"+sex+"','"+age+"','"+birthday+"','"+city+"','"+salary+"','"+starttime +"','"+endtime+"','"+description+"')"; PreparedStatement ps = (PreparedStatement) DBHelper.prepare(conn, sql); resp.setContentType("text/html;charset=utf-8"); String str = ""; try { // int a = 1/0; // 操作失败演示 int count = ps.executeUpdate(); // 用户添加成功后返回:{"status":"ok","message":"操作成功!"},失败返回:// 用户添加成功后返回:{"status":"error","message":"操作失败!"} if (count == 1) { str = "{\"status\":\"ok\",\"message\":\"操作成功!\"}"; } else { str = "{\"status\":\"error\",\"message\":\"操作失败!\"}"; } } catch (Exception e) { str = "{\"status\":\"error\",\"message\":\"操作失败!\"}"; e.printStackTrace(); } finally { // 不管操作成功或者失败,都会执行这里的代码 try { resp.getWriter().write(str); } catch (IOException e) { e.printStackTrace(); } DBHelper.close(ps); DBHelper.close(conn); } } }
DBHelper.java:
package sxt.easyui.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class DBHelper { // 数据库连接参数 public static final String DRIVERCLASS = "com.mysql.jdbc.Driver"; public static final String URL = "jdbc:mysql://localhost:3306/easyui?useUnicode=true&characterEncoding=utf-8"; public static final String USRENAME = "root"; public static final String PASSWORD = "123456"; // Connection public static Connection getConn() { Connection conn = null; try { Class.forName(DRIVERCLASS); conn = DriverManager.getConnection(URL, USRENAME, PASSWORD); } catch (Exception e) { e.printStackTrace(); } return conn; } // PrepareStatement public static PreparedStatement prepare(Connection conn, String sql) { PreparedStatement ps = null; try { ps = conn.prepareStatement(sql); } catch (SQLException e) { e.printStackTrace(); } return ps; } // 关闭数据库, 释放资源 public static void close(ResultSet rs) { if (rs != null) { try { rs.close(); rs = null; } catch (Exception e) { e.printStackTrace(); } } } public static void close(PreparedStatement ps) { if (ps != null) { try { ps.close(); ps = null; } catch (SQLException e) { e.printStackTrace(); } } } public static void close(Connection conn) { if (conn != null) { try { conn.close(); conn = null; } catch (SQLException e) { e.printStackTrace(); } } } }
JsonUtil.java:
package sxt.easyui.util; import java.util.List; import net.sf.json.JSONArray; // json工具类 public class JsonUtil { // 把List转换成json字串数组 public static String Object2JsonStr(List<?> list) throws Exception { String jsonStr = null; /*if (list != null && list.size() > 0) { jsonStr = JSONArray.fromObject(list).toString(); }*/ jsonStr = JSONArray.fromObject(list).toString(); return jsonStr; } }
commons.js:
// 重写了校验器 $.extend($.fn.validatebox.defaults.rules, { minLength: { // 校验器,value:用户输入的内容 param:定义的校验数组 validator: function(value, param) { return value.length >= param[0] && value.length <= param[1]; }, // 如果出错,显示的提示信息 message: "用户名必须在2-5个字符之间!" }, equalLength: { // 校验器,value:用户输入的内容 param:定义的校验数组 validator: function(value, param) { return value.length == param[0]; }, // 如果出错,显示的提示信息 message: "密码必须是4位字符!" } });
city_data.json:
[ { "id": 1, "text": "东莞" }, { "id": 2, "text": "广州" }, { "id": 3, "text": "深圳" }, { "id": 4, "text": "珠海" }, { "id": 5, "text": "佛山" } ]
007_datagrid_crud.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>Datagrid</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <link rel="stylesheet" type="text/css" href="js/jquery-easyui-1.2.6/themes/default/easyui.css"> <link rel="stylesheet" type="text/css" href="js/jquery-easyui-1.2.6/themes/icon.css"> <script type="text/javascript" src="js/jquery-easyui-1.2.6/jquery-1.7.2.min.js"></script> <script type="text/javascript" src="js/jquery-easyui-1.2.6/jquery.easyui.min.js"></script> <script type="text/javascript" src="js/jquery-easyui-1.2.6/locale/easyui-lang-zh_CN.js"></script> <!-- myJs --> <script type="text/javascript" src="js/myJs/commons.js"></script> <script type="text/javascript"> var method; // undefined,区分新增用户和修改用户 $(function() { // 2.使用datagrid(), 发起请求并展示列表 $("#userList").datagrid({ idField: "id", // 标识字段,只要创建数据表格,就要配置这一项,如果指定了这个字段,那么翻页的时候会自动记录所有选中的记录 title: "用户列表", //width: 1000, //fit: true, height: 515, url: "UserServlet?method=findUserList", // 异步请求的地址 striped: true, // 隔行变色 nowrap: true, // 默认情况下,当数据在同一行放不下,会折行放很多行显示,设置为true,不管多长的数据都显示在一行 loadMsg: "正在加载,请稍等...", rownumbers: true, // 行号 //singleSelect: true, // 只允许选择表格中的一行 // 字段排序 //remoteSort: false, // 1.取消本地排序,本地排序,即后台json数据是什么顺序,将来在页面就按什么顺序展示 sortName: "salary", // 2.指定排序的列字段名称 sortOrder: "DESC", // 3.指定是按升序还是降序排序,默认是asc,即升序 // 满足条件的行记录,改变其样式,如:超级管理员的行记录背景颜色改成:#FFAEB9 rowStyler: function(index, recode) { if (recode.username == "super") { return "background:#FFAEB9"; } }, // ========================================================= // 分页 pagination: true, // 表示打开分页特性 pageList: [5,10,15,20,30,50], // 每页显示多少条记录,自定义 pageSize: 20, // 设置初始化一页显示的记录数 // ========================================================= fitColumns: true, // 自适应列宽 // 表格的列,是个二维数组,数组中是一个个对象,field的value值要和POJO中的属性值一致 /* frozenColumns: [[ // 冻结列特性(用于列比较多的情况)不能和fitColumns属性一起使用,否则看不到效果 { field: "username", title: "用户名", width: 100 } ]], */ columns: [[ { // 复选框,这个特性不要和singleSelect特性一起使用,否则只能选择一条记录 field: "ck", width: 50, checkbox: true }, { field: "username", title: "用户名", width: 100, styler: function(value, recode) { if ("admin" == value) { return "background:#FF83FA"; } } }, { field: "password", title: "密码", width: 100, hidden: true }, { field: "sex", title: "性别", width: 50, formatter: function(value, recode, index) { if (value == 1) { return "<span style='color:red;'>男</span>"; } else if (value == 2) { return "<span style='color:green;'>女</span>"; } } },{ field: "age", title: "年龄", width: 50 },{ field: "birthday", title: "生日", width: 150, sortable: true },{ field: "city", title: "所属城市", width: 100, formatter: function(value, recode, index) { // 如果城市很多,这样代码很繁琐,可以把城市放到一个js文件中,然后获取这个js文件,得到城市的数组,最后遍历得到 if (value == 1) { return "东莞"; } else if (value == 2) { return "广州"; } else if (value == 3) { return "深圳"; } else if (value == 4) { return "珠海"; } else if (value == 5) { return "佛山"; } } },{ field: "salary", title: "薪水", width: 100, sortable: true },{ field: "starttime", title: "开始时间", width: 150 },{ field: "endtime", title: "结束时间", width: 150 },{ field: "description", title: "个人描述", width: 150, formatter: function(value, recode, index) { return "<span title="+value+">"+value+"</span>"; } } ]], // CRUD ========================================================上 // 添加crud按钮 toolbar: [ { text: "新增用户", iconCls: "icon-add", handler: function() { method = "addUser"; // 清空表单数据 $("#userForm").find("input[name!='sex']").val(""); // 方法1 //$("#userForm").get(0).reset(); // 方法2:会有记忆 //$("#userForm").form('clear'); // 方法3:会把其他非input的value也清空 // 点击新增用户按钮,弹出新增用户的表单 $("#addUserDialog").dialog({ title: "新增用户" }); $("#addUserDialog").dialog("open"); } },{ text: "删除用户", iconCls: "icon-remove", handler: function() { var users = $("#userList").datagrid("getSelections"); if (users.length <= 0) { $.messager.show({ title: "提示信息", msg: "至少选择一行记录进行删除!" }); } else { $.messager.confirm("提示信息", "确定删除吗?", function(r) { if (r) { var ids = ""; for (var i=0; i<users.length; i++) { ids += users[i].id + ","; } ids = ids.substring(0, ids.length-1); var url = "UserServlet?method=deleteUserByIds"; var args = {"time": new Date(), "ids": ids}; $.post(url, args, function(result) { // 返回的数据:成功:{"status":"操作成功!"}, 失败:{"status":"操作失败!"} // 要清空之前选择的idField,否则会叠加(或者直接清空数组) //users.splice(0, users.length); $("#userList").datagrid("unselectAll"); // 刷新页面 $("#userList").datagrid("reload"); // 给提示信息 var jsonObj = eval("("+result+")"); $.messager.show({ title: "提示信息", msg: jsonObj.status }); }); } else { return; } }); } } },{ text: "修改用户", iconCls: "icon-edit", handler: function() { method = "editUser"; // 校验只能选择一行记录进行修改 var arr = $("#userList").datagrid("getSelections"); if (arr.length == 1) { // 修改dialog的标题 $("#addUserDialog").dialog({ title: "修改用户" }); // 弹出添加用户的表单 $("#addUserDialog").dialog("open"); // 清空表单 $("#userForm").find("input[name!='sex']").val(""); // 表单数据回显 var user = arr[0]; $("#userForm").form("load", { id: user.id, username: user.username, password: user.password, sex: user.sex, age: user.age, birthday: user.birthday, city: user.city, salary: user.salary, starttime: user.starttime, endtime: user.endtime, description: user.description }); } else { $.messager.show({ title: "提示信息", msg: "只能选择一行记录进行修改!" }); } } },{ text: "查询用户", iconCls: "icon-search", handler: function() { $("#layout").layout("expand", "north"); } } ] // CRUD ========================================================下 }); // 新增用户表单js校验-----------------------------------------------------上 // 新增用户的dialog $("#addUserDialog").dialog({ title: "新增用户", width: 320, closed: "true", modal: true, draggable: false }); // 用户名和密码校验器 $("#userTable input[name='username']").validatebox({ required: true, validType: 'minLength[2,5]', missingMessage: '用户名必填' }); $("#userTable input[name='password']").validatebox({ required: true, validType: 'equalLength[4]', missingMessage: '密码必填' }); // 年龄 $("#userTable input[name='age']").numberbox({ min: 1, max: 200, required: true, missingMessage: '年龄必填' }); // 生日 $("#userTable input[name='birthday']").datetimebox({ required: true, missingMessage: '生日必填', // 只可选择,禁止输入 editable: false }); // 下拉框(查看easyui.css文件中的combobox-item-hover的css,可以设置鼠标悬停在下拉选项上的颜色) $("#userTable input[name='city']").combobox({ url: 'json/city_data.json', // 这个json文件的编码一定要是utf-8,否则会中文乱码,右键-Properties-设置utf-8 valueField: 'id', // 对应json文件中的key textField: 'text', // 对应json文件中的key value: '请选择', editable: false }); // 薪水 $("#userTable input[name='salary']").numberbox({ min: 2000, max: 20000, required: true, missingMessage: '薪水必填', precision: 2 }); // 时间日期控件 $("#userTable input[name='starttime'], #userTable input[name='endtime']").datetimebox({ required: true, missingMessage: '时间必填', // 只可选择,禁止输入 editable: false, // 开始时间不能迟于结束时间 // ... }); // 个人描述 $("#userTable input[name='description']").validatebox({ required: true, validType: 'minLength[5,50]', missingMessage: '个人描述必填', invalidMessage: '个人描述必须在5-50个字符之间!' // 这里使用invalidMessage覆盖掉用户名中的提示信息【原来的不变,只改变这里的提示内容】 }); // 新增用户表单js校验-----------------------------------------------------下 // 关闭新增用户窗口 $("#closeDialog").click(function() { $("#addUserDialog").dialog('close'); }); // 新增用户提交表单 /* 【============================注意:这种先定义表单再提交表单的方式,动态url无法设定============================】 $("#userForm").form({ // 定义表单 url: method=="addUser"?"UserServlet?method=addUser":"UserServlet?method=editUser", onSubmit: function() { // 如果表单校验不通过,就阻止表单提交 if (!$("#userForm").form('validate')) { $.messager.show({ title: "提示信息", msg: "验证没有通过,不能提交表单!" }); return false; // 阻止提交 } }, success: function(result) { var result = $.parseJSON(result); // 提交成功后关闭dialog $("#addUserDialog").dialog('close'); // 刷新datagrid $("#userList").datagrid('reload'); // 操作成功提示信息 $.messager.show({ title: result.status, msg: result.message }); }, error: function(result) { var result = $.parseJSON(result); $.messager.show({ title: result.status, msg: result.message }); } }); * 【============================注意:这种先定义表单再提交表单的方式,动态url无法设定============================】 */ // 回车提交表单 $("#userForm").find("input").on("keyup", function(event) { if (event.keyCode == 13) { //$("#userForm").submit(); // 如果表单校验不通过,就阻止表单提交 userFormSubmit(); } }); // 点击保存按钮提交表单 $("#confirmBtn").click(function() { //$("#userForm").submit(); userFormSubmit() }); // 查询用户 // 清空查询条件 $("#resetBth").click(function() { $("#searchUserForm").form("clear"); }); // 提交查询 $("#searchUser").click(function() { var username = $("#searchUserForm input[name='username']").val(); var starttime = $("#searchUserForm input[name='starttime']").val(); var endtime = $("#searchUserForm input[name='endtime']").val(); var starttimeStr = starttime.replace(/-/g, "/"); // /g表示全局,/-表示短横线,总体表示用户/替换掉所有的- var endtimeStr = endtime.replace(/-/g, "/"); var starttimeDateTime = new Date(starttimeStr); var endtimeDateTime = new Date(endtimeStr); if (starttimeDateTime > endtimeDateTime) { $.messager.confirm("提示信息", "结束时间不能早于开始时间!", "info", function() { $("#searchUserForm").find("input[name!='username']").val(""); }); } else { // 重新指定datagrid的请求方法$("#userList").datagrid("options").url="XXX"的方式 $("#userList").datagrid("options").url = "UserServlet?method=findUserListByCondictions"; // 发送请求 $("#userList").datagrid("load", serializeForm($("#searchUserForm"))); } }); }); // 提交表单 function userFormSubmit() { if (!$("#userForm").form('validate')) { $.messager.show({ title: "提示信息", msg: "验证没有通过,不能提交表单!" }); return false; // 阻止提交 } // 提交表单 $.ajax({ type: "post", // 提交方式 url: "UserServlet?method=" + method, // 提交地址 cache: false, // 是否缓存 data: $("#userForm").serialize(), // 提交的数据,这里不需要一个个去构造js对象/json串,直接将表单序列化成username=xxx&password=xxx的字串 dataType: "text", // 请求成功后响应的数据类型,可以是text/html/xml/json等等 success: function(result) { var result = $.parseJSON(result); // 提交成功后关闭dialog $("#addUserDialog").dialog('close'); // 刷新datagrid $("#userList").datagrid('reload'); // 操作成功提示信息 $.messager.show({ title: result.status, msg: result.message }); }, error: function(result) { var result = $.parseJSON(result); $.messager.show({ title: result.status, msg: result.message }); } }); } //js方法:序列化表单 ,把表单传递进来,就可以得到一个表单的js对象,如$("#userForm"); function serializeForm(form){ var obj = {}; $.each(form.serializeArray(),function(index){ if(obj[this['name']]){ obj[this['name']] = obj[this['name']] + ','+this['value']; } else { obj[this['name']] =this['value']; } }); return obj; } </script> </head> <body style="margin: 0px 0px 0px 0px;"><!-- 让body填充整个屏幕 --> <div id="layout" class="easyui-layout" style="width:100%;" fit="true"> <div region="north" style="height: 100px;" title="用户查询" collapsed="true"> <form id="searchUserForm" action="" method="post"> <table id="searchUserTable" align="left" style="margin-top: 15px;" cellpadding="5px;"> <tr> <td>用户名:<input type="text" name="username"/></td> <td>开始时间:<input type="text" name="starttime" class="easyui-datetimebox" editable="false" style="width: 150px;"/></td> <td>结束时间:<input type="text" name="endtime" class="easyui-datetimebox" editable="false" style="width: 150px;"/></td> <td><a id="searchUser" class="easyui-linkbutton">查询</a></td> <td><a id="resetBth" class="easyui-linkbutton">清空</a></td> </tr> </table> </form> </div> <div region="center"> <!-- 1.定义一个用户table --> <table id="userList"></table> </div> </div> <!-- 新增用户的dialog --> <div id="addUserDialog"> <form action="" method="post" id="userForm" class="easyui-form"> <input type="hidden" name="id"/> <table id="userTable" style="text-align: right;padding: 20px;" cellpadding="3px;" cellspacing="5px;"> <tr> <td>用户名:</td> <td><input type="text" name="username"/></td> </tr> <tr> <td>密码:</td> <td><input type="password" name="password"/></td> </tr> <tr> <td>性别:</td> <td> <input type="radio" name="sex" value="1" checked="checked"/> 男 <input type="radio" name="sex" value="2"/> 女 </td> </tr> <tr> <td>年龄:</td> <td><input type="text" name="age"/></td> </tr> <tr> <td>生日:</td> <td><input type="text" name="birthday" style="width: 150px;"/></td> </tr> <tr> <td>所属城市:</td> <td> <input type="text" name="city" style="width: 150px;"/> </td> </tr> <tr> <td>薪水:</td> <td><input type="text" name="salary"/></td> </tr> <tr> <td>开始时间:</td> <td><input type="text" name="starttime" style="width: 150px;"/></td> </tr> <tr> <td>结束时间:</td> <td><input type="text" name="endtime" style="width: 150px;"/></td> </tr> <tr> <td>描述:</td> <td><input type="text" name="description"/></td> </tr> <tr> <td colspan="2"> <a id="confirmBtn" class="easyui-linkbutton" style="margin-top: 20px;">确定</a> <a id="closeDialog" class="easyui-linkbutton" style="margin-top: 20px;">取消</a> </td> </tr> </table> </form> </div> </body> </html>
web.xml:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>Easyui</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>UserServlet</servlet-name> <servlet-class>sxt.easyui.servlet.UserServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>UserServlet</servlet-name> <url-pattern>/UserServlet</url-pattern> </servlet-mapping> </web-app>
效果:在浏览器地址栏输入:http://localhost:8080/Easyui/jsp/007_datagrid_crud.jsp,回车