springboot
Lydia的IT世界是橙色的
研究所工程师,码龄2年,大数据方向
展开
-
shiro - 前后端权限控制详细做法
之前的博客已经对shiro在springboot中的使用做了详细说明,这里继续说明如何具体实施,由于我一直在完善自已的博客,这里做一个笔记。1. 创建表我创建了4个表来对不同身份的用户进行权限管理,主要是通过用户->角色->权限进行管理各个表的样子如下:2. 定义Perm类这里的类与之前创建的perm表相对应@Data@AllArgsConstructor@NoArgsConstructorpublic class Perm implements Serializable原创 2020-11-13 19:24:51 · 619 阅读 · 0 评论 -
vue -前端传递对象到springboot后端,跳转页面并传递参数
由于对前端不是特别熟, vue也就学了一周,javascript也就是简单学了一两天,做个人博客的时候遇到一些不常用的,现在就记一下笔记。1. 构建对象,利用axios传递到后,跳转页面并传参首先构建函数,由于是分页数据,需要在data对象里包含多个参数: //条件分页查询 export const findPage = (params) => { return axios({ method: 'post', url: `/findPage`, data: {原创 2020-11-06 20:41:08 · 8081 阅读 · 0 评论 -
springboot - 启动时将数据保存在servletContext中的两种办法
最近在写个人博客,想在系统启动时自动把文章类别查询出来并保存,之前系统启动时是用redis对文章的浏览量和评论数进行保存。这次想用另一种方式。即将文章类别保存到应用的上下文。这里就要搞清楚三个概念ServletContext、ApplicationContext、ServletConfig、WebApplicationContext。这里主要参考了:https://blog.csdn.net/u010325193/article/details/845348611. ServletContext、Appl原创 2020-11-05 15:34:23 · 1904 阅读 · 0 评论 -
Vue系列 - 从创建vue到项目打包发布全过程总结
1 创建vue 项目1.1 安装基本环境1.安装vue和node.js 的express2.这里假设都安装完npm和node.js环境vue3.0 安装 npm install -g @vue/cli1.2 vue3.0创建项目 vue create my-project cd my-project npm run serve # 1.Manually select features # 2.选择Router,Vuex,CSS Pre-processors,原创 2020-10-23 20:13:34 · 1203 阅读 · 0 评论 -
Vue系列 -直接引入vue.js与axios.js到html中使用
今天学习ElasticSearch相关项目,跟着B站狂神说做了一个京东搜索的实战项目,其中有一个直接将vue.js和axios引入到html中并结合thymeleaf使用的方法挺好,在此做一个记录。1.下载vue.js与axios.jsnpm init首先必须确保先安装node.js环境,新建一个英文的文件夹,取名newvue,然后进入该文件夹打开cmd命令行,输入C:\Users\Administrator\Desktop\new_vue>npm init一路回车,遇到"Is thi原创 2020-10-22 16:53:59 · 4670 阅读 · 1 评论 -
springboot - vue - shiro 登录验证的一些坑
最近开发个人博客,shiro配置后,需要进行登录验证,如要输入用户名或密码不正确,需要进行异常拦截并将结果返回给前端,在此过程有一些坑,在此记录一下:1. 前端登录界面该界面是用vue开发的,登录的el-form: <!-- 登录表单区域 --> <el-form ref="loginFormRef" :model="loginForm" :rules="loginFormRules" label原创 2020-10-21 10:57:33 · 928 阅读 · 0 评论 -
spring - shiro - session交给redis托管
shiro自己也有session,但是我希望将这个session交给redis托管,因为如果系统采用分布式,登录信息只保存在一个节点是肯定不行的。仔细弄了几天,遇到几个坑,查了很多资料,终于走通了。现在做个笔记。有关shiro的认证与校验见https://blog.csdn.net/ws6afa88/article/details/1090616100. ShiroDemo目录结构1. 主要依赖<!--整合shiro--> <dependency> <gro原创 2020-10-15 23:47:43 · 661 阅读 · 0 评论 -
springboot - shiro - 简单验证与授权
最近开发个人博客,主要内容部分已经完成,就到了设计权限的部分,于是把shiro翻出来复习了一下,现在记录一下测试过程:0. shiro逻辑参考https://www.jianshu.com/p/7464327c83fe//创建一个默认SecurityManagerDefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();//创建一个自定义Realm对象CustomRealm realm = new C原创 2020-10-13 22:41:55 · 245 阅读 · 0 评论 -
springboot - redis记录并统计网页浏览量
最近开发个人博客,想统计单网页浏览量,一开始是想把浏览量记录在数据库,后来想想每次点击网页就要去做数据库更新操作,实际项目是不会允许的,还是老老实实用redis来处理吧!0. 需求网页列表显示时按评论数倒序排列进入单页页面时,该页面浏览量自动+1系统启动时,将数据库中的浏览量,评论数,点赞数添加到redis数据库中系统关闭时,自动将redis中数据更新到mysql数据库中之所以选择在启动和关闭时进行redis与mysql数据交换,也是为了防止高并发。1. 效果数据按照“评论数”倒序排列原创 2020-10-10 02:03:50 · 6735 阅读 · 5 评论 -
mybatis-乐观锁设置并测试-xml写法
1.乐观锁概念总是认为不会产生并发问题,每次去取数据的时候总认为不会有其他线程对数据进行修改,因此不会上锁。但是在更新时会判断其他线程在这之前有没有对数据进行修改(一般会检查version有没有修改),一般会使用版本号机制或CAS操作实现。2.主要流程1. SELECT data AS old_data, version AS old_version FROM …;2. 根据获取的数据进行业务操作,得到new_data和new_version3. UPDATE SET data = new_dat原创 2020-10-09 20:34:47 · 507 阅读 · 0 评论 -
mybatis-list范围内查询-xml写法
0. 数据表1. mapper.xml写法 <!--ids查询文章--> <select id="queryByIds" parameterType="java.util.ArrayList" resultType="Article"> select * from articles where article_id in <foreach collection="list" index="index" item="item"原创 2020-10-09 16:37:31 · 910 阅读 · 0 评论 -
Vue系列-前端条件分页查询全流程演示
最近在做个人博客网站,后端的条件分页查询已经写好(见https://blog.csdn.net/ws6afa88/article/details/108928401),现在来用Vue做前端显示。1. 数据表2. 最终效果3. axios函数所需要的条件分页函数定义在article.js中//条件分页查询 export const findPage = (pageSize,pageNum,title) => { return axios({ method:原创 2020-10-07 22:34:19 · 1845 阅读 · 1 评论 -
SpringBoot - 后端条件分页查询-MyBatis解决方案
最近用SpringBoot+MyBatis在做个人博客网站,遇了条件分页查询,现在把解决流程与源代码记录下来,便于后续参考。1.数据表2. 定义pojo定义与数据表相对应的Article 类@Data@NoArgsConstructor@AllArgsConstructorpublic class Article implements Serializable { private Long articleId; private Long userId=1l ; pr原创 2020-10-05 14:53:54 · 2390 阅读 · 1 评论 -
Spring原理 - 最通俗易懂理解AOP
AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术,是Spring另一个主要内核。AOP与OOP是面向不同领域的两种设计思想。OOP(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。AOP则是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。例如,可以对于“学生”这样一个业务实体原创 2020-10-04 16:24:47 · 262 阅读 · 0 评论 -
SpringBoot - 排坑 - IDEA找不到或无法加载主类以及找不到测试类的解决办法
1. IDEA找不到或无法加载主类今天用IDEA做一个SpringBoot项目,启动时突然出现错误,显示找不到或无法加载主类后来调了半天,只需一步操作即可mvn clean compile操作如下:2. IDEA找不到测试类后来用junit进行测试时,又提示找不到测试类,该测试类明明在指定的路径上啊!急死,于是又调了半天,原来是pom文件中的junit依赖与其他依赖有冲突,于是直接删除了junit依赖,重新导入,并刷新maven即可于是一切就ok了,这个坑在此记录一下。...原创 2020-10-04 10:28:19 · 3535 阅读 · 0 评论 -
Spring原理 - 最通俗易懂理解IOC
Spring的核心是IOC(Inverse of Control 控制反转)和AOP(Aspect Oriented Programming 面向切面编程),那么如何来理解IOC呢,这里做一个最最通俗易懂的例子来说明为什么要用IOC,以及IOC到底是怎么实现的。比如我们新创建了一个动物园,这个动物园里有猴子,按照我们原先创建类的方式,这个动物园的创建的方式是这样的:public class Monkey { public void say(){ System.out.printl原创 2020-10-03 23:28:52 · 309 阅读 · 0 评论 -
springboot - 利用@PostConstruct对自定义Bean进行初始化
开发博客系统的时候有一个需求,就是希望系统启动时,自动将指定文件夹中的md文件写入到数据库,这样我每更新一篇文章只需将文章拷贝入那个文件夹即可。(当然也可以开发界面上传的方式,但我不想搞得那么复杂,怎么方便怎么来)。数据库表长这样:存储文章的文件夹长这样:这里用@PostConstruct这个注解很好实现,注意系统启动时,初始化的顺序为:构造方法 -> @Autowired -> @PostConstruct@Component@Order(Ordered.HIGHEST_PRECE原创 2020-10-02 09:59:13 · 1010 阅读 · 0 评论 -
Vue系列-import动态引入的坑
最近在开发个人博客,点击文章列表显示相应md文章,效果如下:其中遇到一个坑,我通过在后端请求md文件的path,从而在前端展示markdown文件,具体代码如下:<!--前端展示md文章--><vue-markdown :key="key">{{msg}}</vue-markdown> async getMd(){ //通过id获取md文件的path await getArticleById(this.$route.p原创 2020-10-01 09:29:14 · 7608 阅读 · 1 评论 -
Vue系列-axios请求与拦截综合应用
1.封装axios请求与回复拦截器import axios from 'axios'import {Message} from 'element-ui'//定义axios的baseURL axios.defaults.baseURL = 'http://localhost:8080/api/' // request拦截器axios.interceptors.request.use(function (config) { // 在发送请求之前做些什么 return config原创 2020-09-30 00:36:52 · 174 阅读 · 0 评论 -
springboot -前端vue请求文件下载完美解决
1.前端定义下载按钮<template> <div> <el-button @click="downLoad" id="down">下载MD</el-button> </div></template>定义下载方法download() //下载MD文件 async downLoad(){ var id=1; //通过axios.defaults.baseURL获取ba原创 2020-09-25 15:55:08 · 1813 阅读 · 2 评论 -
Vue系列-使用mavon-editor编辑并保存markdown到后台,同时回显图片
1. 安装并配置mavon-editor到Vue项目前端vue,后端springboot实现markdown文件的编辑与上传。主要使用mavon-editor插件1.1 安装npm install mavon-editor --save1.2 配置新建mavenEditor.js // 全局注册 // import with ES6 import Vue from 'vue' import mavonEditor from 'mavon-editor' impo原创 2020-09-24 02:10:34 · 7377 阅读 · 6 评论 -
springboot 利用mybatis操作mysql数据库-常规流程
1. 创建数据库这里用SQLyog进行操作sql语句比较方便CREATE DATABASE myblogUSE myblogDROP TABLE IF EXISTS `articles`;#创建数据表articlesCREATE TABLE `articles` ( `article_id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `user_id` BIGINT(20) NOT NULL COMMENT '用户ID',原创 2020-09-22 20:09:21 · 484 阅读 · 0 评论 -
axios带参请求-返回HTTP Status 400 -Required String parameter xxx is not present类型异常
最近做一个博客项目,用axios向后端springboot发送带参请求一直报“HTTP Status 400 -Required String parameter xxx is not present类型异常”,经过一番研究,终于解决。1.错误写法前端axios请求函数:import axios from 'axios'export function postMd(value){ return axios.post('/saveMd', { c原创 2020-09-21 15:56:51 · 984 阅读 · 0 评论 -
springboot 自定义注解-使用拦截器实现角色权限验证
springboot的权限控制可以用Shiro或者Spring Security,但是原生的拦截器同样可以实现这一功能。现在我们通过自定义注解来实现一个角色权限验证的功能。有关springboot自定义注解的一般方法见我的博客《springboot自定义注解的实现方式》1. 定义接口@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface MyCheck { String[] value(原创 2020-09-15 00:59:21 · 739 阅读 · 1 评论 -
springboot 自定义注解-常规实现方式
通常springboot的应用场景为:日志记录: 记录请求信息的日志, 以便进行信息监控, 信息统计, 计算PV(page View)等性能监控;权限检查;通用行为0. pom引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></depende原创 2020-09-14 23:58:47 · 1025 阅读 · 0 评论