- layui的table分页用于的场景是数据成千上万太多时,可以对数据进行分页展示。
- 首先展示一下效果图(只有两条数据数据库中,仅仅是为了测试这个layui的table分页)
- 首先要做的准备是json的jar包,以及jackson的jar包,大家如果没有的话可以去maven上下载。
- 然后需要要进行下载的是layui的js和css文件,直接去官网下载就可以。需要在页面中加入自己的js和css文件的位置。
- <link rel="stylesheet" href="layui/css/layui.css" media="all">
- <script src="layui/layui.js" charset="utf-8"></script>
<script src="js/jquery.min.js" charset="utf-8"></script>
- 接下来废话不多说,就直接上代码吧!
- 测试的jsp界面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <link rel="stylesheet" href="layui/css/layui.css" media="all"> </head> <body> <table class="layui-hide" id="test" lay-filter="test"></table> </body> <script src="layui/layui.js" charset="utf-8"></script> <script src="layui/layui.all.js" charset="utf-8"></script> <script src="js/jquery.min.js" charset="utf-8"></script> <script type="text/javascript"> layui.use('table', function(){ var table = layui.table; //第一个实例 table.render({ elem: '#test'//获取存放数据的table容器,即是table的id ,height: 515 ,method:'post' ,cache:false //清除缓存 ,url: 'MessageServlet?method=layuifind' //数据接口,最终传值数据到jsp的方法 ,page: true //开启分页 ,cols: [[ //表头 {field: 'companyname', title: '用户名', 300,sort: true} ,{field: 'contacts', title: '联系人', 300,sort: true} ,{field: 'comaddress', title: '地址', 177,sort: true} ]] }); }); </script> </html>
//field中的sort属性是是否可以对数据进行排序根据相应的属性
代码中的url是进行数据交互的数据接口。接下来是后台操作的代码。
数据接口MessageServlet?layuifind(写你自己的数据接口,也就是进行数据交互的servlet):
package com.servlet; import java.io.IOException; import java.io.StringReader; import java.sql.SQLException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.service.JsonUtils; import com.service.MessageService; import User.Users; import User.userInfo; import User.usermess; import jdk.nashorn.internal.scripts.JS; import net.sf.json.JSON; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.util.JSONUtils; @WebServlet("/MessageServlet") public class MessageServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * 方法选择 */ protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); String method = req.getParameter("method"); if ("layuifind".equals(method)) { try { layuifind(req,resp); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // // } private void layuifind(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException, SQLException { req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf-8"); //即是点击事件,获取点击跳转的页数,以及每页需要展示的数据 数目,第一次加载默认为page=1&&limit=10
int page =Integer.parseInt(req.getParameter("page"));
int limit =Integer.parseInt(req.getParameter("limit"));
//封装的要传回给前台的数据类
Users r=new Users();
//向前端传回状态码 0为正常状态码
r.setCode(0);
r.setMsg("获得数据成功");
//所有的数据数目,并不是单单一页展示的数目
r.setCount(MessageService.getlayuiinfo(page, limit).size());
//传递的数据集
r.setData(MessageService.getlayuiinfo(page, limit));
//加载处理 可有可无,并不影响
delay();
//向前端传递数据并显示
resp.getWriter().print(JsonUtils.toJson(r)); //System.out.println(JsonUtils.toJson(r)); } public void delay(){ try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } }
封装的需要像前端传输的数据类
package User; public class Users { /**响应编码*/ private int code; /**响应消息*/ private String msg; /**数据总量*/ private int count; /**数据*/ private Object data; public Users() { } public Users(int code, String msg, int count, Object data) { super(); this.code = code; this.msg = msg; this.count = count; this.data = data; } @Override public String toString() { return "R [code=" + code + ", msg=" + msg + ", count=" + count + ", data=" + data + "]"; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } public Object getData() { return data; } public void setData(Object data) { this.data = data; } }
service,执行查询操作的类
package com.service; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import com.connect.Connect; import com.sun.org.apache.bcel.internal.generic.Select; import User.userInfo; import User.usermess; //服务层 public class MessageService { //测试layui public static List<userInfo> getlayuiinfo(int page,int limit) throws SQLException { // 查询语句的执行结果为一个表格,即多个学生对象的集合,所有可以创建数组列表对象来存储 List<userInfo> lst = new ArrayList<userInfo>(); // 获取连接对象 Connection conn = Connect.getConn(); String sql="select * from information "; try { // 连接对象conn调用createStatement()方法,创建一个执行SQL语句的对象st Statement st = conn.createStatement(); // 执行SQL语句的对象st调用executeQuery()方法,执行查询语句,将查询到的结果返回到一个结果集中 ResultSet rs = st.executeQuery(sql); // 遍历结果集对象 while (rs.next()) { userInfo mes = new userInfo(); mes.setCompanyname(rs.getString("companyname")); mes.setComaddress(rs.getString("comaddress")); mes.setComwebsite(rs.getString("comwebsite")); mes.setEmail(rs.getString("email")); mes.setLawperson(rs.getString("lawperson")); mes.setPostal(rs.getString("postal")); mes.setContacts(rs.getString("contacts")); mes.setPhone(rs.getString("phone")); mes.setFax(rs.getString("fax")); mes.setInsattr(rs.getString("insattr")); mes.setBelongcom(rs.getString("belongcom")); mes.setSummary(rs.getString("summary")); mes.setTechname(rs.getString("techname")); mes.setTechchat(rs.getString("techchat")); mes.setDiscuss(rs.getString("discuss")); mes.setSubject(rs.getString("subject")); mes.setDomain(rs.getString("domain")); mes.setVocation(rs.getString("vocation")); mes.setTogemodern(rs.getString("togemodern")); mes.setTogecom(rs.getString("togecom")); mes.setStatus(rs.getString("status")); mes.setMoney(rs.getString("money")); lst.add(mes); } } catch (Exception e) { System.out.println(e.getMessage()); } finally { // 资源使用完之后,如果没有关闭,则需要关闭 if (conn != null) { conn.close(); } } //从所有的数据对象lst找出需要展示的数据存在一个新的list中 List<userInfo> list = new ArrayList<>(); int start=(page-1)*limit;//判断当前也开始的数据位置 for (int i =start; i <start+limit&&i<lst.size(); i++) { list.add(lst.get(i)); } return list; } }
需要将users响应数据类的对象转json数组存储
package com.service; import java.text.SimpleDateFormat; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; public class JsonUtils { /** * 序列化成json * */ public static String toJson(Object obj) { // 对象映射器 ObjectMapper mapper = new ObjectMapper(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd HH:mm:ss"); mapper.setDateFormat(sdf); String result = null; // 序列化user对象为json字符串 try { result = mapper.writeValueAsString(obj); } catch (JsonProcessingException e) { e.printStackTrace(); } return result; } }