springboot权限管理系统 学习(七)

16 篇文章 2 订阅
10 篇文章 1 订阅

项目构建

先提一下遇到的坑吧

1、之前放文件的时候,没放到templates目录下面(本来以为已经放在这个目录下面了的),没放到这个目录下面的结果就是get请求的时候一直给你500,说这个/user/user-list没有找到,然后的话,我就去搜了很多关于这个错误
Exception processing template “user/userlist”: Error resolving template [user/userlist], template might not exist or might not be accessible by any of the configured Template Resolvers

  • (1)、开始的时候,我以为是我加载的路径有问题,因为我是在.yml文件里面写的是api-url : /api ,然后在controller下面写了一个变量@RequestMapping("${api-url}"),这个就是把.yml下的api-url的api值加到这个映射目录下。我在这个目录(/api)下面又写了一个(/hello)的映射目录,加了一个注解 @ResponseBody,用来返回return “hws”,试了一下,结果是可以返回的,说明这个大的路径(/api)是没有问题的,在.yml文件里面是可以被加载进来的
  • 在这里插入图片描述
 @GetMapping("/hello")
    @ResponseBody
    public String getHello(){
        return "hws";
    }
  • (2)、第一种方法不行,然后我去找我ApiController下面的@RequestMapping,发现也没有错误(/getPage)
  • (3)、第二种方法不行,然后接着又去找index.html里面我在iframe里面写的路径看看对不对,看了一下也是对的,路径的话是 /api/getPage?pageName=user/user-list ,这个也没错啊
src='/api/getPage?pageName=user/user-list'
  • (4)、这三种都试过了为什么还是不行呢??!! 于是,忽然间,发现了这个user目录好像和templates目录是并排的??!!之前添加文件的时候以为已经放在这个templates目录下面了,于是马上改了一下文件的位置,就可以加载视图了
    在这里插入图片描述

这里顺便把之前我在网上搜到的一下关于 template might not exist or might not be accessible by any of the configured Template Resolvers 这个错误也总结一下吧,虽然我自己没有过多的用到这些发生错误的原因
网上发生错误可能的原因如下:
原因一:在controller层对应的方法返回html路径及名称时,在前面多加了一个/
原因二:在配置文件中加上依赖,并且在.yml文件中也加上相应的依赖,原因:在使用springboot的过程中,如果使用thymeleaf作为模板文件,则要求HTML格式必须为严格的html5格式,必须有结束标签,否则会报错。

在.yml文件中加入

thymeleaf:
    mode: HTML
    encoding: utf-8
    cache: false
    prefix: classpath:/templates/
在pom.xml文件中加入

<dependency>
    <groupId>net.sourceforge.nekohtml</groupId>
    <artifactId>nekohtml</artifactId>
    <version>1.9.22</version>
</dependency>

原因三:可能是由于找不到前端VIew路径的原因

@RequestMapping("/getPage")
    public ModelAndView getPage(ModelAndView modelAndView, String pageName){
        modelAndView.setViewName(pageName);
        return modelAndView;
    }

正确的路径图:在这里插入图片描述

如何使用LayUI

自己用了Visio软件画了一个流程图,如下:
通过路由可以跳转到各个页面(感觉和自己学过的vue有点相似),然后跳转到页面之后可以进行获取数据,获取数据的话,就2件事情,(1)、通过layui来写前端 (2)、写后端的数据处理,最后返回Json数据
layui的文档https://www.layui.com/doc/
在这里插入图片描述

核心内容

1、基础说明
2、页面元素(html,css之类的)
3、内置模块(像tabel…)

举个例子

使用预先加载

1、用什么模块,就把什么模块放在里面,这样就可以用数组的方式去加载了
2、然后进行获取模块的操作
3、用获取的模块的方法就可以实现了
在这里插入图片描述
在这里插入图片描述

构建一

(1)、先把layUI里面的示例部分table放到我们的index里面,(2)、然后再加入layUI里面的script部分,注意,从官网copy下来的代码,不能这样写:]],以下图所示的为主,下图写法是对的(原因是thymeleaf里面好像也有这样的解析,解析的时候会报错),
(3)、最后效果如图三所示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

