完成管理员书籍数据分页

pull/1/head
you 5 years ago
parent 537f0a3a07
commit 940d09fed0

@ -1,3 +1,5 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
@ -76,19 +78,6 @@
</div>
</div>
</form>
<script>
window.onload = function(){
layer.open({
type: 2,
title: "test",
area: ['800px', '600px'],
closeBtn: 0,
shadeClose: true,
content: "booklist.html"
});
}
</script>
<script>

@ -0,0 +1,90 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>bookadd</title>
<!-- layui -->
<link rel="stylesheet" href="../public/layui/css/layui.css">
<script src="../public/layui/layui.js"></script>
<style>
.layui-form{
margin-top: 10px;
margin-right: 10px;
}
</style>
</head>
<body>
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">书名</label>
<div class="layui-input-block">
<input type="text" name="title" required lay-verify="required" placeholder="请输入书名" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">图书馆</label>
<div class="layui-input-block">
<select name="library_id" lay-verify="required">
<option value=""></option>
<option value="0">南图</option>
<option value="1">北图</option>
<option value="2">第三图书馆</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">分类</label>
<div class="layui-input-block">
<select name="sort_id" lay-verify="required">
<option value=""></option>
<option value="1">幽默</option>
<option value="2">护理</option>
<option value="3">编程</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">位置</label>
<div class="layui-input-block">
<input type="text" name="position" required lay-verify="required" placeholder="请输入位置编号" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-block">
<input type="radio" name="status" value="1" title="可借" checked>
<input type="radio" name="status" value="0" title="不可借">
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">书籍简介</label>
<div class="layui-input-block">
<textarea name="description" placeholder="请输入内容" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="formDemo">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
<script>
layui.use('form', function(){
var form = layui.form;
//监听提交
form.on('submit(formDemo)', function(data){
layer.msg(JSON.stringify(data.field));
return false;
});
});
</script>
</body>
</html>

@ -0,0 +1,153 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>test</title>
<!-- layui -->
<link rel="stylesheet" href="../public/layui/css/layui.css">
<script src="../public/layui/layui.js"></script>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<style>
.layui-table, .layui-table-view{
margin-top: 0px;
}
</style>
</head>
<body>
<!-- 搜索框 -->
<script type="text/html" id="search">
<div class="demoTable">
条件搜索:
<div class="layui-inline">
<select id="condition" name="condition" lay-verify="required">
<option value=""></option>
<option value="id">id</option>
<option value="name">书名</option>
<option value="library">图书馆</option>
<option value="position">位置</option>
<option value="status">状态</option>
<option value="description">描述</option>
</select>
</div>
<div class="layui-inline">
<input class="layui-input" name="conditionValue" id="conditionValue" autocomplete="off">
</div>
<button class="layui-btn" data-type="reload" lay-event="search">搜索</button>
</div>
</script>
<!-- 表单 -->
<table id="demo" lay-filter="form">
</table>
<!-- 行操作 -->
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
<script>
layui.use('table',function(){
var table = layui.table;
var tableIns = table.render({
elem: '#demo'
,height: 600
//,url: './data.json'
,url: './bookList'
,title: '数据表单'
,toolbar: '#search'
,page: true
//,size: 'lg'
,cols: [[
{type: 'numbers', width:50, fixed:'left'}
,{field: 'id', title: 'ID', width:80, sort: true, fixed: 'left'}
,{field: 'name', title: '书名', width:180}
,{field: 'library_id', title: '图书馆†', width:80, edit: true}
,{field: 'sort_id', title: '分类', width: 100}
,{field: 'position', title: '位置', width: 80, sort: true}
,{field: 'status', title: '状态', width: 80, sort: true}
,{field: 'description', title: '描述', width: 280}
//,{field: 'operate', title: '操作', width: 200, templet: '#operate'}
,{fixed: 'right', title:'操作', width:150, align:'center', toolbar: '#barDemo'} //这里的toolbar值是模板元素的选择器
]]
,id: 'idTest'
});
// 直接编辑
table.on('edit(form)', function(obj){ //注edit是固定事件名test是table原始容器的属性 lay-filter="对应的值"
console.log(obj.value); //得到修改后的值
console.log(obj.field); //当前编辑的字段名
console.log(obj.data); //所在行的所有相关数据
});
// 监听工具条 编辑,删除
table.on('tool(form)', function(obj){ //注tool 是工具条事件名test 是 table 原始容器的属性 lay-filter="对应的值"
var data = obj.data; //获得当前行数据
var layEvent = obj.event; //获得 lay-event 对应的值(也可以是表头的 event 参数对应的值)
var tr = obj.tr; //获得当前行 tr 的 DOM 对象(如果有的话)
var id = data.id;
if(layEvent === 'del'){ //删除
layer.confirm('真的删除行么', function(index){
obj.del(); //删除对应行tr的DOM结构并更新缓存
layer.close(index);
//向服务端发送删除指令
});
} else if(layEvent === 'edit'){ //编辑
//do something
layer.open({
type: 2,
title: "更改信息",
area: ['800px', '600px'],
maxmin: true, //开启最大化最小化按钮
shadeClose: true,
content: "bookedit.jsp?id="+ id
});
//同步更新缓存对应的值
obj.update({
username: '123'
,title: 'xxx'
});
} else if(layEvent === 'LAYTABLE_TIPS'){
layer.alert('Hi头部工具栏扩展的右侧图标。');
}
});
// 工具栏事件
table.on('toolbar(form)', function(obj){
var checkStatus = table.checkStatus(obj.config.id);
var data = obj.data;
switch(obj.event){
case 'search':
var conditionValue = $('#conditionValue');
var condition = $('#condition');
//这里以搜索为例
tableIns.reload({
where: { //设定异步数据接口的额外参数,任意设
"condition": condition.val(),
"conditionValue": conditionValue.val()
}
,page: {
curr: 1 //重新从第 1 页开始
}
});
break;
};
});
});
</script>
</body>
</html>

@ -1,3 +1,5 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
@ -17,25 +19,25 @@
</table>
<script type="text/html" id="operate">
<button type="button" class="layui-btn layui-btn-warm">编辑</button>
<button type="button" class="layui-btn layui-btn-warm">修改</button>
<button type="button" class="layui-btn layui-btn-danger">删除</button>
</script>
<script>
layui.use('table', function(){
var table = layui.table;
//第一个实例
var table = layui.table;‹
table.render({
elem: '#demo'
,height: 600
//,url: './data.json' //数据接口
//,url: './data.json'
,url: './bookList'
,page: true //开启分页
,title: '数据表单'
,toolbar: true
,page: true
,size: 'lg'
,cols: [[ //表头
,cols: [[
{field: 'id', title: 'ID', width:80, sort: true, fixed: 'left'}
,{field: 'name', title: '名', width:120}
,{field: 'library_name', title: '图书馆', width:80}
,{field: 'name', title: '名', width:120}
,{field: 'library_name', title: '图书馆†', width:80}
,{field: 'sort_id', title: '分类', width: 177}
,{field: 'position_id', title: '位置', width: 80, sort: true}
,{field: 'state', title: '状态', width: 80, sort: true}

@ -1,3 +1,5 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>

@ -1 +1 @@
{"code":0,"msg":"","count":1000,"data":[{"id":10000,"name":"夏洛特的烦恼","library_name":"南图","sort_id":"言情","position_id":"sdf","state":"借出","descript":"好看","operate":"234"},{"id":10000,"name":"夏洛特的烦恼","library_name":"南图","sort_id":"言情","position_id":"sdf","state":"借出","descript":"好看","operate":"234"},{"id":10000,"name":"夏洛特的烦恼","library_name":"南图","sort_id":"言情","position_id":"sdf","state":"借出","descript":"好看","operate":"234"},{"id":10010,"name":"夏洛特的烦恼","library_name":"南图","sort_id":"言情","position_id":"sdf","state":"借出","descript":"好看","operate":"234"}]}
{"code":0,"msg":"","count":10,"data":[{"id":10000,"name":"夏洛特的烦恼","library_name":"南图","sort_id":"言情","position_id":"sdf","state":"借出","descript":"好看","operate":"234"},{"id":10000,"name":"夏洛特的烦恼","library_name":"南图","sort_id":"言情","position_id":"sdf","state":"借出","descript":"好看","operate":"234"},{"id":10000,"name":"夏洛特的烦恼","library_name":"南图","sort_id":"言情","position_id":"sdf","state":"借出","descript":"好看","operate":"234"},{"id":10010,"name":"夏洛特的烦恼","library_name":"南图","sort_id":"言情","position_id":"sdf","state":"借出","descript":"好看","operate":"234"}]}

@ -4,7 +4,7 @@
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<title>系统管理员</title>
<!-- layui -->
<link rel="stylesheet" href="../public/layui/css/layui.css">
<script src="../public/layui/layui.js"></script>
@ -47,14 +47,14 @@
<!-- 左侧导航区域可配合layui已有的垂直导航 -->
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed">
<a class="" href="./booklist.html" target="content"><i class="layui-icon layui-icon-read" style="font-size: 16px; color: #1E9FFF;"></i> 书籍管理</a>
<a class="" href="./booklist.jsp" target="content"><i class="layui-icon layui-icon-read" style="font-size: 16px; color: #1E9FFF;"></i> 书籍管理</a>
</li>
<li class="layui-nav-item">
<a href="./cardlist.html" target="content"><i class="layui-icon layui-icon-template-1" style="font-size: 16px; color: #1E9FFF;"> </i>读书证管理</a>
<a href="./cardlist.jsp" target="content"><i class="layui-icon layui-icon-template-1" style="font-size: 16px; color: #1E9FFF;"> </i>读书证管理</a>
</li>
<li class="layui-nav-item"><a href="./rulelist.html" target="content"><i class="layui-icon layui-icon-file-b" style="font-size: 16px; color: #1E9FFF;"> </i>借阅规则管理</a></li>
<li class="layui-nav-item"><a href="./managelist.html" target="content"><i class="layui-icon layui-icon-group" style="font-size: 16px; color: #1E9FFF;"></i>图书管理员管理</a></li>
<li class="layui-nav-item"><a href="./system.html" target="content"><i class="layui-icon layui-icon-windows" style="font-size: 16px; color: #1E9FFF;"> </i>系统管理</a></li>
<li class="layui-nav-item"><a href="./rulelist.jsp" target="content"><i class="layui-icon layui-icon-file-b" style="font-size: 16px; color: #1E9FFF;"> </i>借阅规则管理</a></li>
<li class="layui-nav-item"><a href="./managelist.jsp" target="content"><i class="layui-icon layui-icon-group" style="font-size: 16px; color: #1E9FFF;"></i>图书管理员管理</a></li>
<li class="layui-nav-item"><a href="./system.jsp" target="content"><i class="layui-icon layui-icon-windows" style="font-size: 16px; color: #1E9FFF;"> </i>系统管理</a></li>
</ul>
</div>
</div>
@ -69,7 +69,6 @@
© layui.com - 底部固定区域
</div>
</div>
<script src="../src/layui.js"></script>
<script>
//JavaScript代码区域
layui.use('element', function(){

@ -0,0 +1,3 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
managelist.html

@ -0,0 +1,3 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
rulelist.html

@ -0,0 +1,3 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
system.html

Binary file not shown.

@ -4,6 +4,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class Admin {
/**
@ -32,9 +37,100 @@ public class Admin {
pstmt.setString(1, username);
pstmt.setString(2, password);
resultSet = pstmt.executeQuery();
if (resultSet.next()) {
return "1";
try{
if (resultSet.next()) {
return "1";
}
}catch(Exception e) {
return "发生未知错误";
}finally {
if(Base.closeResource(connection, pstmt, resultSet) == false) {
System.out.println("关闭失败");
}
}
return "账号或密码错误";
}
/**
*
* @param page
* @param limit
* @return String json
* @throws ClassNotFoundException
* @throws SQLException
*/
public Map getBookList(String page, String limit, Map where) throws ClassNotFoundException, SQLException {
Map<String, Object> map = new HashMap<String, Object>();
String whereString = "";
Connection connection = null;
PreparedStatement pstmt = null;
ResultSet resultSet = null;
connection = Base.getConnection();
int number = Integer.valueOf(page);
int size = Integer.valueOf(limit);
String sql = "select * from books ";
if(where!=null && !where.isEmpty()) {
whereString += " where "+where.get("condition") +" like '%" +where.get("conditionValue") +"%' ";
sql += whereString;
}
sql += " limit ?,? ";
System.out.println("sql: " +sql);
pstmt = (PreparedStatement) connection.prepareStatement(sql);
pstmt.setInt(1, (number-1) * size );
pstmt.setInt(2, size);
resultSet = pstmt.executeQuery();
JSONObject json = new JSONObject();
String result = "";
int i = 1;
// 获取行数据
while( resultSet.next() ) {
//System.out.println("????-------" +resultSet.getInt("count"));
json.put("id", resultSet.getInt("id"));
json.put("name", resultSet.getString("name"));
json.put("library_id", resultSet.getInt("library_id"));
json.put("sort_id", resultSet.getInt("sort_id"));
json.put("position", resultSet.getString("position"));
json.put("status", resultSet.getInt("status"));
json.put("description", resultSet.getString("description"));
if(i==1) {
result = json.toString();
}else {
result += "," +json.toString();
}
i++;
}
System.out.println("result: " +result);
map.put("data", result);
// 获取总数count重写sql
int count = 0;
sql = "select count(*) as count from books ";
if(where!=null && !where.isEmpty()) {
//sql += " where "+where.get("condition") +" = " +where.get("conditionValue");
sql += whereString;
}
System.out.println("countSql: " +sql);
pstmt = connection.prepareStatement(sql);
resultSet = pstmt.executeQuery();
if(resultSet.next()) {
count = resultSet.getInt("count");
}
System.out.println("count" +count);
map.put("count:", count);
Base.closeResource(connection, pstmt, resultSet);
return map;
}
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//Common common = new Common();
//System.out.println(common.getCount("books"));
Admin admin = new Admin();
//Map map = admin.getBookList("1", "100");
//System.out.println( map.get("count"));
}
}

@ -10,7 +10,7 @@ import java.sql.SQLException;
public class Base {
private static String driver = "com.mysql.jdbc.Driver";
private static String url = "jdbc:mysql://localhost:3306/library?&useSSL=false&serverTimezone=UTC";
private static String url = "jdbc:mysql://localhost:3306/library?&useSSL=false&serverTimezone=UTC&userUnicode=true&characterEncoding=UTF-8";
private static String username = "root";
private static String password = "root";

@ -0,0 +1,35 @@
package javabean;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Common {
/**
*
* @return
* @throws SQLException
* @throws ClassNotFoundException
*/
public static int getCount(String table) throws SQLException, ClassNotFoundException {
if(table == null || table.equals("")) {
return 0;
}
Connection connection = null;
PreparedStatement pstmt = null;
ResultSet resultSet = null;
connection = Base.getConnection();
try {
pstmt = connection.prepareStatement("select count(*) as count from " +table);
resultSet = pstmt.executeQuery();
resultSet.next();
return resultSet.getInt("count");
}catch(Exception e) {
return 0;
}finally {
Base.closeResource(connection, pstmt, resultSet);
}
}
}

@ -7,7 +7,7 @@ import java.sql.Statement;
public class JDBCBean {
private static String driver = "com.mysql.jdbc.Driver";
private static String url = "jdbc:mysql://localhost:3306/library?&useSSL=false&serverTimezone=UTC";
private static String url = "jdbc:mysql://localhost:3306/library?&useSSL=false&serverTimezone=UTC&userUnicode=true&characterEncoding=UTF-8";
private static String username = "root";
private static String password = "root";
private Connection conn = null;

@ -0,0 +1,17 @@
package javabean;
public class Util {
/**
* json
* @param str
* @param contain
* @return
*/
public static int getCountString(String str, String contain) {
int count = ( str.length()-str.replace(contain, "").length() ) / contain.length();
return count;
}
public static void main(String[] args) {
System.out.println(Util.getCountString("234{sdf{sdf{", "{"));
}
}

@ -2,6 +2,9 @@ package servlet.admin;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
@ -9,6 +12,12 @@ import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javabean.Admin;
import javabean.Common;
import javabean.Util;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
/**
* Servlet implementation class BookList
*/
@ -17,18 +26,59 @@ public class BookList extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//PrintWriter out = resp.getWriter();
// out.print("????");
// TODO Auto-generated method stub
doPost(req, resp);
resp.setContentType("application/json; charset=utf8");
JSONObject json = new JSONObject();
String result = null;
Map<String, Object> map = null;
int code = 1;
String msg = "";
String data = "";
String page = (String) req.getParameter("page");
String limit = (String) req.getParameter("limit");
String condition = (String) req.getParameter("condition");
String conditionValue = (String) req.getParameter("conditionValue");
Map where = new HashMap<String, String>();
System.out.println(condition +"" +conditionValue);
// 传输数据过滤
if(page == null) {
page = "1";
}
if(limit == null) {
limit = "10";
}
if(condition == null || conditionValue == null || condition.isEmpty() || conditionValue.isEmpty()) {
condition = null;
conditionValue = null;
}else {
where.put("condition", condition);
where.put("conditionValue", conditionValue);
}
Admin admin = new Admin();
try {
map = admin.getBookList(page, limit, where);
result = (String) map.get("data");
} catch (ClassNotFoundException | SQLException e) {
msg = "数据库获取信息失败";
}
if(result == null || result.isEmpty() || result.equals("1")) {
json.put("code", 1);
json.put("msg", "数据为空");
} else {
json.put("code", 0);
json.put("msg", "success");
json.put("count", map.get("count"));
result = "[" +result +"]";
json.put("data", result);
}
PrintWriter out = resp.getWriter();
out.print(json.toString());
//out.print("{\"code\":0,\"msg\":\"\",\"count\":10,\"data\":[{\"id\":10000,\"name\":\"夏洛特的烦恼\",\"library_name\":\"南图\",\"sort_id\":\"言情\",\"position_id\":\"sdf\",\"state\":\"借出\",\"descript\":\"好看\",\"operate\":\"234\"},{\"id\":10000,\"name\":\"夏洛特的烦恼\",\"library_name\":\"南图\",\"sort_id\":\"言情\",\"position_id\":\"sdf\",\"state\":\"借出\",\"descript\":\"好看\",\"operate\":\"234\"},{\"id\":10000,\"name\":\"夏洛特的烦恼\",\"library_name\":\"南图\",\"sort_id\":\"言情\",\"position_id\":\"sdf\",\"state\":\"借出\",\"descript\":\"好看\",\"operate\":\"234\"},{\"id\":10010,\"name\":\"夏洛特的烦恼\",\"library_name\":\"南图\",\"sort_id\":\"言情\",\"position_id\":\"sdf\",\"state\":\"借出\",\"descript\":\"好看\",\"operate\":\"234\"}]}");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
resp.setContentType("application/json; charset=utf8");
PrintWriter out = resp.getWriter();
out.print("{\"code\":0,\"msg\":\"\",\"count\":1000,\"data\":[{\"id\":10000,\"name\":\"夏洛特的烦恼\",\"library_name\":\"南图\",\"sort_id\":\"言情\",\"position_id\":\"sdf\",\"state\":\"借出\",\"descript\":\"好看\",\"operate\":\"234\"},{\"id\":10000,\"name\":\"夏洛特的烦恼\",\"library_name\":\"南图\",\"sort_id\":\"言情\",\"position_id\":\"sdf\",\"state\":\"借出\",\"descript\":\"好看\",\"operate\":\"234\"},{\"id\":10000,\"name\":\"夏洛特的烦恼\",\"library_name\":\"南图\",\"sort_id\":\"言情\",\"position_id\":\"sdf\",\"state\":\"借出\",\"descript\":\"好看\",\"operate\":\"234\"},{\"id\":10010,\"name\":\"夏洛特的烦恼\",\"library_name\":\"南图\",\"sort_id\":\"言情\",\"position_id\":\"sdf\",\"state\":\"借出\",\"descript\":\"好看\",\"operate\":\"234\"}]}");
doGet(req, resp);
}
}
}
Loading…
Cancel
Save