easyui的crud(dialog,datagrid、form讲解)
1、datagrid布局
1.1 分页数据
easyui的页码page、页大小rows
1.2 datagrid组件
{total:10,rows:[{},{},{}]}
1.3 加载中文插件包
locale/easyui-lang-zh_CN.js
1.4 关键属性
后台数据
url
load/reload
列
columns
分页
pagination
pageList
pageSize
按钮
toolbar
其它
singleSelect
idField
rownumbers
getSelected
row.sid
getRowIndex
2、dialog布局
3、form布局
4、通用的JsonBaseDao增删改方法
5、dao层
6、web层
7、功能完善
前后端分离
美工、java工程师都是独立工作的,彼此之间在开发过程中是没有任何交际。
在开发前约定数据交互的格式。
java工程师的工作:写方法返回数据如tree_data1.jsodx'x'x'x'x'kn
美工:只管展示tree_data1.json
userManage.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath }/static/easyui5/themes/default/easyui.css">
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath }/static/easyui5/themes/icon.css">
<script type="text/javascript"
src="${pageContext.request.contextPath }/static/easyui5/jquery.min.js"></script>
<script type="text/javascript"
src="${pageContext.request.contextPath }/static/easyui5/jquery.easyui.min.js"></script>
<script type="text/javascript"
src="${pageContext.request.contextPath }/static/js/userManage.js"></script>
<title>后台管理主界面</title>
</head>
<body>
<div id="tb">
<input type="text" id="qq">
<button οnclick="qq()">搜索</button>
</div>
<table id="dg"></table>
<input type="hidden" id="myy"
value="${pageContext.request.contextPath }">
<!-- 新增修改对应的编辑窗体 -->
<div id="dd" class="easyui-dialog" title="编辑窗体"
style="width: 400px; height: 200px;"
data-options="iconCls:'icon-save',resizable:true,modal:true,buttons:'#bb',closed:true">
<!-- 自定义正则属性 -->
<form id="ff" method="post">
<input type="hidden" name="SerialNo" id="SerialNo"/>
<div>
<label for="uid">uid:</label> <input class="easyui-validatebox"
type="text" name="uid" data-options="required:true" />
</div>
<div>
<label for="uname">uname:</label> <input class="easyui-validatebox"
type="text" name="uname" data-options="required:true" />
</div>
<div>
<label for="upwd">upwd:</label> <input class="easyui-validatebox"
type="text" name="upwd" data-options="required:true" />
</div>
</form>
</div>
<div id="bb">
<a href="#" class="easyui-linkbutton" οnclick='ok()' >保存</a>
<a href="#" class="easyui-linkbutton" οnclick="no()">关闭</a>
</div>
</body>
</html>
userManage.js
$(function() {
$('#dg').datagrid({
url : $("#myy").val() + '/userAction.action?methodName=list',
pagination : true,
fitColumns : true,
columns : [ [ {
field : 'uid',
title : 'id',
width : 100
}, {
field : 'uname',
title : '名称',
width : 100
}, {
field : 'upwd',
title : '密码',
width : 100,
align : 'right'
}
] ],
toolbar : [ {
iconCls : 'icon-add',
handler : function() {
$('#ff').form('clear');//清空表单
$('#dd').dialog('open');//打开窗体
}
}, {
iconCls : 'icon-edit',
handler : function() {
$('#dd').dialog('open');
// 通过easyui的form控件直接回填选中行的数据
var row = $('#dg').datagrid('getSelected');
if (row) {
$('#ff').form('load', row);
} else {
alert("请选择你要修改的数据");
}
}
}, '-', {
iconCls : 'icon-remove',
handler : function() {
var row = $('#dg').datagrid('getSelected');
if (null == row) {
$.messager.alert('警告', '请选中行');
return false;
}
$.messager.confirm('确认', '您确认要删除记录吗', function(r) {
if(r){
$.ajax({
url:$("#myy").val()+'/userAction.action?methodName=del&SerialNo='+row.SerialNo,
success: function(param){
//重新载入页面
$('#dg').datagrid('reload');
}
})
}
})
}
} ]
});
})
// 新增或修改
function ok() {
var seturl = '../userAction.action?methodName=edit';
var SeriaNo = $('#SerialNo').val();
if(SerialNo == null || SerialNo == ""){
seturl = '../userAction.action?methodName=add';
}
$('#ff').form('submit', {
url :seturl,
success : function(data) {
// 将json串转成json对象
var res = eval('(' + data + ')');
// 比如说如果返回1代表成功,0代表失败,还有业务逻辑需要处理的话,由前端完成
if (res.code == 1) {
$('#dd').dialog('close');
$('#dg').datagrid('reload');
} else {
}
}
});
}
// 关闭
function no() {
$('#dd').dialog('close');
}
// 查询
function qq() {
var query = $("#qq").val();
$("#dg").datagrid(
{
url : $("#myy").val()
+ '/userAction.action?methodName=query&uname=' + query
});
}
UserAction.java
package com.bk201.web;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.bk201.dao.UserDao;
import com.bk201.util.PageBean;
import com.bk201.util.ResponseUtil;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.zking.framework.ActionSupport;
public class UserAction extends ActionSupport {
private UserDao userDao = new UserDao();
public String login(HttpServletRequest req, HttpServletResponse resp) {
String code = "index";
// 登录
try {
List<Map<String, Object>> list = this.userDao.list(req.getParameterMap(), null);
if (list.size() == 1 && list != null) {
// 用户存在
List<Map<String, Object>> menuList = this.userDao.getMenuseByUser(req.getParameterMap(), null);
StringBuilder sb = new StringBuilder();
for (Map<String, Object> map : menuList) {
sb.append("," + map.get("menuId"));
}
// ,001,002 第一个下标开始截取
req.setAttribute("menuIds", sb.substring(1));
} else {
// 用户不存在
req.setAttribute("msg", "用户不存在");
code = "login";
}
} catch (InstantiationException | IllegalAccessException | SQLException e) {
e.printStackTrace();
code = "login";
}
return code;
}
/**
* easyui的datagrid的数据来源
*
* @param req
* @param resp
* @return
*/
public String list(HttpServletRequest req, HttpServletResponse resp) {
Map<String, Object> map = new HashMap<String, Object>();
PageBean pageBean = new PageBean();
pageBean.setRequest(req);
try {
List<Map<String, Object>> list = this.userDao.list(req.getParameterMap(), pageBean);
map.put("total", pageBean.getTotal());
map.put("rows", list);
ObjectMapper om = new ObjectMapper();
ResponseUtil.write(resp, om.writeValueAsString(map));
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 查询
*
* @param req
* @param resp
* @return
*/
public String query(HttpServletRequest req, HttpServletResponse resp) {
try {
PageBean pageBean = new PageBean();
pageBean.setRequest(req);
List<Map<String, Object>> list = this.userDao.query(req.getParameterMap(), pageBean);
ObjectMapper om = new ObjectMapper();
Map<String, Object> map = new HashMap<>();
map.put("total", pageBean.getTotal());
map.put("rows", list);
ResponseUtil.write(resp, om.writeValueAsString(map));
} catch (Exception e) {
e.printStackTrace();
}
return "index";
}
/**
* 修改
*
* @param req
* @param resp
* @return
*/
public String edit(HttpServletRequest req, HttpServletResponse resp) {
try {
this.userDao.edit(req.getParameterMap());
ObjectMapper om = new ObjectMapper();
Map<String, Object> map = new HashMap<String, Object>();
map.put("code", 1);
map.put("msg", "成功");
ResponseUtil.write(resp, om.writeValueAsString(map));
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 新增
*
* @param req
* @param resp
* @return
*/
public String add(HttpServletRequest req, HttpServletResponse resp) {
try {
this.userDao.add(req.getParameterMap());
ObjectMapper om = new ObjectMapper();
Map<String, Object> map = new HashMap<String, Object>();
map.put("code", 1);
map.put("msg", "成功");
ResponseUtil.write(resp, om.writeValueAsString(map));
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 删除
*
* @param req
* @param resp
* @return
*/
public String del(HttpServletRequest req, HttpServletResponse resp) {
try {
int del = this.userDao.del(req.getParameterMap());
ObjectMapper om = new ObjectMapper();
Map<String, Object> map = new HashMap<String, Object>();
map.put("code", 1);
map.put("msg", "成功");
ResponseUtil.write(resp, om.writeValueAsString(map));
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
UserDao.java
package com.bk201.dao;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import com.bk201.util.JsonBaseDao;
import com.bk201.util.JsonUtils;
import com.bk201.util.PageBean;
import com.bk201.util.StringUtils;
public class UserDao extends JsonBaseDao {
/**
* 用于查询用户分页列表所用
* 用于用户登录所用
* @param map
* @param pageBean
* @return
* @throws SQLException
* @throws IllegalAccessException
* @throws InstantiationException
*/
public List<Map<String, Object>> list(Map<String, String[]> map,PageBean pageBean) throws InstantiationException, IllegalAccessException, SQLException{
String sql="select * from t_easyui_user_version2 where true ";
String uid = JsonUtils.getParamVal(map, "uid");
String upwd = JsonUtils.getParamVal(map, "upwd");
if(StringUtils.isNotBlank(uid)) {
sql += " and uid = "+uid;
}
if(StringUtils.isNotBlank(upwd)) {
sql += " and upwd = "+upwd;
}
return super.executeQuery(sql, pageBean);
}
/**
* 通过用户登录的唯一账号,在用户父权限中间表中获取菜单ID的集合
* @param map
* @param pageBean
* @return
* @throws SQLException
* @throws IllegalAccessException
* @throws InstantiationException
*/
public List<Map<String, Object>> getMenuseByUser(Map<String, String[]> map,PageBean pageBean) throws InstantiationException, IllegalAccessException, SQLException{
String sql="select * from t_easyui_usermenu where true ";
String uid = JsonUtils.getParamVal(map, "uid");
if(StringUtils.isNotBlank(uid)) {
sql += " and uid = "+uid;
}
return super.executeQuery(sql, pageBean);
}
/**
* 修改
* @param map
* @param pageBean
* @return
*/
public int edit(Map<String, String[]> map) throws Exception{
String sql="update t_easyui_user_version2 set uid=?,uname=?,upwd=? where serialno = ? ";
return super.executeUpdate(sql, new String[] {"uid","uname","upwd","SerialNo" },map);
}
/**
* 新增
* @param map
* @return
* @throws Exception
*/
public int add(Map<String, String[]> map) throws Exception{
List<Map<String, Object>> SerialNo = this.SerialNoMax(map);//获取最大唯一标识符
int serialno = Integer.valueOf(SerialNo.toString().substring(16,17))+1;
String sql = "insert into t_easyui_user_version2 values('"+serialno+"',?,?,?)";
return super.executeUpdate(sql, new String [] {"uid","uname","upwd"},map);
}
/**
* 查询最大SerialNo
* @param map
* @return
* @throws Exception
*/
public List<Map<String, Object>> SerialNoMax(Map<String, String [] > map) throws Exception{
String sql = "select max(SerialNo) from t_easyui_user_version2 ";
return super.executeQuery(sql, null);
}
/**
* 删除
* @param map
* @return
* @throws Exception
*/
public int del(Map<String, String[]> map) throws Exception{
String sql="delete from t_easyui_user_version2 where serialno = ? ";
return super.executeUpdate(sql, new String[] {"SerialNo"},map);
}
/**
* 查询
* @param paMap
* @param pageBean
* @return
* @throws InstantiationException
* @throws IllegalAccessException
* @throws SQLException
*/
public List<Map<String, Object>> query(Map<String, String[]> paMap,PageBean pageBean) throws InstantiationException, IllegalAccessException, SQLException{
String sql="select * from t_easyui_user_version2 where true";
String uname = JsonUtils.getParamVal(paMap, "uname");
if (StringUtils.isNotBlank(uname)) {
sql = sql + " and uname like '%" + uname + "%'";
}
return super.executeQuery(sql, pageBean);
}
}
结果图:
增加:
修改:
删除: