一、面向对象思想简化数据库操作

public List<Role> getObjectsByIds(List<AdminRole> adminRoles) {
        List<Role> roles=new ArrayList<Role>();
        for(AdminRole ar:adminRoles){
            roles.add(findById(ar.getRole().getId()));
        }
        return roles;
    }
    等同于:
    private List<Role> tests(List<AdminRole> adminRoles){
        if(adminRoles!=null){
            StringBuffer sb=new StringBuffer();
            int len=adminRoles.size();
            sb.append("(");
            for(int i=0;i<len;i++){
                AdminRole ar=adminRoles.get(i);
                System.out.println(ar.getId()+"---------------"+ar.getRole().getId());
                if(i==0){
                    sb.append(ar.getRole().getId());
                }else{
                    sb.append(","+ar.getRole().getId());
                }
            }
            sb.append(")");
            System.out.println(sb.toString());
            String sql="select id,name,description from role where id in "+sb.toString();
            return jdbcTemplate.query(sql,new RowMapper<Role>(){

@Override
                public Role mapRow(ResultSet rs, int arg1)
                        throws SQLException {
                    Role role=new Role();
                    role.setId(rs.getInt("id"));
                    role.setName(rs.getString("name"));
                    role.setDescription(rs.getString("description"));
                    return role;
                }});
        }else{
            return null;
        }
    }

二、选择授予角色的操作

if("grant".equals(oper)){
            String aid=request.getParameter("aid");
            Integer id=Integer.valueOf(aid);
            Admin admin=adminService.findById(id);
            //查询用户对应的角色信息
            List<Role> adminRoles=roleService.getObjectsByIds(adminRoleService.getObjectsByAid(id));
            //查询系统角色
            List<Role> roles=roleService.getObjects();
            request.setAttribute("admin", admin);//存储用户信息
            request.setAttribute("adminRoles", adminRoles);//存储用户角色信息
            request.setAttribute("roles", roles);//存储系统角色信息
            request.getRequestDispatcher("./user/admin_role.jsp").forward(request, response);
        }

三、授予角色过程

if("role".equals(oper)){
            String aid=request.getParameter("aid");
            int id=Integer.valueOf(aid);
            List<AdminRole> adminRoles=adminRoleService.getObjectsByAid(id);
            //创建一个集合,存储该用户已存在的角色值
            List<Integer> lids=new ArrayList<Integer>();
            if(adminRoles!=null){
                for(AdminRole ar:adminRoles){
                    lids.add(ar.getId());
                }
            }
            //获取用户新赋予的角色值
            String[] rids=request.getParameterValues("rids");
            if(rids!=null&&rids.length>0){
                for(int i=0;i<rids.length;i++){
                    int rid=Integer.parseInt(rids[i]);
                    if(lids.contains(rid)){
                        System.out.println("已经存在就不处理");
                        lids.remove(rid);
                    }else{
                        //第一种情况,数据库本身没有
                        Admin admin=new Admin();
                        admin.setId(id);
                        Role role=new Role();
                        role.setId(rid);
                        adminRoleService.insertObject(new AdminRole(admin, role));
                    }
                }
                //把没有赋予的角色,但本来存在的角色删除掉
                if(lids.size()>0){
                    for(Integer did:lids){
                        adminRoleService.deleteObjectById(did);
                    }
                }
            }else{
                //如果为null,说明该用户不再被赋予角色
                //判断已有角色是否为空
                if(adminRoles!=null){
                    for(AdminRole ar:adminRoles){
                        adminRoleService.deleteObjectById(ar.getId());
                    }
                }
            }
            request.getRequestDispatcher("./admin.do?oper=select").forward(request, response);
        }

JavaWeb学习记录(二十五)——权限管理总结的更多相关文章

  1. javaweb学习总结(二十五)——jsp简单标签开发(一)

    一.简单标签(SimpleTag) 由于传统标签使用三个标签接口来完成不同的功能,显得过于繁琐,不利于标签技术的推广, SUN公司为降低标签技术的学习难度,在JSP 2.0中定义了一个更为简单.便于编 ...

  2. javaweb学习总结二十五(response对象的用法一)

    一:Reponse对象的概念 当客户端发送http请求时,服务器端会对每一次请求,创建request对象和response对象. response对象包括三个部分:响应头.响应状态码以及响应体 二:r ...

  3. JavaWeb学习记录(十五)——浏览器Cookie禁用后的处理

    IE禁用Cookie方式:

  4. 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧

    目录 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧 25.1 Shell中的色彩处理 25.2 awk基本应用 25.2.1 概念 25.2.2实例演示 25.3 awk ...

  5. python3.4学习笔记(二十五) Python 调用mysql redis实例代码

    python3.4学习笔记(二十五) Python 调用mysql redis实例代码 #coding: utf-8 __author__ = 'zdz8207' #python2.7 import ...

  6. Linux学习之CentOS(十五)----磁盘管理之 启动挂载(转)

    启动挂载 /etc/fstab 及 /etc/mtab 刚刚上面说了许多,那么可不可以在启动的时候就将我要的文件系统都挂好呢?这样我就不需要每次进入 Linux 系统都还要在挂载一次呀!当然可以啰!那 ...

  7. JavaWeb学习记录(十二)——商城购物之数据库操作的接口定义

    一.基本接口,该项目中所有接口都继承它 package blank.dao; import java.util.List; public interface BaseDao<T,PK> { ...

  8. javaweb学习总结(四十五)——监听器(Listener)学习二

    一.监听域对象中属性的变更的监听器 域对象中属性的变更的事件监听器就是用来监听 ServletContext, HttpSession, HttpServletRequest 这三个对象中的属性变更信 ...

  9. JMeter学习(二十五)HTTP属性管理器HTTP Cookie Manager、HTTP Request Defaults

    Test Plan的配置元件中有一些和HTTP属性相关的元件:HTTP Cache Manager.HTTP Authorization Manager.HTTP Cookie Manager.HTT ...

  10. Javaweb学习笔记——(十五)—————— sql复习

    sql复习 数据库管理系统(DBMS)的概述 1.什么是DBMS:数据的仓库 *方便查询 *可存储的数据量大 *保证数据的完整.一致 *安全可靠 2.DBMS的发展:今天主流数据库为关系型数据库管理系 ...

随机推荐

  1. IT公司100题-18-圆圈中最后剩下的数字

    问题描述: n个数字(下标为0, 1, …, n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(当前数字从1开始计数).当一个数字被删除后,从被删除数字的下一个数字开始计数,继续删除 ...

  2. 蓝桥杯 algo——6 安慰奶牛 (最小生成树)

    问题描述 Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续地编号为1到N.每一个牧场都是一个奶牛的家.FJ计 划除去P条道路中尽可能多的道路 ...

  3. AngularJS结构简介

    AngularJS是MVC架构,M是C里面的属性-值,C是js的class,V是DOM 各个关键特性的结构如下图所示: http://my.oschina.net/tommyfok/blog/2970 ...

  4. (转载)Htmlparser Filter 简要归纳

    1 . 逻辑关系:与或非 AndFilter()           Creates a new instance of an AndFilter. AndFilter(NodeFilter[] pr ...

  5. ios 8+ (xcode 6.0 +)应用程序Ad Hoc 发布前多设备测试流程详解

    我们开发的程序在经过simulator以及自己的iOS设备测试后,也基本完成应用程序了,这时候我们就可以把它发布出去了更更多的人去测试,我们可以在iOS平台使用ad hoc实现. 你在苹果购买的开发者 ...

  6. Android studio 环境搭建

    环境变量: CLASSPATH:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar JAVA_HOME:F:\Prog ...

  7. UIViewController添加子控制器(addChildViewController)

    // //  TaskHallViewController.m //  yybjproject // //  Created by bingjun on 15/10/27. //  Copyright ...

  8. IOS的变量前加extern和static字段

    IOS的变量前加extern和static字段 前一阵子,做项目的时候到网上找Demo,打开运行的时候发现其中变量前有关键字extern和static,所以我研究了一下子 对于extern来说可以理解 ...

  9. Ubuntu 14.10 下awk命令详解

    简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...

  10. sublime3笔记

    选择类Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本. Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑.举个栗子:快速选中并更改所有相同的变量名.函数名 ...