layui请求加token_layui的⼀个登录和权限⽰例
layui是⼀个专门为后台⽽设计的⼀个前端框架,功能强⼤,特别适合后端开发⼈员,本⽂以⼀个demo把登录模块和权限模块基本原理说明,详细的内容可以参考layui的官⽅⽂档,git地址
搭建项⽬
项⽬架构是springboot+thymeleaf+layui,结构如下图,⽂件有点多,分成两张图
image.png
image.png
其中resources资源⽂件⾥的layui⽂件夹下就是layui的所有⽂件,内容需要到官⽹下载,解压后全部复制即可
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.1.2.RELEASE
com.haijunyin
layuidemo-permission
0.0.1-SNAPSHOT
layuidemo-permission
Demo project for Spring Boot
war
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-tomcat
javax.servlet
javax.servlet-api
4.0.0
provided
org.thymeleaf
thymeleaf
3.0.11.RELEASE
org.thymeleaf
thymeleaf-spring4
layui下载
3.0.11.RELEASE
org.springframework.boot
spring-boot-starter-thymeleaf
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
application.properties
#thymelea模板配置
xspring.thymeleaf.prefi=classpath:/templates/
spring.thymeleaf.suffix=.html
de=HTML5
ding=UTF-8
#热部署⽂件,页⾯不产⽣缓存,及时更新
spring.thymeleaf.cache=false
LayuidemoPermissionApplication.java
package com.haijunyin.layuidemo.permission;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import t.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableAsync;
/**
* 继承SpringBootServletInitializer,因为继承SpringBootServletInitializer是继承WebApplicationInitializer的,⽽servlet容器启动的时候
* 会将WebApplicationInitializer相关的所有⼦类实例化(这也是servlet3.0以上的版本提供⽀持),所以我们还需要在l
* ⽂件中导⼊servlet3.0及以上的版本
*/
@ComponentScan(value = "com.haijunyin.layuidemo.permission")
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@EnableAsync
public class LayuidemoPermissionApplication extends SpringBootServletInitializer{
@Override
public SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(LayuidemoPermissionApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(LayuidemoPermissionApplication.class, args);
}
}
admin_user_list.html
layui在线调试
body{margin: 10px;}
.demo-carousel{height: 200px; line-height: 200px; text-align: center;}
演⽰说明
⽇期
分页
上传
滑块
在这⾥,你将以最直观的形式体验 layui!
在编辑器中可以执⾏ layui 相关的⼀切代码
你也可以点击左侧导航针对性地试验我们提供的⽰例
如果最左侧的导航的⾼度超出了你的屏幕
你可以将⿏标移⼊导航区域,然后滑动⿏标滚轮即可
点击上传,或将⽂件拖拽到此处
layui {{ layui.v }} 提供强⼒驱动
version: '1545041465480' //为了更新 js 缓存,可忽略
});
layui.use(['laydate', 'laypage', 'layer', 'table', 'carousel', 'upload', 'element', 'slider'], function(){ var laydate = layui.laydate //⽇期
,laypage = layui.laypage //分页
,layer = layui.layer //弹层
,table = layui.table //表格
,carousel = layui.carousel //轮播
,upload = layui.upload //上传
,element = layui.element //元素操作
,slider = layui.slider //滑块
//向世界问个好
layer.msg('Hello World');
//监听Tab切换
<('tab(demo)', function(data){
layer.tips('切换了 '+ data.index +':'+ this.innerHTML, this, {
tips: 1
});
});
//执⾏⼀个 table 实例
elem: '#demo'
,height: 420
,url: '/demo/table/user/' //数据接⼝
,title: '⽤户表'
,page: true //开启分页
,toolbar: 'default' //开启⼯具栏,此处显⽰默认图标,可以⾃定义模板,详见⽂档,totalRow: true //开启合计⾏
,cols: [[ //表头
{type: 'checkbox', fixed: 'left'}
,{field: 'id', title: 'ID', width:80, sort: true, fixed: 'left', totalRowText: '合计:'} ,{field: 'username', title: '⽤户名', width:80}
,{field: 'experience', title: '积分', width: 90, sort: true, totalRow: true}
,{field: 'sex', title: '性别', width:80, sort: true}
,{field: 'score', title: '评分', width: 80, sort: true, totalRow: true}
,{field: 'city', title: '城市', width:150}
,{field: 'sign', title: '签名', width: 200}
,{field: 'classify', title: '职业', width: 100}
,{field: 'wealth', title: '财富', width: 135, sort: true, totalRow: true}
,{fixed: 'right', width: 165, align:'center', toolbar: '#barDemo'}
]]
});
//监听头⼯具栏事件
<('toolbar(test)', function(obj){
var checkStatus = table.fig.id)
,data = checkStatus.data; //获取选中的数据
switch(obj.event){
case 'add':
layer.msg('添加');
break;
case 'update':
if(data.length === 0){
layer.msg('请选择⼀⾏');
} else if(data.length > 1){
layer.msg('只能同时编辑⼀个');
} else {
layer.alert('编辑 [id]:'+ checkStatus.data[0].id);
}
break;
case 'delete':
if(data.length === 0){
layer.msg('请选择⼀⾏');
} else {
layer.msg('删除');
}
break;
};
});
//监听⾏⼯具事件
<('tool(test)', function(obj){ //注:tool 是⼯具条事件名,test 是 table 原始容器的属性 lay-filter="对应的值" var data = obj.data //获得当前⾏数据
,layEvent = obj.event; //获得 lay-event 对应的值
if(layEvent === 'detail'){
layer.msg('查看操作');
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论