作为一个后端程序员,前端做的确实很丑,所以就学习了一下layui框架的使用。数据表格主要的问题就是传输数据的问题,这里我用我的前后端代码来做一个实际的分解。

前端部分

可以到layui官网示例中找到数据表格,复制前台代码。也可以使用我的代码。

这部分主要更改的是自己的表格属性,传值的url。细节我都写在代码注释里面了

我的分页功能好像有点问题,现在还不知到问题在哪,可以先不完成这个功能。

html

<fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
    <legend>学生信息表</legend>
</fieldset>

<table class="layui-hide" id="test" lay-filter="test">

</table>

<script type="text/html" id="toolbarDemo">
    <div class="demoTable">
        搜索ID:
        <div class="layui-inline">
            <input class="layui-input" name="id" id="demoReload" autocomplete="off">
        </div>
        <button class="layui-btn" type="button" id="search_btn" data-type="reload">搜索</button>
    </div>

</script>

<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>

 

JavaScript

 layui.use('table', function(){
        var table = layui.table;
        var $  = layui.jquery;
        table.render({
            elem: '#test'
            ,url:'ShowAllServlet'  //url写自己的后端接口,这里我是通过servlet传递json实现的数据传递
            ,toolbar: '#toolbarDemo' //开启头部工具栏,并为其绑定左侧模板
            ,defaultToolbar: ['filter', 'exports', 'print', { //自定义头部工具栏右侧图标。如无需自定义,去除该参数即可
                title: '提示'
                ,layEvent: 'LAYTABLE_TIPS'
                ,icon: 'layui-icon-tips'
            }]
            ,title: '用户数据表'
            ,id: 'test'   //表格的id值,可用于其他功能调用刷新表格等
            ,cols: [[
                {type: 'checkbox', fixed: 'left'}    
                ,{field:'id', title:'ID', width:320,  unresize: true, sort: true}   //field 是json数组的name值,title是表格的表头,width是表格宽度 edit是表格可以编辑,sort 属性true可以排序
                ,{field:'name', title:'姓名',  width:320, edit: 'text'}
                ,{field:'sex', title:'性别', width:320, edit: 'text'}
                ,{field:'birthday', title:'出生日期',  width:320,edit: 'text'}
                ,{fixed: 'right', title:'操作', toolbar: '#barDemo', width:200}    //操作是侧边工具栏的删除和编辑
            ]]
            ,page: true   //分页
        });

后端部分

后端我采用的servlet传递json数组,

这是layui默认规定的数据格式code

  1. {
  2. "code": 0,
  3. "msg": "",
  4. "count": 1000,
  5. "data": [{}, {}]
  6. }

在我们的servlet要把自己的list数组转换成json格式,转换方法在我的代码里面,需要导的包可以私聊我发送。

我们serlvet的思路是把MySQL中的数据全部遍历出来,然后存到arraylist对象数组中,再统一转到layui需要的json格式。

Servlet

import COM.Bean.student;
import COM.Dao.mannger;
import com.fasterxml.jackson.databind.ObjectMapper;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@WebServlet(name = "ShowAllServlet", value = "/ShowAllServlet")  //对应表格模块的url
public class ShowAllServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


        request.setCharacterEncoding("utf-8");//设置相应的文本类型
        response.setContentType("text/html;charset=utf-8");//设置响应类型,并防止中文乱码
        ArrayList<student> stulist = new ArrayList<>();    //定义arraylist数组
        mannger dao = new mannger();
        dao.stulist(stulist);
        int count1 = stulist.size();  //count是数据的条数
        String count = ""+ count1;
        Map<String, Object> result = new HashMap<String, Object>(); //下面的部分只需要改result.put(“data”,stulist)中的stulist ,换成你自己的list
       //System.out.println(paperslist);
        result.put("code", 0);
        result.put("msg", "");
        result.put("count",count);
        result.put("data",stulist);
        System.out.println(result);
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString (result);
        response.getWriter().print(json.toString());  //传递json给后端
        System.out.println(result);

    }
}

 

效果展示

 

作者:|权。|,原文链接: https://www.cnblogs.com/wjingbo/p/16291248.html

文章推荐

深入理解python虚拟机:调试器实现原理与源码分析

css 利用 linear-gradient 实现条纹背景

MySQL主从复制原理剖析与应用实践

InnoDB 是如何解决幻读的

keepalived的简单使用

前端安全问题——暴破登录

深入学习 Spring Web 开发 —— BeanDefinition(上)

mybatis源码-注解sql

2流高手速成记(之四):SpringBoot整合redis及mongodb

PostgreSQL 的窗口函数 OVER, WINDOW, PARTITION BY, RANGE

ElasticSearch7.3学习(二十八)----聚合实战之电视案例

C# 蓄水池抽样