(Spring+SpringMVC+MyBatis)SSM中软实习第九天——角色控制页面和ajax异步请求

   在昨天实现springsecurity鉴权和分页等功能后,对页面进行修改优化,使用户名在前端显示,根据用户的不同权限显示不同的操作列表。并补充学习ajax相关知识。
   注意导入sql后修改数据库配置文件,我的MySql端口是3306

一、页面的修改
效果图如下,zhangsan是管理员权限,lisi是普通用户
用户管理界面

修改aside.jsp
头部引入

<%@taglib prefix=“security” uri=“http://www.springframework.org/security/tags” %>
1
然后在“在线”上加用户名

1 2 3

把用户管理包裹起来,代码如下

<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8” isELIgnored=“false”%>
<%@taglib prefix=“security” uri=“http://www.springframework.org/security/tags” %>

header.jsp

<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8” isELIgnored=“false”%>
<%@taglib prefix=“security” uri=“http://www.springframework.org/security/tags” %>

二、ajax应用,批量删除
导入js包,里面有

先在user-list.jsp中写好批量删除的页面和相关js函数以及ajax请求

<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8” isELIgnored=“false”%>
<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>

数据 - AdminLTE2定制版
  <!-- 页面头部 -->
  <jsp:include page="header.jsp"></jsp:include>
  <!-- 页面头部 /-->

  <!-- 导航侧栏 -->
  <jsp:include page="aside.jsp"></jsp:include>
  <!-- 导航侧栏 /-->

  <!-- 内容区域 -->
  <div class="content-wrapper">

     <!-- 内容头部 -->
     <section class="content-header">
     <h1>
        用户管理 <small>全部用户</small>
     </h1>
     <ol class="breadcrumb">
        <li><a href="#"><i
              class="fa fa-dashboard"></i> 首页</a></li>
        <li><a
           href="#">用户管理</a></li>

        <li class="active">全部用户</li>
     </ol>
     </section>
     <!-- 内容头部 /-->

        <!-- 正文区域 -->
        <section class="content"> <!-- .box-body -->
        <div class="box box-primary">
           <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="新建"
                                onclick="location.href='${pageContext.request.contextPath}/pages/user-add.jsp'" >
                             <i class="fa fa-file-o"></i> 新建
                          </button>
                          
                          <button type="button" class="btn btn-default" title="刷新" onclick="deleteAll()">
                             <i class="fa fa-refresh"></i> 删除
                          </button>
                       </div>
                    </div>
                 </div>
                 <form action="#"
                      method="post">
                    <div class="col-md-4 data1">
                       <input type="text" class="form-control" name="name"
                             placeholder="cname" value="">
                    </div>
                    <button type="submit" class="btn bg-maroon">搜索</button>
                 </form>
                 <!--工具栏/-->

                 <!--数据列表-->
                 <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_desc">用户名</th>
                          <th class="sorting_asc sorting_asc_disabled">密码</th>
                          <th class="text-center">操作</th>
                       </tr>
                    </thead>
                    <tbody>
                        <c:forEach var="user" items="${pageInfos.list}">
                          <tr>
                             <td><input name="ids" type="checkbox" value="${user.id}"></td>
                             <td>${user.id}</td>
                             <td>${user.name}</td>
                             <td>${user.password}</td>
                             <td class="text-center">
                                <a href="${pageContext.request.contextPath}/user/toUpdate.do?id=${user.id}" class="btn bg-olive btn-xs">更新</a>
                                <a href="${pageContext.request.contextPath}/user/delete.do?id=${user.id}" class="btn bg-olive btn-xs">删除</a>
                                <a href="#" class="btn bg-olive btn-xs">添加角色</a>
                             </td>
                          </tr>
                       </c:forEach>
                    </tbody>
                    <!--
                        <tfoot>
                        <tr>
                        <th>Rendering engine</th>
                        <th>Browser</th>
                        <th>Platform(s)</th>
                        <th>Engine version</th>
                        <th>CSS grade</th>
                        </tr>
                        </tfoot>-->
                 </table>
                 <!--数据列表/-->

              </div>
              <!-- 数据表格 /-->

           </div>
           <!-- /.box-body -->
              <div class="box-tools pull-right">
                 <ul class="pagination">
                    <li><a href="${pageContext.request.contextPath}/user/findAll.do?page=1&size=5" aria-label="Previous">首页</a></li>
                    <li><a href="${pageContext.request.contextPath}/user/findAll.do?page=${pageInfos.pageNum-1}&size=5">上一页</a></li>
                    <c:forEach begin="1" end="${pageInfos.pages}" var="pageNum">
                       <li><a href="${pageContext.request.contextPath}/user/findAll.do?page=${pageNum}&size=5">${pageNum}</a></li>
                    </c:forEach>
                    <li><a href="${pageContext.request.contextPath}/user/findAll.do?page=${pageInfos.pageNum+1}&size=5">下一页</a></li>
                    <li><a href="${pageContext.request.contextPath}/user/findAll.do?page=${pageInfos.pages}&size=5" aria-label="Next">尾页</a></li>
                 </ul>
              </div>

           </div>
           <!-- /.box-footer-->

        <!--</div>-->

        </section>
        <!-- 正文区域 /-->

     </div>
     <!-- @@close -->
     <!-- 内容区域 /-->

     <!-- 底部导航 -->
     <footer class="main-footer">
     <div class="pull-right hidden-xs">
        <b>Version</b> 1.0.8
     </div>
     <strong>Copyright &copy; 2014-2017 <a
        href="http://www.itcast.cn">研究院研发部</a>.
     </strong> All rights reserved. </footer>
     <!-- 底部导航 /-->

  </div>

  <script src="../plugins/jQuery/jquery-2.2.3.min.js"></script>
  <script src="../plugins/jQueryUI/jquery-ui.min.js"></script>
  <script>
     $.widget.bridge('uibutton', $.ui.button);
  </script>
  <script src="../plugins/bootstrap/js/bootstrap.min.js"></script>
  <script src="../plugins/raphael/raphael-min.js"></script>
  <script src="../plugins/morris/morris.min.js"></script>
  <script src="../plugins/sparkline/jquery.sparkline.min.js"></script>
  <script src="../plugins/jvectormap/jquery-jvectormap-1.2.2.min.js"></script>
  <script src="../plugins/jvectormap/jquery-jvectormap-world-mill-en.js"></script>
  <script src="../plugins/knob/jquery.knob.js"></script>
  <script src="../plugins/daterangepicker/moment.min.js"></script>
  <script src="../plugins/daterangepicker/daterangepicker.js"></script>
  <script src="../plugins/daterangepicker/daterangepicker.zh-CN.js"></script>
  <script src="../plugins/datepicker/bootstrap-datepicker.js"></script>
  <script
     src="../plugins/datepicker/locales/bootstrap-datepicker.zh-CN.js"></script>
  <script
     src="../plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js"></script>
  <script src="../plugins/slimScroll/jquery.slimscroll.min.js"></script>
  <script src="../plugins/fastclick/fastclick.js"></script>
  <script src="../plugins/iCheck/icheck.min.js"></script>
  <script src="../plugins/adminLTE/js/app.min.js"></script>
  <script src="../plugins/treeTable/jquery.treetable.js"></script>
  <script src="../plugins/select2/select2.full.min.js"></script>
  <script src="../plugins/colorpicker/bootstrap-colorpicker.min.js"></script>
  <script
     src="../plugins/bootstrap-wysihtml5/bootstrap-wysihtml5.zh-CN.js"></script>
  <script src="../plugins/bootstrap-markdown/js/bootstrap-markdown.js"></script>
  <script
     src="../plugins/bootstrap-markdown/locale/bootstrap-markdown.zh.js"></script>
  <script src="../plugins/bootstrap-markdown/js/markdown.js"></script>
  <script src="../plugins/bootstrap-markdown/js/to-markdown.js"></script>
  <script src="../plugins/ckeditor/ckeditor.js"></script>
  <script src="../plugins/input-mask/jquery.inputmask.js"></script>
  <script
     src="../plugins/input-mask/jquery.inputmask.date.extensions.js"></script>
  <script src="../plugins/input-mask/jquery.inputmask.extensions.js"></script>
  <script src="../plugins/datatables/jquery.dataTables.min.js"></script>
  <script src="../plugins/datatables/dataTables.bootstrap.min.js"></script>
  <script src="../plugins/chartjs/Chart.min.js"></script>
  <script src="../plugins/flot/jquery.flot.min.js"></script>
  <script src="../plugins/flot/jquery.flot.resize.min.js"></script>
  <script src="../plugins/flot/jquery.flot.pie.min.js"></script>
  <script src="../plugins/flot/jquery.flot.categories.min.js"></script>
  <script src="../plugins/ionslider/ion.rangeSlider.min.js"></script>
  <script src="../plugins/bootstrap-slider/bootstrap-slider.js"></script>
  <script>
     $(document).ready(function() {
        // 选择框
        $(".select2").select2();

        // WYSIHTML5编辑器
        $(".textarea").wysihtml5({
           locale : 'zh-CN'
        });
     });

     // 设置激活菜单
     function setSidebarActive(tagUri) {
        var liObj = $("#" + tagUri);
        if (liObj.length > 0) {
           liObj.parent().parent().addClass("active");
           liObj.addClass("active");
        }
     }

     $(document)
           .ready(
                 function() {

                    // 激活导航位置
                    setSidebarActive("admin-datalist");

                    // 列表按钮 
                    $("#dataList td input[type='checkbox']")
                          .iCheck(
                                {
                                   checkboxClass : 'icheckbox_square-blue',
                                   increaseArea : '20%'
                                });
                    // 全选操作 
                    $("#selall")
                          .click(
                                function() {
                                   var clicks = $(this).is(
                                         ':checked');
                                   if (!clicks) {
                                      $(
                                            "#dataList td input[type='checkbox']")
                                            .iCheck(
                                                  "uncheck");
                                   } else {
                                      $(
                                            "#dataList td input[type='checkbox']")
                                            .iCheck("check");
                                   }
                                   $(this).data("clicks",
                                         !clicks);
                                });
                 });
  </script>
在IUserInfoDao中定义deleteAll方法

void deleteAll(List list);
1
在UserMapper.xml实现方法

delete from userinfo where id in #{id} 在IUserInfoService中定义方法

void deleteAll(List list);
1
在UserInfoService中实现

@Override
public void deleteAll(List list) {
userInfoDao.deleteAll(list);
}
在UserInfoController中控制

其中一定要记得加上@ResponseBody以保证返回的是json格式,否则前端判断的时候会认为删除失败滴

@RequestMapping(“deleteAll.do”)
@ResponseBody
public String deleteAll(String userlist){
String[] strs=userlist.split(",");
List ids=new ArrayList<>();
for(int i=0;i<strs.length;i++){
ids.add(Integer.parseInt(strs[i]));
}
userInfoService.deleteAll(ids);
return “”;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值