全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

bootstrap table服务端实现分页效果

实现bootstrap table服务端实现分页demo,具体内容如下

首页index.html

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Demo</title>
  <link rel="stylesheet" href="/assets/css/bootstrap.min.css" rel="external nofollow" />
  <link rel="stylesheet" href="/assets/css/bootstrap-table.min.css" rel="external nofollow" >
  <script src="/assets/js/jquery-2.1.1.min.js"></script>
  <script src="/assets/js/bootstrap.min.js"></script>
  <script src="/assets/js/bootstrap-table.min.js"></script>
  <script src="/assets/js/bootstrap-table-zh-CN.min.js"></script>
  <script src="/assets/js/index.js"></script>
</head>

<body>
  <!--查询窗体-->
  <div class="widget-content">
    <form method="post" class="form-horizontal" id="eventqueryform">
      <input type="text" class="span2" name="seqNo" placeholder="编号"> 
      <input type="text" class="span3" name="name" placeholder="姓名"> 
      <input type="button" class="btn btn-default span1" id="eventquery" value="查询">
    </form>
  </div>

  <div class="widget-content">
    <!--工具条-->
    <div id="toolbar">
      <button class="btn btn-success btn-xs" data-toggle="modal" data-target="#add">添加事件</button>
    </div>
    <table id="eventTable"></table>
  </div>
</body>

</html>


index.js

$(function() {
  // 初始化表格
  initTable();

  // 搜索按钮触发事件
  $("#eventquery").click(function() {
    $('#eventTable').bootstrapTable(('refresh')); // 很重要的一步,刷新url!
    // console.log("/program/area/findbyItem?offset="+0+"&"+$("#areaform").serialize())
    $('#eventqueryform input[name=\'name\']').val('')
    $('#eventqueryform input[name=\'seqNo\']').val('')
  });

});

// 表格初始化
function initTable() {
  $('#eventTable').bootstrapTable({
    method : 'post',  // 向服务器请求方式
    contentType : "application/x-www-form-urlencoded", // 如果是post必须定义
    url : '/bootstrap_table_demo/findbyitem',  // 请求url
    cache : false, // 是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
    striped : true, // 隔行变色
    dataType : "json", // 数据类型
    pagination : true, // 是否启用分页
    showPaginationSwitch : false, // 是否显示 数据条数选择框
    pageSize : 10, // 每页的记录行数(*)
    pageNumber : 1,   // table初始化时显示的页数
    pageList: [5, 10, 15, 20], //可供选择的每页的行数(*)
    search : false, // 不显示 搜索框
    sidePagination : 'server', // 服务端分页
    classes : 'table table-bordered', // Class样式
//   showRefresh : true, // 显示刷新按钮
    silent : true, // 必须设置刷新事件
    toolbar : '#toolbar',    // 工具栏ID
    toolbarAlign : 'right',   // 工具栏对齐方式
    queryParams : queryParams, // 请求参数,这个关系到后续用到的异步刷新
    columns : [ {
      field : 'seqNo',
      title : '编号',
      align : 'center'
    }, {
      field : 'name',
      title : '姓名',
      align : 'center'
    }, {
      field : 'sex',
      title : '性别',
      align : 'center'
    }, {
      field : 'id',
      title : '操作',
      align : 'center',
      width : '280px',
      formatter : function(value, row, index) {
//        console.log(JSON.stringify(row));
      }
    } ],
  });
}

// 分页查询参数,是以键值对的形式设置的
function queryParams(params) {
  return {
    name : $('#eventqueryform input[name=\'name\']').val(),  // 请求时向服务端传递的参数
    seqNo : $('#eventqueryform input[name=\'seqNo\']').val(),

    limit : params.limit, // 每页显示数量
    offset : params.offset, // SQL语句偏移量
  }
}

服务端 servlet

/**
 * Servlet实现类
 */
public class UserFindByItemSetvlet extends HttpServlet {
  private static final long serialVersionUID = 1L;
  private IUserService service = new UserServiceImpl();

  public UserFindByItemSetvlet() {
    super();
  }

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    this.doPost(request, response);
  }

  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("utf-8");
    response.setContentType("text/json; charset=UTF-8");

    // 得到表单数据
    int offset = Integer.parseInt(request.getParameter("offset").trim());
    int limit = Integer.parseInt(request.getParameter("limit").trim());
    String seqNo = request.getParameter("seqNo").trim();
    String name = request.getParameter("name").trim();

    // 调用业务组件,得到结果
    PageBean<UserBean> pageBean;
    try {
      pageBean = service.findByItem(offset, limit, seqNo, name);
      ObjectMapper oMapper = new ObjectMapper();
      //对象转换为json数据 ,且返回
      oMapper.writeValue(response.getWriter(), pageBean);
    } catch (Exception e) {     
      e.printStackTrace();
    }

  }

}

分页封装类

/**
 * 分页实体类
 */
public class PageBean<T> {
  /** 行实体类 */
  private List<T> rows = new ArrayList<T>();
  /** 总条数 */
  private int total;

  public PageBean() {
    super();
  }

  public List<T> getRows() {
    return rows;
  }

  public void setRows(List<T> rows) {
    this.rows = rows;
  }

  public int getTotal() {
    return total;
  }

  public void setTotal(int total) {
    this.total = total;
  }

}

获取用户实现类

public class UserServiceImpl implements IUserService{

