layui框架与SSM前后台交互的方法


Posted in Javascript onSeptember 12, 2019

采用layui前台框架实现前后台交互,数据分页显示以及删除操作,具体方式如下:

一、数据分页显示

1.前端

(1)html页面

<!--轮播数据分页显示-->
<table class="layui-hide" id="content_lbt" lay-filter="content_lbt_filter"></table>

(2)请求渲染数据

$(function() {
 /*轮播数据分页显示*/
 layui.use(['table', 'update'], function() {
 var table = layui.table,
  upload = layui.upload;
 
 table.render({
  elem: '#content_lbt',
  height: 500
  //,url: 'data/content_lbt.json' //数据接口
  ,
  url: 'http://localhost:9911/cms/queryCarouselList' //数据接口
  ,
  page: true //开启分页
  ,
  loading: true,//分页查询是否显示等待图标
  text: {//若查询记录为空,执行此操作
  none: '暂无相关数据'
  } //默认:无数据。注:该属性为 layui 2.2.5 开始新增
  ,
  cellMinWidth: 80 //全局定义常规单元格的最小宽度,layui 2.2.1 新增
  ,
  cols: [
  [{
   field: 'id',
   width: '10%',
   title: 'ID',
   sort: true
  }, {
   field: 'posterId',
   width: '10%',
   title: '上传者ID',
   sort: true
  }, {
   field: 'posterName',
   width: '15%',
   title: '上传者姓名'
  }, {
   field: 'description',
   width: '28%',
   title: '描述',
   minWidth: 200
  }, {
   field: 'photoPath',
   width: '10%',
   title: '图片',
   minWidth: 100
  }, {
   field: 'createTime',
   width: '10%',
   title: '上传时间',
   minWidth: 100
  }]
  ],
  request: {
  pageName: 'page',
  limitName: 'size'
  },
  limit: 10,
  limits: [10, 20, 30, 40, 50]
 });
   });

2.后端

后端采用SpringBoot,利用SSM框架

(1)mapper:(注意@Mapper注解)

/**
   * 查询所有轮播图信息
   *
   * @return
   */
  List<Carousel> queryCarousel(@Param("start") Integer start, @Param("size") Integer size);
 
  /**
   * 查询轮播记录条数
   *
   * @return
   */
  Integer countCarousel();

注意po类采用驼峰式写法

<select id="queryCarousel" resultType="com.jingling.basic.po.Carousel">
     SELECT id, poster_id AS posterId, poster_name AS posterName, description AS description , photo_path AS photoPath, create_time AS createTime
     FROM carousel
     LIMIT #{start}, #{size}
  </select>
 
  <select id="countCarousel" resultType="int">
    SELECT COUNT(*) FROM carousel
  </select>

(2)service

/**
   * 查询全部轮播信息
   *
   * @return
   */
  List<Carousel> queryCarousel(Integer page,Integer size);
 
  /**
   * 查询轮播记录条数
   *
   * @return
   */
  Integer countCarousel();

(3)serviceImpl(注意要有@Service注解)

@Autowired
  private CarouselMapper carouselMapper;
 
  @Override
  public List<Carousel> queryCarousel(Integer page,Integer size) {
    if(page == null || page <= 0){
      page = 1;
    }
    if (size == null || size <= 0){
      size = 10;
    }
 
    Integer start = (page - 1) * size;
    return carouselMapper.queryCarousel(start,size);
  }
 
  @Override
  public Integer countCarousel() {
    return carouselMapper.countCarousel();
  }

(4)Controller(注意要有@RequestController注解)

@RestController
@RequestMapping("/cms")
  @Autowired
  public CmsService cmsService;
 
  /**
   * 查询轮播图信息
   *
   * @return
   */
  @GetMapping("/queryCarouselList")
  public Object queryCarouselList(HttpServletResponse response, @RequestParam("page") Integer page, @RequestParam("size") Integer size){
    response.setHeader("Access-Control-Allow-Origin", "*");//解决跨域的问题
    List<Carousel> carouselList = cmsService.queryCarousel(page,size);
    if (carouselList == null){
      return RecycleResult.build(500,"轮播图为空");
    }
    //return RecycleResult.ok(carouselList);
    //return carouselList;
    Integer count = cmsService.countCarousel();
    return new LayuiReplay<Carousel>(0, "OK", count, carouselList);
  }

二、删除操作

1.前端

<script type="text/html" id="barDemo">
  <a class="layui-btn layui-btn-xs" lay-event="detail">查看</a>
  <!--<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>
                {
   fixed: 'right',
   width: '15%',
   align: 'center',
   title: '操作',
   toolbar: '#barDemo'
  }
   fixed: 'right',
   width: '15%',
   align: 'center',
   title: '操作',
   toolbar: '#barDemo'
  }
//监听工具条
 table.on('tool(content_lbt_filter)', function(obj) { //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值"
  var data = obj.data //获得当前行数据
  ,
  layEvent = obj.event; //获得 lay-event 对应的值
  if(layEvent === 'detail') {
  layer.msg('查看操作');
  } else if(layEvent === 'del') {
  layer.confirm('真的删除行么', function(index) {
   //obj.del(); //删除对应行(tr)的DOM结构
   delCarouselById(data.id);
   layer.close(index);
   //向服务端发送删除指令
  });
  }
  /*else if(layEvent === 'edit'){
    layer.msg('编辑操作');
   }*/
 });
 
 
 //删除记录
 function delCarouselById(id) {
  $.get("http://localhost:9911/cms/delCarouselById?id=" + id,
  function(data, status) {
   layer.msg('删除成功');
  });
 }

2.后端(此处仅显示controller层和mapper)

@GetMapping("/delCarouselById")
  public RecycleResult delCarouselById(HttpServletResponse response,@RequestParam("id") Integer id){
    response.setHeader("Access-Control-Allow-Origin", "*");
    cmsService.delCarouselById(id);
    return RecycleResult.ok();
  }
<delete id="delCarouselById">
    DELETE FROM carousel
    WHERE id = #{id}
  </delete>

补充LayuiReplay类(其中get、set方法省略)

public class LayuiReplay <T> {
  private int code;
  private String msg;
  private int count;
  private List<T> data;
 
  public LayuiReplay(int code, String msg, int count, List<T> data) {
    this.code = code;
    this.msg = msg;
    this.count = count;
    this.data = data;
  }
 
  public String toJson() {
    Gson gson = new Gson();
    String json = gson.toJson(this);
    return json;
  }
 
  public static <T> String toJson(int count, List<T> data) {
    LayuiReplay<T> replay = new LayuiReplay<>(ReplyCode.OK.getCode(), ReplyCode.OK.getMessage(), count, data);
    return replay.toJson();
  }
}

补充ReplyCode.java枚举类

public enum ReplyCode {
  NOT_LOGIN(-1,"您尚未登录或登录时间过长,请重新登录或刷新页面!"),
  OK(0, "OK"),
  WRONG_URL(400,"请求路径错误"),
  WRONG_ROLE(401, "身份错误"),
  REQUEST_FAILED(500, "请求失败,请重试"),
  NULL_ATTR(30,"属性不能为空"),
  ATTR_WRONG(31, "属性填写错误"),
  WRONG_LENGTH(32, "数据长度不符合要求"),
  WRONG_PATTERN(33, "数据格式错误"),
  VAILD_WRONG(100,"验证码错误"),
  CUSTOM(999, "")
  ;
 
  ReplyCode(int code, String message) {
    this.code = code;
    this.message = message;
  }
 
  private int code;
  private String message;
 
  public int getCode() {
    return code;
  }
 
  public ReplyCode setCode(int code) {
    this.code = code;
    return this;
  }
 
  public String getMessage() {
    return message;
  }
 
  public ReplyCode setMessage(String message) {
    this.message = message;
    return this;
  }
 
}

以上这篇layui框架与SSM前后台交互的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用javascript来实现动画导航效果的代码
Dec 16 Javascript
window.opener用法和用途实例介绍
Aug 19 Javascript
使用CSS和jQuery模拟select并附提交后取得数据的代码
Oct 18 Javascript
JS实现简易图片轮播效果的方法
Mar 25 Javascript
JQuery实现动态添加删除评论的方法
May 18 Javascript
jQuery实现简单的列表式导航菜单效果代码
Aug 31 Javascript
Bootstrap企业网站实战项目4
Oct 14 Javascript
JavaScript Ajax实现异步通信
Dec 14 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
May 31 Javascript
es6中比较有用的7个技巧小结
Jul 12 Javascript
webpack的tree shaking的实现方法
Sep 18 Javascript
javascript实现移动端上传图片功能
Aug 18 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
Sep 12 #Javascript
解决layui表格内文本超出隐藏的问题
Sep 12 #Javascript
微信小程序获取用户信息及手机号(后端TP5.0)
Sep 12 #Javascript
JS计算斐波拉切代码实例
Sep 12 #Javascript
VUE项目初建和常见问题总结
Sep 12 #Javascript
TypeScript中使用getElementXXX()的示例代码
Sep 12 #Javascript
深入浅析vue中cross-env的使用
Sep 12 #Javascript
You might like
php+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
2007/03/07 PHP
PHP基础知识介绍
2013/09/17 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
js 处理URL实用技巧
2010/11/23 Javascript
鼠标事件延时切换插件
2011/03/12 Javascript
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
javascript nextSibling 与 getNextElement(node) 使用介绍
2011/10/13 Javascript
Javascript中引用示例介绍
2014/02/21 Javascript
jQuery中change事件用法实例
2014/12/26 Javascript
javascript判断css3动画结束 css3动画结束的回调函数
2015/03/10 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
深入浅析JavaScript的API设计原则
2016/06/14 Javascript
Nodejs+Socket.io实现通讯实例代码
2017/02/13 NodeJs
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
NodeJs测试框架Mocha的安装与使用
2017/03/28 NodeJs
vue.js中created方法作用
2018/03/30 Javascript
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
微信小程序开发之获取用户手机号码(php接口解密)
2020/05/17 Javascript
微信小程序实现日历签到
2020/09/21 Javascript
从零学python系列之数据处理编程实例(一)
2014/05/22 Python
python自定义类并使用的方法
2015/05/07 Python
python 调用HBase的简单实例
2016/12/18 Python
python 按不同维度求和,最值,均值的实例
2018/06/28 Python
对pandas的算术运算和数据对齐实例详解
2018/12/22 Python
YUV转为jpg图像的实现
2019/12/09 Python
python中有帮助函数吗
2020/06/19 Python
python unichr函数知识点总结
2020/12/16 Python
基于Python实现天天酷跑功能
2021/01/06 Python
python实现简单文件读写函数
2021/02/25 Python
css3实现圆锥渐变conic-gradient效果
2020/02/12 HTML / CSS
美国著名童装品牌:OshKosh B’gosh
2016/08/05 全球购物
受欢迎的大学生自我评价
2013/12/05 职场文书
法学个人求职信范文
2014/01/27 职场文书
决心书范文
2014/03/11 职场文书
关于环保的标语
2014/06/13 职场文书
幼儿园小班见习报告
2014/10/31 职场文书