构建二

主要关注的是LayUI的以下三个
1、elem:绑定table的id
2、url:绑定Controller里面url的地址
3、cols:绑定表格的title和字段的返回值
在这里插入图片描述

LayUI的Json返回数据以及项目基础类Json返回类

1、在LayUI的官网看了一下它的数据,格式化后如下图所示
在这里插入图片描述
2、从这里可以看出,官方文档示例里面返回值有code,msg,count,data,刚刚好下面的response里面也有,并且与之一 一对应。所以在后端写返回值的时候,也要有这些值。code,msg,data,count

在这里插入图片描述
3、LayUI的Json返回数据
刚刚提到的4种之一的data:返回数据主要有以下这么3个
(1)、返回 0个 -------- void
(2)、返回 1个 -------- Object
(3)、返回 n个 -------- List

ArrayList的用法

顺便提一下ArrayList的用法
ArrayList< E >:大小可变的数组的实现
< E >:是一种特殊的数据类型,泛型
在出现E的地方我们使用引用数据类型替换即可
举例:ArrayList< String>, ArrayList< Student>

public class ArrayListDemo {
    public static void main(String[] args) {
        //创建集合对象
        ArrayList<String> array=new ArrayList<String>();
        //public boolean add(E e)将指定的元素添加到此列表的尾部
        array.add("hello");
        array.add("world");
        array.add("hws");
        // public void add(int index,E element)将指定的元素插入此列表中的指定位置。向右移动当前位于该位置的元素(如果有)以及所有后续元素(将其索引加 1)。
        array.add(1,"app");
        System.out.println("array:"+array);
    }
@GetMapping("/list")
    @ResponseBody
    public Results<SysUser> getList(){
        ArrayList<SysUser> arrayList = new ArrayList<>();
        arrayList.add(sysUserService.getPerson("admin"));
        return Results.success("success",10,arrayList);
    }

在这里插入图片描述

RBAC模型(Role-Based Access Control)

在这里插入图片描述主要有3个,分别是用户、角色、权限。
用户:登录账号和密码进入各自属性的界面,管理员界面或者是普通用户的界面
角色:角色里面主要起到桥梁的作用,将一个用户对应某一个角色,而这角色又有很多对应的权限。假设管理员有10个权限,普通用户只有3个权限,这个角色就可以把一个用户A对应这个管理员A1,而这个管理员A1拥有之前该角色初始分配给的10个权限,所以用户A也就有了10个权限
权限
包括页面权限(管理员登录进去有8个子功能模块,而普通用户登录进去只有3个子功能模块),
操作权限(普通用户只能进行只读操作,管理员可以进行删除,修改等操作),
数据权限(通过sql)等等

哪些地方要进行权限控制

1、页面控制:比如管理员可以看到1,2,3页面;普通用户只能看到1,2页面
2、操作权限:主要涉及对按钮的操作,增删改查等控制
3、数据权限

数据库的设计

设计前自己初步想了一下,至少是5张表(用户、角色、权限、用户-角色表、角色-权限表)
简化的话(如果用户人数比较多的时候),假设有1000个人,传统的来说的话,就是把这1000个人一个一个的进行角色的匹配,优化好之后的话,可以把这1000个人变成一个用户组(部门),分配的时候,直接把这一个用户组(部门)进行分配即可。
在这里插入图片描述
1、首先打开mysql,点击逆向数据库到模型
在这里插入图片描述
在这里插入图片描述
2、数据库设计的时候
普通表里面的话,就是进行一些id主键的自增
在这里插入图片描述

关联表 (着重介绍一下)

一般的话,用数据库来设置外键,
外键名:通常是fk_(对应的字段名)
栏位:就是就是写在这个关联表上的字段名称
参考数据库:就是有这个表的总的一个数据库库名称
参考表:这个是这个字段参考的是哪一个表,比如我这个fk_roleid,参考的是我的sys_role表,那么这里就写上sys_role
参考栏位:在那个参考表里面定义的字段
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

隐形的稻草人HWS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值