【Vue+SpringBoot】超详细!一周开发一个SpringBoot + Vue+MybatisPlus+Shiro+JWT+Redis前后端分离个人博客项目!!!【项目完结】-精品文档资料整理.docx
《【Vue+SpringBoot】超详细!一周开发一个SpringBoot + Vue+MybatisPlus+Shiro+JWT+Redis前后端分离个人博客项目!!!【项目完结】-精品文档资料整理.docx》由会员分享,可在线阅读,更多相关《【Vue+SpringBoot】超详细!一周开发一个SpringBoot + Vue+MybatisPlus+Shiro+JWT+Redis前后端分离个人博客项目!!!【项目完结】-精品文档资料整理.docx(51页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、【Vue+SpringBoot】超详细!一周开发一个SpringBoot + Vue+MybatisPlus+Shiro+JWT+Redis前后端分离个人博客项目!【项目完结】 资源准备 作者 后端 胡超 前端 胡超、 詹圆圆 vueblog视频教程 【一周速成】Vue SpringBoot前后端别离个人博客搭建 【简单易学】 vueblog github代码仓库 部署教程 【工程部署】Vue SpringBoot前后别离个人博客工程实战部署保姆教程 Linux docker安装部署启动一条龙教程 博客上线网址 前后端别离工程 文章总体分为2大局部 Java后端接口以及vue前端页面 比拟长
2、因为不想分开发布 真正想你4小时学会 哈哈。 先看效果 工程演示 不多讲 开场敲代码。 技术栈 Java后端接口开发 1、前言 从零开场搭建一个工程骨架 最好选择适宜 熟悉的技术 并且在将来易拓展 合适微效劳化体系等。所以一般以Springboot作为我们的框架根底 这是离不开的了。 然后数据层 我们常用的是Mybatis 易上手 方便维护。但是单表操作比拟困难 十分是添加字段或者减少字段的时候 比拟繁琐 所以这里我推荐使用Mybatis Plus CRUD 操作 进而节省大量时间。 作为一个工程骨架 权限也是我们不能忽略的 Shiro配置简单 使用也简单 所以使用Shiro作为我们的的权限。
3、 考虑到工程可能需要部署多台 这时候我们的会话等信息需要分享 Redis是如今主流的缓存中间件 也合适我们的工程。 然后因为前后端别离 所以我们使用jwt作为我们用户身份凭证。 ok 我们如今就开场搭建我们的工程脚手架 技术栈 SpringBootmybatis plusshirolombokredishibernate validatiorjwt 2、新建Springboot工程 这里 我们使用IDEA来开发我们工程 新建步骤比拟简单 我们就不截图了。 开发工具与环境 ideamysqljdk 8maven3.3.9 新建好的工程构造如下 SpringBoot版本使用的目前最新的2.2.6.
4、RELEASE版本 pom的jar包导入如下 dependency groupId org.springframework.boot /groupId artifactId spring-boot-starter-web /artifactId /dependency dependency groupId org.springframework.boot /groupId artifactId spring-boot-devtools /artifactId scope runtime /scope optional true /optional /dependency dependency
5、groupId org.projectlombok /groupId artifactId lombok /artifactId optional true /optional /dependency devtools 工程的热加载重启插件lombok 简化代码的工具 3、整合mybatis plus 接下来 我们来整合mybatis plus 让工程能完成根本的增删改查操作。步骤很简单 可以去官网看看 第一步 导入jar包 pom中导入mybatis plus的jar包 因为后面会涉及到代码生成 所以我们还需要导入页面模板引擎 这里我们用的是freemarker。 !-mp- depende
6、ncy groupId com.baomidou /groupId artifactId mybatis-plus-boot-starter /artifactId version 3.2.0 /version /dependency dependency groupId org.springframework.boot /groupId artifactId spring-boot-starter-freemarker /artifactId /dependency dependency groupId mysql /groupId artifactId mysql-connector-ja
7、va /artifactId scope runtime /scope /dependency !-mp代码生成器- dependency groupId com.baomidou /groupId artifactId mybatis-plus-generator /artifactId version 3.2.0 /version /dependency 第二步 然后去写配置文件 # DataSource Configspring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql:/localh
8、ost:3306/vueblog?useUnicode true useSSL false characterEncoding utf8 serverTimezone Asia/Shanghai username: root password: adminmybatis-plus: mapper-locations: classpath*:/mapper/*Mapper.xml 上面除了配置数据库的信息 还配置了myabtis plus的mapper的xml文件的扫描途径 这一步不要忘记了。 第三步 开启mapper接口扫描 添加分页插件 新建一个包 通过 mapperScan注解指定要变成实
9、现类的接口所在的包 然后包下面的所有接口在编译之后都会生成相应的实现类。PaginationInterceptor是一个分页插件。 com.markerhub.config.MybatisPlusConfig Configuration EnableTransactionManagement MapperScan( com.markerhub.mapper )public class MybatisPlusConfig Bean public PaginationInterceptor paginationInterceptor() PaginationInterceptor paginati
10、onInterceptor new PaginationInterceptor(); return paginationInterceptor; 第四步 代码生成 假如你没再用其他插件 那么如今就已经可以使用mybatis plus了 官方给我们提供了一个代码生成器 然后我写上自己的参数之后 就可以直接根据数据库表信息生成entity、service、mapper等接口以及实现类。 com.mao.CodeGenerator 因为代码比拟长 就不贴出来了 在代码仓库上看哈 首先我在数据库中新建了一个user表 CREATE TABLE m_user ( id bigint(20) NOT NU
11、LL AUTO_INCREMENT, username varchar(64) DEFAULT NULL, avatar varchar(255) DEFAULT NULL, email varchar(64) DEFAULT NULL, password varchar(64) DEFAULT NULL, status int(5) NOT NULL, created datetime DEFAULT NULL, last_login datetime DEFAULT NULL, PRIMARY KEY ( id ), KEY UK_USERNAME ( username ) USING B
12、TREE) ENGINE InnoDB DEFAULT CHARSET utf8;CREATE TABLE m_blog ( id bigint(20) NOT NULL AUTO_INCREMENT, user_id bigint(20) NOT NULL, title varchar(255) NOT NULL, description varchar(255) NOT NULL, content longtext, created datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP, status tinyint(4) DEFAULT NULL,
13、PRIMARY KEY ( id ) ENGINE InnoDB AUTO_INCREMENT 11 DEFAULT CHARSET utf8mb4;INSERT INTO vueblog . m_user ( id , username , avatar , email , password , status , created , last_login ) VALUES ( 1 , markerhub , s:/image-1300566513.cos.ap-guangzhou.myqcloud /upload/images/5a9f48118166308daba8b6da7e466aab
14、.jpg , NULL, 96e79218965eb72c92a549dd5a330112 , 0 , 2020-04-20 10:44:01 , NULL); 运行CodeGenerator的main方法 输入表名 m_user 生成结果如下 得到 简洁 方便 经过上面的步骤 根本上我们已经把mybatis plus框架集成到工程中了。 ps 额 注意一下m_blog表的代码也生成一下哈。 在UserController中写个测试 RestController RequestMapping( /user )public class UserController Autowired UserS
15、ervice userService; GetMapping( /id ) public Object test( PathVariable( id ) Long id) return userService.getById(id); 访问 获得结果如下 整合成功 3、统一结果封装 这里我们用到了一个Result的类 这个用于我们的异步统一返回的结果封装。一般来讲 结果里面有几个要素必要的 是否成功 可用code表示 如200表示成功 400表示异常 结果消息结果数据 所以可得到封装如下 com.mao mon.lang.Result Datapublic class Result imple
16、ments Serializable private String code; private String msg; private Object data; public static Result succ(Object data) Result m new Result(); m.setCode( 0 m.setData(data); m.setMsg( 操作成功 return m; public static Result succ(String mess, Object data) Result m new Result(); m.setCode( 0 m.setData(data
17、); m.setMsg(mess); return m; public static Result fail(String mess) Result m new Result(); m.setCode( -1 m.setData(null); m.setMsg(mess); return m; public static Result fail(String mess, Object data) Result m new Result(); m.setCode( -1 m.setData(data); m.setMsg(mess); return m; 4、整合shiro jwt 并会话分享
18、考虑到后面可能需要做集群、负载平衡等 所以就需要会话分享 而shiro的缓存以及会话信息 我们一般考虑使用redis来存储这些数据 所以 我们不仅仅需要整合shiro 同时也需要整合redis。在开源的工程中 我们找到了一个starter可以快速整合shiro-redis 配置简单 这里也推荐大众使用。 而因为我们需要做的是前后端别离工程的骨架 所以一般我们会采用token或jwt作为跨域身份验证解决方案。所以整合shiro的经过中 我们需要引入jwt的身份验证经过。 那么我们就开场整合 我们使用一个shiro-redis-spring-boot-starter的jar包 详细教程可以看官方文
19、档 第一步 导入shiro-redis的starter包 还有jwt的工具包 和为了简化开发 我引入了hutool工具包。 dependency groupId org.crazycake /groupId artifactId shiro-redis-spring-boot-starter /artifactId version 3.2.1 /version /dependency !- hutool工具类- dependency groupId cn.hutool /groupId artifactId hutool-all /artifactId version 5.3.3 /versi
20、on /dependency !- jwt - dependency groupId io.jsonwebtoken /groupId artifactId jjwt /artifactId version 0.9.1 /version /dependency 第二步 编写配置 ShiroConfig com.mao.config.ShiroConfig /* * shiro启用注解拦截控制器 Configurationpublic class ShiroConfig Autowired JwtFilter jwtFilter; Bean public SessionManager sessi
21、onManager(RedisSessionDAO redisSessionDAO) DefaultWebSessionManager sessionManager new DefaultWebSessionManager(); sessionManager.setSessionDAO(redisSessionDAO); return sessionManager; Bean public DefaultWebSecurityManager securityManager(AccountRealm accountRealm, SessionManager sessionManager, Red
22、isCacheManager redisCacheManager) DefaultWebSecurityManager securityManager new DefaultWebSecurityManager(accountRealm); securityManager.setSessionManager(sessionManager); securityManager.setCacheManager(redisCacheManager); * 关闭shiro自带的session 详情见文档 DefaultSubjectDAO subjectDAO new DefaultSubjectDAO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Vue+SpringBoot 项目完结 【Vue+SpringBoot】超详细!一周开发一个SpringBoot Vue+MybatisPlus+Shiro+JWT+R
链接地址:https://www.deliwenku.com/p-79029554.html
限制150内