目录
项目需求
要求可以登录,可以对管理员进行分页展示,增,删,改,查操作,可以对用户进行分页展示,增,删,改,查操作,可以对订单进行分页展示,确认订单,删除订单操作
登录功能
User类
package cn.itcast.travel.domain;
/**
* @author 张天霸
*/
public class User {
private int uid;
private String username;
private String password;
public User() {
}
public User(int uid, String username, String password) {
this.uid = uid;
this.username = username;
this.password = password;
}
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
UserDaoImpl中的方法
public User findByUsernameAndPassword(String username, String password) {
String sql = "SELECT * FROM user WHERE username = ? AND password = ?";
User user = null;
try {
user = template.queryForObject(sql, new BeanPropertyRowMapper<>(User.class), username, password);
} catch (DataAccessException e) {
e.printStackTrace();
}
return user;
}
UserServiceImpl中的方法
public User login(User user) {
String username = user.getUsername();
String password = user.getPassword();
User u = userDao.findByUsernameAndPassword(username, password);
return u;
}
UserServlet中的方法
public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取用户名密码
Map<String, String[]> parameterMap = request.getParameterMap();
//封装对象
User user = new User();
try {
BeanUtils.populate(user,parameterMap);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
//查询对象
User u = userService.login(user);
ResultInfo info = new ResultInfo();
//判断对象是否为空
if (u == null){
//用户名或密码错误
info.setFlag(false);
info.setErrorMsg("用户名或密码错误");
}else {
//登录成功
request.getSession().setAttribute("user",u);
info.setFlag(true);
}
writeValue(info,response);
}
Login.html
<!doctype html>
<html class="x-admin-sm">
<head>
<meta charset="UTF-8">
<title>后台登录-X-admin2.2</title>
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
<link rel="stylesheet" href="./css/font.css">
<link rel="stylesheet" href="./css/login.css">
<link rel="stylesheet" href="./css/xadmin.css">
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script src="./lib/layui/layui.js" charset="utf-8"></script>
<!--[if lt IE 9]>
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<script src="js/jquery-3.3.1.js"></script>
<script>
$(function () {
$("#login").click(function () {
$.get("user/login",$("#login_form").serialize(),function (info) {
if (info.flag){
//登录成功
location.href = "http://localhost/travelAdmin/index.html";
}
else {
alert("用户名或密码错误");
location.reload();
}
});
});
});
</script>
</head>
<body class="login-bg">
<div class="login layui-anim layui-anim-up">
<div class="message">x-admin2.0-管理登录</div>
<div id="darkbannerwrap"></div>
<form id="login_form" method="post" class="layui-form" >
<input id="username" name="username" placeholder="用户名" type="text" lay-verify="required" class="layui-input" >
<hr class="hr15">
<input id="password" name="password" lay-verify="required" placeholder="密码" type="password" class="layui-input">
<hr class="hr15">
<input id="login" value="登录" lay-submit lay-filter="login" style="width:100%;" type="button">
<hr class="hr20" >
</form>
</div>
<!-- <script>-->
<!-- $(function () {-->
<!-- layui.use('form', function(){-->
<!-- var form = layui.form;-->
<!-- // layer.msg('玩命卖萌中', function(){-->
<!-- // //关闭后的操作-->
<!-- // });-->
<!-- //监听提交-->
<!-- form.on('submit(login)', function(data){-->
<!-- // alert(888)-->
<!-- layer.msg(JSON.stringify(data.field),function(){-->
<!-- location.href='index.html'-->
<!-- });-->
<!-- return false;-->
<!-- });-->
<!-- });-->
<!-- })-->
<!-- </script>-->
<!-- 底部结束 -->
<script>
//百度统计可去掉
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?b393d153aeb26b46e9431fabaf0f6190";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
</body>
</html>
效果展示
管理员列表
管理员列表分页查询
Admin类
package cn.itcast.travel.domain;
import java.util.Date;
/**
* @author 张天霸
*/
public class Admin {
private int aid;
private String username;
private String telephone;
private String email;
private String role;
private Date date;
private String status;
public Admin() {
}
public Admin(int aid, String username, String telephone, String email, String role, Date date, String status) {
this.aid = aid;
this.username = username;
this.telephone = telephone;
this.email = email;
this.role = role;
this.date = date;
this.status = status;
}
public Integer getAid() {
return aid;
}
public void setAid(int aid) {
this.aid = aid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
PageBean类
package cn.itcast.travel.domain;
import java.util.List;
/**
* @author 张天霸
* 分页对象
*/
public class PageBean<T> {
private int totalCount; //总记录数
private int totalPage; //总页数
private int currentPage; //当前页码
private int pageSize; //每页显示条数
private List<T> list; //每页显示的数据集合
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
}
AdminDaoImpl类中的方法
@Override
public int findTotalCount(String username) {
String sql = "select count(*) from admin where 1=1 ";
StringBuilder sb = new StringBuilder(sql);
List params = new ArrayList();
if (username != null && username.length() > 0 && !"null".equals(username)){
sb.append(" and username = ? ");
params.add(username);
}
sql = sb.toString();
return template.queryForObject(sql,Integer.class,params.toArray());
}
@Override
public List<Admin> findByPage(int start, int pageSize, String username) {
String sql = "select * from admin where 1=1 ";
StringBuilder sb = new StringBuilder(sql);
List params = new ArrayList();
if (username != null && username.length() > 0 && !"null".equals(username)){
params.add(username);
sb.append(" and username = ? ");
}
sb.append(" limit ? , ?");
params.add(start);
params.add(pageSize);
sql = sb.toString();
return template.query(sql,new BeanPropertyRowMapper<>(Admin.class),params.toArray());
}
AdminServiceImpl类中的方法
public PageBean<Admin> pageQuery(int currentPage, int pageSize, String username) {
PageBean<Admin> pb = new PageBean<>();
pb.setCurrentPage(currentPage);
pb.setPageSize(pageSize);
int totalCounte = adminDao.findTotalCount(username);
pb.setTotalCount(totalCounte);
int totalPage = totalCounte % pageSize == 0?totalCounte / pageSize : totalCounte / pageSize + 1;
pb.setTotalPage(totalPage);
int start = (currentPage - 1) * pageSize;
List<Admin> list = adminDao.findByPage(start,pageSize,username);
pb.setList(list);
return pb;
}
AdminServlet类中的方法
public void pageQuery(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String currentPageStr = request.getParameter("currentPage");
String pageSizeStr = request.getParameter("pageSize");
String username = request.getParameter("username");
int currentPage = 1;
if (currentPageStr != null && currentPageStr.length() > 0 && !"null".equals(currentPageStr)) {
currentPage = Integer.parseInt(currentPageStr);
}
int pageSize = 3;
if (pageSizeStr != null && pageSizeStr.length() > 0 && !"null".equals(pageSizeStr)) {
pageSize = Integer.parseInt(pageSizeStr);
}
PageBean<Admin> pb = adminService.pageQuery(currentPage, pageSize, username);
writeValue(pb, response);
}
admin-list.html
<!DOCTYPE html>
<html class="x-admin-sm">
<head>
<meta charset="UTF-8">
<title>欢迎页面-X-admin2.2</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" />
<link rel="stylesheet" href="./css/font.css">
<link rel="stylesheet" href="./css/xadmin.css">
<script src="./lib/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="./js/xadmin.js"></script>
<!--[if lt IE 9]>
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<script src="js/jquery-3.3.1.js"></script>
<script src="js/getParameter.js"></script>
<script src="js/dateToString.js"></script>
<script>
/*
<tr id="tr_admin">
<td>
<input type="checkbox" name="" lay-skin="primary">
</td>
<td>1</td>
<td>admin</td>
<td>18925139194</td>
<td>113664000@qq.com</td>
<td>超级管理员</td>
<td>2017-01-01 11:11:42</td>
<td class="td-status">
<span class="layui-btn layui-btn-normal layui-btn-mini">已启用</span></td>
<td class="td-manage">
<a onclick="member_stop(this,'10001')" href="javascript:;" title="启用">
<i class="layui-icon"></i>
</a>
<a title="编辑" onclick="xadmin.open('编辑','admin-edit.html')" href="javascript:;">
<i class="layui-icon"></i>
</a>
<a title="删除" onclick="member_del(this,'要删除的id')" href="javascript:;">
<i class="layui-icon"></i>
</a>
</td>
</tr>
<div id="div_page">
<a class="prev" href=""><<</a>
<a class="num" href="">1</a>
<span class="current">2</span>
<a class="num" href="">3</a>
<a class="num" href="">489</a>
<a class="next" href="">>></a>
</div>
*/
$(function () {
let currentPage = getParameter("currentPage");
let pageSize = getParameter("pageSize");
let username = getParameter("username");
load(null,null,username);
});
function load(currentPage,pageSize,username) {
$.get("admin/pageQuery",{currentPage:currentPage,pageSize:pageSize,username:username},function (pb) {
let lastPage;
lastPage = currentPage - 1;
if (lastPage < 1){
lastPage = 1;
}
let page_divs="";
let div_lastPage = '<a class="prev" href="javascript:load('+lastPage+','+pb.pageSize+','+username+')"><<</a>';
page_divs+=div_lastPage;
let begin;
let end;
if (pb.totalPage < 4){
begin = 1;
end = pb.totalPage;
}else {
begin = pb.currentPage - 1;
end = pb.currentPage + 2;
if (begin < 1){
begin = 1;
end = begin + 3;
}
if (end > pb.totalPage){
end = pb.totalPage;
begin = end - 3;
}
}
for (let i = 1; i <= pb.totalPage; i++) {
let div = "";
if (pb.currentPage == i){
div = '<a class="current" href="javascript:load('+i+','+pb.pageSize+','+username+')">'+i+'</a>';
page_divs+=div
}
else {
div = '<a class="num" href="javascript:load('+i+','+pb.pageSize+','+username+')">'+i+'</a>';
page_divs+=div;
}
}
let divs="";
for (let i = 0; i < pb.list.length; i++) {
let admin = pb.list[i];
let div ='<tr id="tr_admin">\n' +
' <td>\n' +
' <input type="checkbox" name="" lay-skin="primary">\n' +
' </td>\n' +
' <td>'+admin.aid+'</td>\n' +
' <td>'+admin.username+'</td>\n' +
' <td>'+admin.telephone+'</td>\n' +
' <td>'+admin.email+'</td>\n' +
' <td>'+admin.role+'</td>\n' +
' <td>'+dateToString(admin.date)+'</td>\n' +
' <td class="td-status">\n' +
' <span class="layui-btn layui-btn-normal layui-btn-mini">'+admin.status+'</span></td>\n' +
' <td class="td-manage">\n' +
' <a onclick="member_stop(this,\'10001\','+admin.aid+')" href="javascript:;" title="启用">\n' +
' <i class="layui-icon"></i>\n' +
' </a>\n' +
' <a title="编辑" onclick="xadmin.open(\'编辑\',\'admin-edit.html?username='+admin.username+'&aid='+admin.aid+'\')" href="javascript:;">\n' +
' <i class="layui-icon"></i>\n' +
' </a>\n' +
' <a title="删除" onclick="member_del(this,\'要删除的id\')" href="javascript:del('+admin.aid+')">\n' +
' <i class="layui-icon"></i>\n' +
' </a>\n' +
' </td>\n' +
' </tr>'
divs+=div;
}
let nextPage;
nextPage = currentPage + 1;
if (nextPage > pb.totalPage){
nextPage = pb.totalPage;
}
let div_nextPage = '<a class="next" href="javascript:load('+nextPage+','+pb.pageSize+','+username+')">>></a>';
page_divs+=div_nextPage;
$("#div_page").html(page_divs);
$("#tb_admin").html(divs);
});
}
function del(aid) {
$.get("admin/deleteAdmin",{aid:aid},function (info) {
if (info.flag){
alert("删除成功!")
location.reload();
}else {
alert(info.errorMsg);
}
});
}
</script>
</head>
<body>
<div class="x-nav">
<span class="layui-breadcrumb">
<a href="">首页</a>
<a href="">演示</a>
<a>
<cite>导航元素</cite></a>
</span>
<a class="layui-btn layui-btn-small" style="line-height:1.6em;margin-top:3px;float:right" onclick="location.reload()" title="刷新">
<i class="layui-icon layui-icon-refresh" style="line-height:30px"></i></a>
</div>
<div class="layui-fluid">
<div class="layui-row layui-col-space15">
<div class="layui-col-md12">
<div class="layui-card">
<div class="layui-card-body ">
<form class="layui-form layui-col-space5">
<div class="layui-inline layui-show-xs-block">
<input class="layui-input" autocomplete="off" placeholder="开始日" name="start" id="start">
</div>
<div class="layui-inline layui-show-xs-block">
<input class="layui-input" autocomplete="off" placeholder="截止日" name="end" id="end">
</div>
<div class="layui-inline layui-show-xs-block">
<input type="text" name="username" placeholder="请输入用户名" autocomplete="off" class="layui-input">
</div>
<div class="layui-inline layui-show-xs-block">
<button id="search_btn" class="layui-btn" lay-submit="" lay-filter="sreach" type="submit"><i class="layui-icon"></i></button>
</div>
</form>
</div>
<div class="layui-card-header">
<button class="layui-btn layui-btn-danger" onclick="delAll()"><i class="layui-icon"></i>批量删除</button>
<button class="layui-btn" onclick="xadmin.open('添加用户','./admin-add.html',600,400)"><i class="layui-icon"></i>添加</button>
</div>
<div class="layui-card-body ">
<table class="layui-table layui-form">
<thead>
<tr>
<th>
<input type="checkbox" name="" lay-skin="primary">
</th>
<th>ID</th>
<th>登录名</th>
<th>手机</th>
<th>邮箱</th>
<th>角色</th>
<th>加入时间</th>
<th>状态</th>
<th>操作</th>
</thead>
<tbody id="tb_admin">
<tr id="tr_admin">
<td>
<input type="checkbox" name="" lay-skin="primary">
</td>
<td>1</td>
<td>admin</td>
<td>18925139194</td>
<td>113664000@qq.com</td>
<td>超级管理员</td>
<td>2017-01-01 11:11:42</td>
<td class="td-status">
<span class="layui-btn layui-btn-normal layui-btn-mini">已启用</span></td>
<td class="td-manage">
<a onclick="member_stop(this,'10001')" href="javascript:;" title="启用">
<i class="layui-icon"></i>
</a>
<a title="编辑" onclick="xadmin.open('编辑','admin-edit.html')" href="javascript:;">
<i class="layui-icon"></i>
</a>
<a title="删除" onclick="member_del(this,'要删除的id')" href="javascript:;">
<i class="layui-icon"></i>
</a>
</td>
</tr>
</tbody>
</table>
</div>
<div class="layui-card-body ">
<div class="page">
<div id="div_page">
<a class="prev" href=""><<</a>
<a class="num" href="">1</a>
<span class="current">2</span>
<a class="num" href="">3</a>
<a class="num" href="">489</a>
<a class="next" href="">>></a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
<script>
layui.use(['laydate','form'], function(){
var laydate = layui.laydate;
var form = layui.form;
//执行一个laydate实例
laydate.render({
elem: '#start' //指定元素
});
//执行一个laydate实例
laydate.render({
elem: '#end' //指定元素
});
});
/*用户-停用*/
function member_stop(obj,id,aid){
layer.confirm('确认要停用吗?',function(index){
if($(obj).attr('title')=='已启用'){
//发异步把用户状态进行更改
$(obj).attr('title','已停用')
$(obj).find('i').html('');
$(obj).parents("tr").find(".td-status").find('span').addClass('layui-btn-disabled').html('已停用');
$.get("admin/stopStatus",{aid:aid},function () {
});
layer.msg('已停用!',{icon: 5,time:1000});
}else{
$(obj).attr('title','已启用')
$(obj).find('i').html('');
$(obj).parents("tr").find(".td-status").find('span').removeClass('layui-btn-disabled').html('已启用');
$.get("admin/startStatus",{aid:aid},function () {
});
layer.msg('已启用!',{icon: 5,time:1000});
}
});
}
// /*用户-删除*/
// function member_del(obj,id){
// layer.confirm('确认要删除吗?',function(index){
// //发异步删除数据
// $(obj).parents("tr").remove();
// layer.msg('已删除!',{icon:1,time:1000});
// });
// }
function delAll (argument) {
var data = tableCheck.getData();
layer.confirm('确认要删除吗?'+data,function(index){
//捉到所有被选中的,发异步进行删除
layer.msg('删除成功', {icon: 1});
$(".layui-form-checked").not('.header').parents('tr').remove();
});
}
</script>
<script>var _hmt = _hmt || []; (function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?b393d153aeb26b46e9431fabaf0f6190";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();</script>
</html>
效果展示
添加管理员功能
Admin类(同上)
AdminDaoImpl类中的方法
@Override
public Admin findByUsername(String username) {
String sql = "select * from admin where username = ?";
Admin admin = null;
try {
admin = template.queryForObject(sql, new BeanPropertyRowMapper<>(Admin.class), username);
} catch (DataAccessException e) {
e.printStackTrace();
}
return admin;
}
@Override
public Admin findByTelephone(String telephone) {
String sql = "select * from admin where telephone = ?";
Admin admin = null;
try {
admin = template.queryForObject(sql, new BeanPropertyRowMapper<>(Admin.class), telephone);
} catch (DataAccessException e) {
e.printStackTrace();
}
return admin;
}
@Override
public Admin findByEmail(String email) {
String sql = "select * from admin where email = ?";
Admin admin = null;
try {
admin = template.queryForObject(sql, new BeanPropertyRowMapper<>(Admin.class), email);
} catch (DataAccessException e) {
e.printStackTrace();
}
return admin;
}
@Override
public void insertAdmin(String username, String telephone, String email, String role) {
Date date = new Date();
String sql = "insert into admin values(null,?,?,?,?,?,'已启用')";
template.update(sql,username,telephone,email,role,date);
}
@Override
public void insertUser(String username, String password) {
String sql = "insert into user values(null,?,?)";
template.update(sql,username,password);
}
AdminServiceImpl类中的方法
@Override
public void addAdmin(String username, String telephone, String email, String role) {
adminDao.insertAdmin(username, telephone, email, role);
}
@Override
public void addUser(String username, String password) {
adminDao.insertUser(username,password);
}
@Override
public Admin findByUsername(String username) {
return adminDao.findByUsername(username);
}
@Override
public Admin findByTelephone(String telephone) {
return adminDao.findByTelephone(telephone);
}
@Override
public Admin findByEmail(String email) {
return adminDao.findByEmail(email);
}
AdminServlet类中的方法
public void addAdmin(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String telephone = request.getParameter("telephone");
String email = request.getParameter("email");
String role = request.getParameter("role");
String password = request.getParameter("password");
role = new String(role.getBytes("iso-8859-1"), "utf-8");
ResultInfo info = new ResultInfo();
Admin byUsername = adminService.findByUsername(username);
if (byUsername != null) {
info.setFlag(false);
info.setErrorMsg("登录名已被使用!");
writeValue(info, response);
return;
}
Admin byTelephone = adminService.findByTelephone(telephone);
if (byTelephone != null) {
info.setFlag(false);
info.setErrorMsg("电话已被使用!");
writeValue(info, response);
return;
}
Admin byEmail = adminService.findByEmail(email);
if (byEmail != null) {
info.setFlag(false);
info.setErrorMsg("邮箱已被使用!");
writeValue(info, response);
return;
}
adminService.addAdmin(username, telephone, email, role);
adminService.addUser(username, password);
info.setFlag(true);
writeValue(info, response);
}
admin-add.html
<!DOCTYPE html>
<html class="x-admin-sm">
<head>
<meta charset="UTF-8">
<title>欢迎页面-X-admin2.2</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport"
content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi"/>
<link rel="stylesheet" href="./css/font.css">
<link rel="stylesheet" href="./css/xadmin.css">
<script type="text/javascript" src="./lib/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="./js/xadmin.js"></script>
<!-- 让IE8/9支持媒体查询,从而兼容栅格 -->
<!--[if lt IE 9]>
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<script src="js/jquery-3.3.1.js"></script>
<script>
// $(function () {
// $("#btn").click(function () {
// $.get("admin/addAdmin", $("#admin_form").serialize(), function (info) {
// if (info.flag) {
// location.href = "index.html";
// // //关闭当前frame
// xadmin.close();
// //
// // // 可以对父窗口进行刷新
// xadmin.father_reload();
// } else {
// alert(info.errorMsg);
// }
// });
// });
// });
</script>
</head>
<body>
<div class="layui-fluid">
<div class="layui-row">
<form class="layui-form" id="admin_form">
<div class="layui-form-item">
<label for="username" class="layui-form-label">
<span class="x-red">*</span>登录名
</label>
<div class="layui-input-inline">
<input type="text" id="username" name="username" required="" lay-verify="required"
autocomplete="off" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>将会成为您唯一的登入名
</div>
</div>
<div class="layui-form-item">
<label for="phone" class="layui-form-label">
<span class="x-red">*</span>手机
</label>
<div class="layui-input-inline">
<input type="text" id="phone" name="telephone" required="" lay-verify="phone"
autocomplete="off" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>将会成为您唯一的登入名
</div>
</div>
<div class="layui-form-item">
<label for="L_email" class="layui-form-label">
<span class="x-red">*</span>邮箱
</label>
<div class="layui-input-inline">
<input type="text" id="L_email" name="email" required="" lay-verify="email"
autocomplete="off" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="x-red">*</span>角色</label>
<div class="layui-input-block">
<input type="radio" name="role" lay-skin="primary" title="超级管理员" value="超级管理员" checked="">
<input type="radio" name="role" lay-skin="primary" title="编辑人员" value="编辑人员">
<input type="radio" name="role" lay-skin="primary" title="宣传人员" value="宣传人员">
</div>
</div>
<div class="layui-form-item">
<label for="L_pass" class="layui-form-label">
<span class="x-red">*</span>密码
</label>
<div class="layui-input-inline">
<input type="password" id="L_pass" name="password" required="" lay-verify="pass"
autocomplete="off" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux">
6到16个字符
</div>
</div>
<div class="layui-form-item">
<label for="L_repass" class="layui-form-label">
<span class="x-red">*</span>确认密码
</label>
<div class="layui-input-inline">
<input type="password" id="L_repass" name="repassword" required="" lay-verify="repass"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label for="L_repass" class="layui-form-label">
</label>
<button id="btn" class="layui-btn" lay-filter="add" lay-submit="" type="submit">
增加
</button>
</div>
</form>
</div>
</div>
<script>
layui.use(['form', 'layer'], function () {
$ = layui.jquery;
var form = layui.form,
layer = layui.layer;
//自定义验证规则
form.verify({nikename: function (value) {
if (value.length < 5) {
return '昵称至少得5个字符啊';
}
},
pass: [/(.+){6,12}$/, '密码必须6到12位'],
repass: function (value) {
if ($('#L_pass').val() != $('#L_repass').val()) {
return '两次密码不一致';
}
}
});
//监听提交
form.on('submit(add)',
function(data) {
console.log(data);
//发异步,把数据提交给php
layer.alert("增加成功", {
icon: 6
},
function() {
//关闭当前frame
xadmin.close();
// 可以对父窗口进行刷新
xadmin.father_reload();
});
return false;
});
});
$(function () {
$("#btn").click(function () {
$.get("admin/addAdmin", $("#admin_form").serialize(), function (info) {
if (info.flag) {
location.href = "index.html";
// //关闭当前frame
xadmin.close();
//
// // 可以对父窗口进行刷新
xadmin.father_reload();
} else {
alert(info.errorMsg);
}
});
});
});
</script>
<script>
var _hmt = _hmt || [];(function () {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?b393d153aeb26b46e9431fabaf0f6190";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
</body>
</html>
功能展示
删除管理员功能
Admin类(同上)
AdminDaoImpl类中的方法
@Override
public String findUsernameByAid(int aid) {
String sql = "select username from admin where aid = ?";
String username = null;
try {
username = template.queryForObject(sql, String.class, aid);
} catch (DataAccessException e) {
e.printStackTrace();
}
return username;
}
@Override
public void deleteAdmin(int aid) {
String sql = "delete from admin where aid = ?";
template.update(sql,aid);
}
@Override
public void deleteUser(String username) {
String sql = "delete from user where username = ?";
template.update(sql, username);
}
AdminServiceImpl类中的方法
@Override
public Boolean deleteAdminAndUser(int aid) {
Boolean flag = true;
//检验是否有该管理员
String username = adminDao.findUsernameByAid(aid);
if (username == null){
flag = false;
return flag;
}
//删除管理员
adminDao.deleteAdmin(aid);
//删除用户
adminDao.deleteUser(username);
return flag;
}
AdminServlet类中的方法
public void deleteAdmin(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String aidStr = request.getParameter("aid");
ResultInfo info = new ResultInfo();
int aid = 0;
if (aidStr != null && aidStr.length() > 0 && !"null".equals(aidStr)) {
aid = Integer.parseInt(aidStr);
}
Boolean flag = adminService.deleteAdminAndUser(aid);
if (flag){
info.setFlag(true);
}else {
info.setFlag(false);
info.setErrorMsg("没有此管理员!");
}
writeValue(info,response);
}
admin-list.html(同上)
功能展示
(删除前)
(删除后)
编辑管理员功能
Admin类(同上)
AdminDaoImpl类中的方法
@Override
public Admin findByUsername(String username) {
String sql = "select * from admin where username = ?";
Admin admin = null;
try {
admin = template.queryForObject(sql, new BeanPropertyRowMapper<>(Admin.class), username);
} catch (DataAccessException e) {
e.printStackTrace();
}
return admin;
}
@Override
public Admin findByTelephone(String telephone) {
String sql = "select * from admin where telephone = ?";
Admin admin = null;
try {
admin = template.queryForObject(sql, new BeanPropertyRowMapper<>(Admin.class), telephone);
} catch (DataAccessException e) {
e.printStackTrace();
}
return admin;
}
@Override
public Admin findByEmail(String email) {
String sql = "select * from admin where email = ?";
Admin admin = null;
try {
admin = template.queryForObject(sql, new BeanPropertyRowMapper<>(Admin.class), email);
} catch (DataAccessException e) {
e.printStackTrace();
}
return admin;
}
@Override
public void setAdminByAid(int aid, String username, String telephone, String email, String role) {
String sql = "update admin set username=?,telephone=?,email=?,role=? where aid = ?";
template.update(sql,username,telephone,email,role,aid);
}
@Override
public void setUserByUid(int uid, String username, String password) {
String sql = "update user set username=?,password=? where uid = ?";
template.update(sql,username,password,uid);
}
AdminServiceImpl类中的方法
@Override
public Boolean editAdminAndUser(int aid, String username, String telephone, String email, String role, String password, int uid) {
Boolean flag = true;
Admin byUsername = adminDao.findByUsername(username);
if (byUsername != null && byUsername.getAid() != aid){
flag = false;
return flag;
}
Admin byTelephone = adminDao.findByTelephone(telephone);
if (byTelephone != null && byTelephone.getAid() != aid){
flag = false;
return flag;
}
Admin byEmail = adminDao.findByEmail(email);
if (byEmail != null && byEmail.getAid() != aid){
flag = false;
return flag;
}
//编辑管理员
adminDao.setAdminByAid(aid,username,telephone,email,role);
//编辑用户
adminDao.setUserByUid(uid,username,password);
return flag;
}
AdminServlet类中的方法
public void editAdmin(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Integer uid = (Integer)request.getSession().getAttribute("uid");
System.out.println(uid);
request.getSession().removeAttribute("uid");
String aidStr = request.getParameter("aid");
String username = request.getParameter("username");
String telephone = request.getParameter("telephone");
String email = request.getParameter("email");
String role = request.getParameter("role");
role = new String(role.getBytes("iso-8859-1"), "utf-8");
String password = request.getParameter("password");
ResultInfo info = new ResultInfo();
int aid = 0;
if (aidStr != null && aidStr.length() > 0 && !"null".equals(aidStr)) {
aid = Integer.parseInt(aidStr);
}
Boolean flag = adminService.editAdminAndUser(aid,username,telephone,email,role,password,uid);
if (flag){
info.setFlag(true);
}else {
info.setFlag(false);
info.setErrorMsg("登录名,电话或邮箱已存在!");
}
writeValue(info,response);
}
admin-edit.html
<!DOCTYPE html>
<html class="x-admin-sm">
<head>
<meta charset="UTF-8">
<title>欢迎页面-X-admin2.2</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport"
content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi"/>
<link rel="stylesheet" href="./css/font.css">
<link rel="stylesheet" href="./css/xadmin.css">
<script type="text/javascript" src="./lib/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="./js/xadmin.js"></script>
<!-- 让IE8/9支持媒体查询,从而兼容栅格 -->
<!--[if lt IE 9]>
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<script src="js/jquery-3.3.1.js"></script>
<script src="js/getParameter.js"></script>
</head>
<body>
<div class="layui-fluid">
<div class="layui-row">
<form class="layui-form" id="form">
<div class="layui-form-item">
<label for="username" class="layui-form-label">
<span class="x-red">*</span>登录名
</label>
<div class="layui-input-inline">
<input type="text" id="username" name="username" required="" lay-verify="required"
autocomplete="off" class="layui-input" value="">
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>将会成为您唯一的登入名
</div>
</div>
<div class="layui-form-item">
<label for="phone" class="layui-form-label">
<span class="x-red">*</span>手机
</label>
<div class="layui-input-inline">
<input type="text" id="phone" name="telephone" required="" lay-verify="phone"
autocomplete="off" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>将会成为您唯一的登入名
</div>
</div>
<div class="layui-form-item">
<label for="L_email" class="layui-form-label">
<span class="x-red">*</span>邮箱
</label>
<div class="layui-input-inline">
<input type="text" id="L_email" name="email" required="" lay-verify="email"
autocomplete="off" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="x-red">*</span>角色</label>
<div class="layui-input-block">
<input type="radio" name="role" lay-skin="primary" title="超级管理员" checked="" value="超级管理员">
<input type="radio" name="role" lay-skin="primary" title="编辑人员" value="编辑人员">
<input type="radio" name="role" lay-skin="primary" title="宣传人员" value="宣传人员">
</div>
</div>
<div class="layui-form-item">
<label for="L_pass" class="layui-form-label">
<span class="x-red">*</span>密码
</label>
<div class="layui-input-inline">
<input type="password" id="L_pass" name="password" required="" lay-verify="pass"
autocomplete="off" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux">
6到16个字符
</div>
</div>
<div class="layui-form-item">
<label for="L_repass" class="layui-form-label">
<span class="x-red">*</span>确认密码
</label>
<div class="layui-input-inline">
<input type="password" id="L_repass" name="repass" required="" lay-verify="repass"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label for="L_repass" class="layui-form-label">
</label>
<button id="edit_btn" class="layui-btn" lay-filter="add" lay-submit="" type="submit">
增加
</button>
</div>
</form>
</div>
</div>
<script>layui.use(['form', 'layer'],
function () {
$ = layui.jquery;
var form = layui.form,
layer = layui.layer;
//自定义验证规则
form.verify({
nikename: function (value) {
if (value.length < 5) {
return '昵称至少得5个字符啊';
}
},
pass: [/(.+){6,12}$/, '密码必须6到12位'],
repass: function (value) {
if ($('#L_pass').val() != $('#L_repass').val()) {
return '两次密码不一致';
}
}
});
//监听提交
form.on('submit(add)',
function (data) {
console.log(data);
//发异步,把数据提交给php
layer.alert("增加成功", {
icon: 6
},
function () {
//关闭当前frame
xadmin.close();
// 可以对父窗口进行刷新
xadmin.father_reload();
});
return false;
});
});
// function saveUid(username) {
// $.get("user/saveUid", {username: username}, function (data) {
//
// });
// }
$(function () {
let list_username = getParameter("username");
let aid = getParameter("aid")
$("#edit_btn").click(function () {
let username = $("#username").val();
let telephone = $("#phone").val();
let email = $("#L_email").val();
let role = $("input[name='role']:checked").val();
let password = $("#L_pass").val();
$.get("user/saveUid", {username: list_username}, function (data) {
$.get("admin/editAdmin",{aid:aid,username:username,telephone:telephone,email:email,role:role,password:password} , function (info) {
if (info.flag) {
location.href = "index.html";
// //关闭当前frame
xadmin.close();
//
// // 可以对父窗口进行刷新
xadmin.father_reload();
} else {
alert(info.errorMsg);
}
});
});
});
})
</script>
<script>var _hmt = _hmt || [];
(function () {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?b393d153aeb26b46e9431fabaf0f6190";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();</script>
</body>
</html>
功能展示
改变管理员状态功能
Admin类(同上)
AdminDaoImpl类中的方法
@Override
public void stopStatus(int aid) {
String sql = "update admin set status='已停用' where aid = ?";
template.update(sql,aid);
}
@Override
public void startStatus(int aid) {
String sql = "update admin set status='已启用' where aid = ?";
template.update(sql,aid);
}
AdminServiceImpl类中的方法
@Override
public void stopStatus(int aid) {
adminDao.stopStatus(aid);
}
@Override
public void startStatus(int aid) {
adminDao.startStatus(aid);
}
AdminServlet类中的方法
/*
状态改用已停用
*/
public void stopStatus(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String aidStr = request.getParameter("aid");
int aid = 0;
if (aidStr != null && aidStr.length() > 0 && !"null".equals(aidStr)){
aid = Integer.parseInt(aidStr);
}
adminService.stopStatus(aid);
}
/*
状态改用已启用
*/
public void startStatus(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String aidStr = request.getParameter("aid");
int aid = 0;
if (aidStr != null && aidStr.length() > 0 && !"null".equals(aidStr)){
aid = Integer.parseInt(aidStr);
}
adminService.startStatus(aid);
}
admin-list.html(同上)
功能展示
由于代码过多,下个博客介绍订单和用户的功能。