目录
1.项目简介 1
1.1背景分析 1
1.2技术栈 1
2.数据库设计 2
2.1表结构 2
2.2ER图 4
3.项目实现 5
3.1项目配置 5
3.2数据源配置 10
3.3Mybatis-plus逆向工程实现 10
3.4Shiro安全配置 11
3.5认证功能实现 15
3.6跨域配置 17
3.7前端运行环境配置 20
4.项目展示 20
5.总结 28
随着人们生活水平和消费能力的提高和智能技术在家庭生活中的普及,引发了卫浴革命,使智能马桶成为卫浴行业的热门新兴产品。
随着未来智能家居技术和物联网的加速发展,人们的生活习惯在世界各地逐渐改变。对智能马桶资源节约、舒适使用等功能的需求也越来越强烈。
目前,全球智能马桶正处于市场竞争激烈的时期。市场上不断推出节水实用的创新产品,技术水平不断提高,本文转载自http://www.biyezuopin.vip/onews.asp?id=14695引领全球类似产品的创新。
1.项目简介
1.1背景分析
本项目是基于上一篇文章续写的,主要是详细介绍智能家居门户系统的后台管理部分,管理员可以通过本项目的功能系统快速管理前台页面和功能。
1.2技术栈
采用的技术栈是前后端分离机制,前端采用的是Vue+ElementUI搭建的,后端在原本的项目上进行改写,采用Mybatis-plus逆向工程代码生成器快速生成架构和基础代码,同时引入himrbate持久层jpa框架,减少了sql的编写工作量。
3.2数据源配置
(1)将设置参数的druid的数据源注册到IOC容器中
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druid() {
return new DruidDataSource();
}
(2)配置Druid监控
@Bean
public ServletRegistrationBean<StatViewServlet> statViewServlet(){
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
//com.alibaba.druid.support.http.ResourceServlet
Map<String,String> initParams = Maps.newHashMap();
initParams.put("loginUsername","mark");//登录后台时的用户名
initParams.put("loginPassword","123456");//登录后台时的密码
initParams.put("allow","");//默认就是允许所有的访问
initParams.put("deny","");//拒绝
servletRegistrationBean.setInitParameters(initParams);
return servletRegistrationBean;
}
(3)配置一个web监控的过滤器
@Bean
public FilterRegistrationBean webStatFilter(){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new WebStatFilter());
Map<String,String> initParams = Maps.newHashMap();
initParams.put("exclusions","*.js,*.css,/druid/*");//不拦截的请求
filterRegistrationBean.setInitParameters(initParams);
filterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));
return filterRegistrationBean;
}
3.3Mybatis-plus逆向工程实现
@Bean
public MybatisSqlSessionFactoryBean mybatisSqlSessionFactoryBean() {
MybatisSqlSessionFactoryBean mybatisPlus = new MybatisSqlSessionFactoryBean();
mybatisPlus.setDataSource(dataSource);
mybatisPlus.setVfs(SpringBootVFS.class);
if (StringUtils.hasText(this.properties.getConfigLocation())) {
mybatisPlus.setConfigLocation(this.resourceLoader.getResource(this.properties.getConfigLocation()));
}
mybatisPlus.setConfiguration(properties.getConfiguration());
if (!ObjectUtils.isEmpty(this.interceptors)) {
mybatisPlus.setPlugins(this.interceptors);
}
MybatisConfiguration mc = new MybatisConfiguration();
mc.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);
mybatisPlus.setConfiguration(mc);
if (this.databaseIdProvider != null) {
mybatisPlus.setDatabaseIdProvider(this.databaseIdProvider);
}
if (StringUtils.hasLength(this.properties.getTypeAliasesPackage())) {
mybatisPlus.setTypeAliasesPackage(this.properties.getTypeAliasesPackage());
}
if (StringUtils.hasLength(this.properties.getTypeHandlersPackage())) {
mybatisPlus.setTypeHandlersPackage(this.properties.getTypeHandlersPackage());
}
if (!ObjectUtils.isEmpty(this.properties.resolveMapperLocations())) {
mybatisPlus.setMapperLocations(this.properties.resolveMapperLocations());
}
return mybatisPlus;
}