ssm分布式+分页助手+angular实现分页

ssm分布式+分页助手+angular实现分页


  • 后端java代码

    • 表/pojo/dao/service/controller
    • 首先采用分布式dubbo框架以上的 service层和controller层 是分布在不同服务器上的
    • controller层代码(其他层不再累赘)
      @RequestMapping("/add")
          public Result add(@RequestBody Brand brand) {
      
              try {
                  int affectRows = brandService.add( brand );
                  if (affectRows > 0) {
                      return new Result( true, "添加成功" );
                  }else {
                      return new Result( false, "添加失败" );
                  }
              } catch (Exception e) {
                  e.printStackTrace();
                  return new Result( false, "服务器异常,添加失败" );
              }
      
          }

       

    • Resultl类是一个专门返回信息用的类,实现序列化
      public class Result implements Serializable {
          private boolean success;
          private String message;
      
          public Result(boolean success, String message) {
              this.success = success;
              this.message = message;
          }

       

    • 其中controller层参数中加@RequestBody注解,加上这个注解后会根据请求体中的数据自动创建brand对象,把数据自动封装到对象里,如果不加注解只能用同字段名参数接受
  • 前端代码

    • 引入angular框架,angular框架介绍
      • AngularJS 是一个 JavaScript 框架

        AngularJS 是一个 JavaScript 框架。它是一个以 JavaScript 编写的库。

        AngularJS 是以一个 JavaScript 文件形式发布的,可通过 script 标签添加到网页中:

      • AngularJS 通过 ng-directives 扩展了 HTML。

        ng-app 指令定义一个 AngularJS 应用程序。

        ng-model 指令把元素值(比如输入域的值)绑定到应用程序。

        ng-bind 指令把应用程序数据绑定到 HTML 视图。

      • 当网页加载完毕,AngularJS 自动开启。

        ng-app 指令告诉 AngularJS,<div> 元素是 AngularJS 应用程序 的"所有者"。

        ng-model 指令把输入域的值绑定到应用程序变量 name

        ng-bind 指令把应用程序变量 name 绑定到某个段落的 innerHTML。
        ng-init 指令初始化 AngularJS 应用程序变量。

      • AngularJS 应用

        AngularJS 模块(Module) 定义了 AngularJS 应用。

        AngularJS 控制器(Controller) 用于控制 AngularJS 应用。

        ng-app指令指明了应用, ng-controller 指明了控制器。

      • AngularJS 模块定义应用:

        AngularJS 模块

        var app = angular.module('myApp', []);

      • AngularJS 控制器控制应用:

        AngularJS 控制器

        app.controller('myCtrl', function($scope) { $scope.firstName= "John"; $scope.lastName= "Doe"; });

    • 导入pagination.js/pagination.css前端用的分页插件
    • 再html页面引入分页插件
      <tm-pagination conf="paginationConf"></tm-pagination>
    • <body>标签上引入angular的module和controller
      ng-app="pinyougou" ng-controller="brandController"
    • 再body的module上引入前端分页插件的模块
      var app = angular.module('pinyougou', ['pagination']);//定义模块
    • 再app应用模块的控制器上给分页插件的参数赋值
       //设置分页插件的参数
                  $scope.paginationConf = {
                      currentPage: 1,
                      totalItems: 10,
                      itemsPerPage: 10,
                      perPageOptions: [10, 20, 30, 40, 50],
                      onChange: function () {
                          $scope.reloadList();
                      }
                  };

       

    • 当参数发生改变时调用reloadList()函数,重新加载数据:当页面加载完毕后插件会先自动加载一次reloadList()函数,来显示页面数据
       $scope.reloadList = function () {
                      $scope.findPage($scope.paginationConf.currentPage, $scope.paginationConf.itemsPerPage);
                  };

       

    • 加载reloadList()函数时,调用findPage()函数,这时访问后台数据,取到数据后将表格需要的数据放在$scope.list中
         $scope.findPage = function (page, rows) {
                      $http.get('../brand/findPage.do?page=' + page + '&rows=' + rows).success(function (response) {
                          $scope.list = response.rows;
                          $scope.paginationConf.totalItems = response.total;
                      })
                  };

       

    • 拿到新数据后,框架帮我们重新再页面遍历一遍数据
    • html代码
      <!DOCTYPE html>
      <html>
      <head>
          <meta charset="utf-8">
          <meta http-equiv="X-UA-Compatible" content="IE=edge">
          <title>品牌管理</title>
          <meta content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no" name="viewport">
          <link rel="stylesheet" href="../plugins/bootstrap/css/bootstrap.min.css">
          <link rel="stylesheet" href="../plugins/adminLTE/css/AdminLTE.css">
          <link rel="stylesheet" href="../plugins/adminLTE/css/skins/_all-skins.min.css">
          <link rel="stylesheet" href="../css/style.css">
          <script src="../plugins/jQuery/jquery-2.2.3.min.js"></script>
          <script src="../plugins/bootstrap/js/bootstrap.min.js"></script>
      
          <!-- 引入angular的js -->
          <script type="text/javascript" src="../plugins/angularjs/angular.min.js"></script>
          <!-- 引入分页相关的JS和CSS -->
          <script type="text/javascript" src="../plugins/angularjs/pagination.js"></script>
          <link rel="stylesheet" href="../plugins/angularjs/pagination.css">
      
          <!--	<script type="text/javascript" src="../js/base_pagination.js"></script>
              <script type="text/javascript" src="../js/controller/baseController.js"></script>
              <script type="text/javascript" src="../js/controller/brandController.js"></script>
              <script type="text/javascript" src="../js/service/brandService.js"></script>-->
          <script>
              var app = angular.module('pinyougou', ['pagination']);//定义模块
              app.controller('brandController', function ($scope, $http) {
                  //设置分页插件的参数
                  $scope.paginationConf = {
                      currentPage: 1,
                      totalItems: 10,
                      itemsPerPage: 10,
                      perPageOptions: [10, 20, 30, 40, 50],
                      onChange: function () {
                          $scope.reloadList();
                      }
                  };
                  $scope.reloadList = function () {
                      $scope.findPage($scope.paginationConf.currentPage, $scope.paginationConf.itemsPerPage);
                  };
      
                  $scope.findPage = function (page, rows) {
                      $http.get('../brand/findPage.do?page=' + page + '&rows=' + rows).success(function (response) {
                          $scope.list = response.rows;
                          $scope.paginationConf.totalItems = response.total;
                      })
                  };
                  $scope.add=function () {
                      $http.post('../brand/add.do', $scope.entity).success(function (response) {
                          if (response.success) {
                              $scope.reloadList();//添加成功后更新list集合的值
                              alert(response.message);
                          }else{
                              alert(response.message);//添加失败后展示message里的内容
                          }
                      })
                  };
                  $scope.add=function () {
                      $http.post('../brand/add.do',$scope.entity).success(function (response) {
                          if (response.success) {
                             $scope.reloadList();
                              alert(response.message);
                          }else{
                              alert(response.message);
                          }
                      })
                  }
              });
          </script>
      </head>
      <body class="hold-transition skin-red sidebar-mini" ng-app="pinyougou" ng-controller="brandController">
      <!-- .box-body -->
      <div class="box-header with-border">
          <h3 class="box-title">品牌管理</h3>
      </div>
      
      <div class="box-body">
      
          <!-- 数据表格 -->
          <div class="table-box">
      
              <!--工具栏-->
              <div class="pull-left">
                  <div class="form-group form-inline">
                      <div class="btn-group">
                          <button type="button" class="btn btn-default" title="新建" data-toggle="modal"
                                  data-target="#editModal" ng-click="entity={}"><i class="fa fa-file-o"></i> 新建
                          </button>
                          <button type="button" class="btn btn-default" title="删除" ng-click="dele()"><i
                                  class="fa fa-trash-o"></i> 删除
                          </button>
                          <button type="button" class="btn btn-default" title="刷新" onclick="window.location.reload();"><i
                                  class="fa fa-refresh"></i> 刷新
                          </button>
                      </div>
                  </div>
              </div>
              <div class="box-tools pull-right">
                  <div class="has-feedback">
                      品牌名称:<input type="text" ng-model="searchEntity.name"> 品牌首字母:<input type="text"
                                                                                         ng-model="searchEntity.firstChar">
                      <input class="btn btn-default" ng-click="reloadList()" type="button" value="查询">
                  </div>
              </div>
              <!--工具栏/-->
      
              <!--数据列表-->
              <table id="dataList" class="table table-bordered table-striped table-hover dataTable">
                  <thead>
                  <tr>
                      <th class="" style="padding-right:0px">
                          <input id="selall" type="checkbox" class="icheckbox_square-blue">
                      </th>
                      <th class="sorting_asc">品牌ID</th>
                      <th class="sorting">品牌名称</th>
                      <th class="sorting">品牌首字母</th>
                      <th class="text-center">操作</th>
                  </tr>
                  </thead>
                  <tbody>
                  <tr ng-repeat="entity in list">
                      <td><input type="checkbox" ng-click="updateSelection($event,entity.id)"></td>
                      <td>{{entity.id}}</td>
                      <td>{{entity.name}}</td>
                      <td>{{entity.firstChar}}</td>
                      <td class="text-center">
                          <button type="button" class="btn bg-olive btn-xs" ng-click="findById(entity.id)" data-toggle="modal"
                                  data-target="#editModal">修改
                          </button>
                      </td>
                  </tr>
      
                  </tbody>
              </table>
              <!--数据列表/-->
      
      
          </div>
          <!-- 数据表格 /-->
          <!-- 分页 -->
          <tm-pagination conf="paginationConf"></tm-pagination>
      
      </div>
      {{selectIds}}
      <!-- /.box-body -->
      
      <!-- 编辑窗口 -->
      <div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
          <div class="modal-dialog">
              <div class="modal-content">
                  <div class="modal-header">
                      <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
                      <h3 id="myModalLabel">品牌编辑</h3>
                  </div>
                  <div class="modal-body">
                      <table class="table table-bordered table-striped" width="800px">
                          <tr>
                              <td>品牌名称</td>
                              <td><input ng-model="entity.name" class="form-control" placeholder="品牌名称"></td>
                          </tr>
                          <tr>
                              <td>首字母</td>
                              <td><input ng-model="entity.firstChar" class="form-control" placeholder="首字母"></td>
                          </tr>
                      </table>
                  </div>
                  <div class="modal-footer">
                      <button class="btn btn-success" data-dismiss="modal" aria-hidden="true" ng-click="add()">保存</button>
                      <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">关闭</button>
                  </div>
              </div>
          </div>
      </div>
      
      </body>
      </html>

       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值