layui之table分页

  • 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;
    }
}

原文地址:https://www.cnblogs.com/moxihuishou/p/13900093.html