搭建项目
项目架构是springboot+thymeleaf+layui,结构如下图,文件有点多,分成两张图
其中resources资源文件里的layui文件夹下就是layui的所有文件,内容需要到官网下载,解压后全部复制即可
pom.xml
<?xml version="1.0" encoding="UTF-8"?>4.0.0org.springframework.boot spring-boot-starter-parent 2.1.2.RELEASEcom.haijunyin layuidemo-permission 0.0.1-SNAPSHOTlayuidemo-permissionDemo project for Spring Bootwar1.8org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat javax.servlet javax.servlet-api 4.0.0providedorg.thymeleaf thymeleaf 3.0.11.RELEASEorg.thymeleaf thymeleaf-spring4 3.0.11.RELEASEorg.springframework.boot spring-boot-starter-thymeleaf org.springframework.boot spring-boot-starter-test testorg.springframework.boot spring-boot-maven-plugin
application.properties
#thymelea模板配置xspring.thymeleaf.prefi=classpath:/templates/spring.thymeleaf.suffix=.htmlspring.thymeleaf.mode=HTML5spring.thymeleaf.encoding=UTF-8#热部署文件,页面不产生缓存,及时更新spring.thymeleaf.cache=falsespring.resources.chain.strategy.content.enabled=truespring.resources.chain.strategy.content.paths=/**
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 org.springframework.context.annotation.ComponentScan;import org.springframework.scheduling.annotation.EnableAsync;/** * 继承SpringBootServletInitializer,因为继承SpringBootServletInitializer是继承WebApplicationInitializer的,而servlet容器启动的时候 * 会将WebApplicationInitializer相关的所有子类实例化(这也是servlet3.0以上的版本提供支持),所以我们还需要在pom.xml * 文件中导入servlet3.0及以上的版本 */@ComponentScan(value = "com.haijunyin.layuidemo.permission")@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})@EnableAsyncpublic 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在线调试
- 演示说明
- 日期
- 分页
- 上传
- 滑块
在这里,你将以最直观的形式体验 layui!
在编辑器中可以执行 layui 相关的一切代码
你也可以点击左侧导航针对性地试验我们提供的示例
如果最左侧的导航的高度超出了你的屏幕
你可以将鼠标移入导航区域,然后滑动鼠标滚轮即可
点击上传,或将文件拖拽到此处
layui {{ layui.v }} 提供强力驱动
admin_user_list.html
layui在线调试
- 演示说明
- 日期
- 分页
- 上传
- 滑块
在这里,你将以最直观的形式体验 layui!
在编辑器中可以执行 layui 相关的一切代码
你也可以点击左侧导航针对性地试验我们提供的示例
如果最左侧的导航的高度超出了你的屏幕
你可以将鼠标移入导航区域,然后滑动鼠标滚轮即可
点击上传,或将文件拖拽到此处
layui {{ layui.v }} 提供强力驱动
DefineAdapter.java,拦截器配置
package com.haijunyin.layuidemo.permission.config;import com.haijunyin.layuidemo.permission.interceptor.LoginInterceptor;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.InterceptorRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;import java.util.ArrayList;import java.util.List;@Configurationpublic class DefineAdapter implements WebMvcConfigurer { @Autowired private LoginInterceptor loginInterceptor; //登录拦截器 @Override public void addInterceptors(InterceptorRegistry registry) { //排除不被拦截的资源 List excludePaths = new ArrayList<>(); //layui的静态文件 excludePaths.add("/layui/**"); //静态页面 excludePaths.add("/**/*.html"); //登录 excludePaths.add("/"); excludePaths.add("/login");// excludePaths.add("/error"); registry.addInterceptor(loginInterceptor). addPathPatterns("/**").excludePathPatterns(excludePaths); }}
AdminController.java
package com.haijunyin.layuidemo.permission.controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping(value = "admin")public class AdminController { @RequestMapping(value = "list