  /**
   * sql查询语句
   */
  public PageBean<UserBean> findByItem(int offset, int limit, String seqNo, String name) {
    PageBean<UserBean> cutBean = new PageBean<UserBean>();

    // 基本SQL语句
    String sql = "SELECT * FROM c_userinfo where 1=1 ";

    // 动态条件的SQL语句
    String itemSql = "";

    if (seqNo != null && seqNo.length() != 0) {
      itemSql += "and SeqNo like '%" + seqNo + "%' ";
    }

    if (name != null && name.length() != 0) {
      itemSql += "and Name like '%" + name + "%' ";
    }

    // 获取sql连接
    Connection con = DButil.connect();
    PreparedStatement ps = null;
    ResultSet rs = null;
    try {

      ps = con.prepareStatement(sql + itemSql + "limit ?,?");
      ps.setInt(1, offset);
      ps.setInt(2, limit);
      rs = ps.executeQuery();
      while (rs.next()) {
        UserBean bean = new UserBean();
        bean.setSeqNo(rs.getInt("seqNo"));
        bean.setName(rs.getString("name"));
        bean.setSex(rs.getInt("sex"));
        bean.setBirth(rs.getString("birth"));
        cutBean.getRows().add(bean);
      }
      // 得到总记录数,注意,也需要添加动态条件
      ps = con.prepareStatement("SELECT count(*) as c FROM c_userinfo where 1=1 " + itemSql);
      rs = ps.executeQuery();
      if (rs.next()) {
        cutBean.setTotal(rs.getInt("c"));
      }
    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      DButil.close(con);
      if (ps != null) {
        try {
          ps.close();
        } catch (SQLException e) {
          e.printStackTrace();
        }
      }
      if (rs != null) {
        try {
          rs.close();
        } catch (SQLException e) {
          e.printStackTrace();
        }
      }
    }
    return cutBean;
  }
}

数据库工具类

/**
 * 数据库工具类
 * 
 * @author way
 * 
 */
public class DButil {
  /**
   * 连接数据库
   * 
   */
  public static Connection connect() {
    Properties pro = new Properties();
    String driver = null;
    String url = null;
    String username = null;
    String password = null;
    try {
      InputStream is = DButil.class.getClassLoader()
          .getResourceAsStream("DB.properties");
      pro.load(is);
      driver = pro.getProperty("driver");
      url = pro.getProperty("url");
      username = pro.getProperty("username");
      password = pro.getProperty("password");
      Class.forName(driver);
      Connection conn = DriverManager.getConnection(url, username,
          password);
      return conn;
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    } catch (SQLException e) {
      e.printStackTrace();
    }
    return null;
  }

  /**
   * 关闭数据库
   * 
   * @param conn
   *     
   */
  public static void close(Connection con) {
    if (con != null) {
      try {
        con.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
  }

DB.properties文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/gov_social?useUnicode\=true&characterEncoding\=utf-8
username=root
password=root

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# bootstrap  # table  # 分页  # bootstrap table 服务器端分页例子分享  # 第一次动手实现bootstrap table分页效果  # Bootstrap table分页问题汇总  # BootStrap Table 分页后重新搜索问题的解决办法  # Bootstrap table两种分页示例  # BootStrap中Table分页插件使用详解  # 基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询  # Bootstrap Table服务器分页与在线编辑应用总结  # 解决JS组件bootstrap table分页实现过程中遇到的问题  # bootstrap table分页模板和获取表中的ID方法  # 服务端  # 每页  # 条数  # 行数  # 很重要  # 实体类  # 关系到  # 表单  # 首页  # 转换为  # 具体内容  # 工具条  # 大家多多  # 键值  # 可供选择  # 默认为  # 连接数据库  # 偏移量  # refresh 


相关文章: 建站之星免费版是否永久可用?  郑州企业网站制作公司,郑州招聘网站有哪些?  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  高防服务器如何保障网站安全无虞?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  建站上市公司网站建设方案与SEO优化服务定制指南  建站之星上传入口如何快速找到?  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  定制建站哪家更专业可靠?推荐榜单揭晓  重庆市网站制作公司,重庆招聘网站哪个好?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  动图在线制作网站有哪些,滑动动图图集怎么做?  北京的网站制作公司有哪些,哪个视频网站最好?  如何通过多用户协作模板快速搭建高效企业网站?  如何在建站之星绑定自定义域名?  如何设置并定期更换建站之星安全管理员密码?  如何快速搭建自助建站会员专属系统?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  韩国服务器如何优化跨境访问实现高效连接?  如何做网站制作流程,*游戏网站怎么搭建?  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  python的本地网站制作,如何创建本地站点?  如何快速查询网站的真实建站时间?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  济南企业网站制作公司,济南社保单位网上缴费步骤?  建站VPS能否同时实现高效与安全翻墙?  如何在香港免费服务器上快速搭建网站?  建站主机选购指南:核心配置与性价比推荐解析  建站ABC备案流程中有哪些关键注意事项?  高防服务器租用指南:配置选择与快速部署攻略  网站制作价目表怎么做,珍爱网婚介费用多少?  建站之星代理商如何保障技术支持与售后服务?    公司网站设计制作厂家,怎么创建自己的一个网站?  如何快速搭建高效可靠的建站解决方案?  建站之星备案是否影响网站上线时间?  常州企业建站如何选择最佳模板?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  建站主机核心功能解析:服务器选择与网站搭建流程指南  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  如何在橙子建站中快速调整背景颜色?  建站上传速度慢?如何优化加速网站加载效率?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  如何在云主机上快速搭建多站点网站?  ,网页ppt怎么弄成自己的ppt?  临沂网站制作公司有哪些,临沂第四中学官网?  专业网站建设制作报价,网页设计制作要考什么证? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。