springboot
文章平均质量分 63
java后端开发
一个还没工作的研究僧
这个作者很懒,什么都没留下…
展开
-
Element UI+vue+Springboot实现分页数据加载
前言分页功能在web应用中属于最为常见的功能,特别是在用表格展示大量数据的场景下。前端实现首先选择Element UI的两个组件 el-pagination和el-table组件这两个组件没有必然的联系,el-table只需绑定数据源即可 <el-table :data="emps" border stripe> <el-table-column prop="name" label="姓名" align="left" fixed width="120">&原创 2021-05-16 10:38:03 · 823 阅读 · 0 评论 -
Springboot+websocket+vue实现监听mysql数据库且实时通知前端
前言前端采用:vue+sock.js+stomp.js后端采用:springboot+websocket项目需求:多个用户端提交报修信息,管理端web实时接收并显示。实现思路:参考我简单叙述下:后端通过轮询数据库进行监听,如何监听数据库及判断是否为新的报修信息–这部分业务代码可以参考上述链接。本篇文章的重点有两个:(1)前端如何建立websocket连接(2)后端如何通过websocket的订阅模式同时通知所有订阅者有新的消息到达。后端实现(1)导入websocket依赖 <原创 2021-04-18 21:41:56 · 8094 阅读 · 3 评论 -
Vue+elementUI+SpringBoot项目-上传用户头像(2)
前言上篇文章讲了前端如何上传文件,本篇文章主要讲解后端对于图片的接收和存储。分析(1)接收图片:controller参数采用MultipartFile(2)存储图片:将图片的二进制流直接存储在数据库,这样做肯定不太合理,会对数据库性能造成一定的影响。将图片的地址即url存储在数据库,图片实体存储在服务器的文件夹里,当服务器开启时,可以通过url直接访问到图片。实现(1)后端如何处理参数 @PutMapping("/") @Transactional public原创 2021-04-18 20:51:32 · 634 阅读 · 0 评论 -
微人事-spring security session与servlet里session的区别
前言上一节实现session并发的时候,注意到一个细节//注册sessionsessionRegistry.registerNewSession(request.getSession(true).getId(), principal);为什么要手动注册一个session呢,web服务器不是默认给每个独立的请求创建一个session吗?不注册的话,会怎么样?分析(1)首先先聊下web服务器里的session创建时机,当一个新的请求到来时,HttpSessionListener接口(实现的监听器)原创 2021-03-20 15:51:15 · 440 阅读 · 0 评论 -
微人事-session并发问题-踢掉已登录的用户(2)
前言上一节,了解spring security如何处理session并发。今天将在微人事项目里处理session并发问题,实现踢掉已登录的用户。分析(1)获取session集合通过sessionRegistry对象 final List<SessionInformation> sessions = sessionRegistry.getAllSessions( authentication.getPrincipal(), false); (2)通过阅读源码,sessio原创 2021-03-16 11:44:31 · 425 阅读 · 0 评论 -
微人事-session并发问题-踢掉已登录的用户(1)
前言spring security的登录逻辑是在UsernamePasswordAuthenticationFilter#attemptAuthentication方法中实现的,但是attemptAuthentication的调用者却是UsernamePasswordAuthenticationFilter的父类AbstractAuthenticationProcessingFilter间接调用的,源码如下public void doFilter(ServletRequest req, ServletR原创 2021-03-16 10:00:45 · 385 阅读 · 0 评论 -
微人事-hr对象为啥需要重写equals 方法和 hashCode 方法
前言今天实现微人事-如何踢掉已登录用户功能遇到一个问题,在查询一个用户对象所对应的session集合时,涉及到了对象的比较。集合类型: //object 指的是用户对象 Set<String> 指的是session集合 ConcurrentMap<Object, Set<String>> principalssession的获取//authentication.getPrincipal()返回的是一个对象List<SessionInformation原创 2021-03-15 13:18:36 · 163 阅读 · 0 评论 -
微人事-spring security登录认证分析
前言vhr登录认证(1)用户名+密码+验证码(2)对于用户的角色认证vhr采用了spring security做认证及授权,今天想来总结下整个登录的流程。分析上图可以先大概看下流程(1)spring Security 中有一个非常重要的对象叫做 Authentication,我们可以在任何地方注入 Authentication 进而获取到当前登录用户信息,Authentication 本身是一个接口,它有很多实现类,最常用的就是 UsernamePasswordAuthenticationTok原创 2021-03-14 17:08:04 · 443 阅读 · 0 评论 -
微人事-spring security之json形式登录
前言今天看登录逻辑代码发现一个问题,spring security前后端登录默认采用的key-value形式,但是目前github 上vhr最新代码支持json登录和key-value,那么如何实现呢?实现(1)首先明确spring security登录逻辑是在UsernamePasswordAuthenticationFilter过滤器里实现的。public Authentication attemptAuthentication(HttpServletRequest request, HttpS原创 2021-03-12 10:39:39 · 286 阅读 · 0 评论 -
微人事-邮件发送模块-rabbitmq可靠性的优化
前言邮件模块的功能:当 hr 向系统中录入一个员工时,录入成功后,系统会自动向消息中间件 RabbitMQ 发送一条消息,这条消息包含了新入职员工的基本信息,然后 mailserver 则专门用来从 RabbitMQ 上消费消息,根据收到的消息,自动的发送一封入职欢迎邮件。当然,在理想情况下邮件一定可以发送成功,但是一旦到生产环境下,就会有很多不可控的元素比如网络抖动怎么办?如何确保消息的可靠性?rabbitmq优化(简说)(1)数据库建立邮件发送日志表public class MailSendL原创 2021-03-11 20:21:36 · 436 阅读 · 0 评论 -
Springboot POI Excel的导入与导出
后台管理系统经常会用到表格来展示数据,如用户基本信息,若管理员需要将用户信息保存到本地,则需要对用户信息进行导出,导出的文件大多采用excel。java中对于excel的读写可以采用POI一、POI简介Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。二、PO原创 2021-01-12 13:36:06 · 333 阅读 · 1 评论 -
微人事-总结
vhr项目:地址目前跟随江南一点雨大佬已经完成微人事的百分之80,因为一直在赶进度,所以得做个总结。已完成模块1.登录模块2.权限组3.职称管理4.职位管理5.部门管理6.基本资料7.操作员管理未完成模块1.邮件发送2.工资账套3.员工聊天已完成界面:...原创 2021-01-12 12:00:01 · 5003 阅读 · 13 评论 -
Springboot实现自动登录的功能
目录:概念实现自动登录是我们在软件开发时一个非常常见的功能,例如我们登录 QQ时,登录界面会有记住密码这个功能,下次进入qq会进行自动登录。浏览器的自动登录是指用户在登录成功后,在某一段时间内,如果用户关闭了浏览器并重新打开,或者服务器重启了,都不需要用户重新登录了,用户依然可以直接访问接口数据。那么应该如何实现呢,其实spring security已经为我们提供了相应的支持。实战:(1)创建spring工程,引入web和security的依赖。pom.xml如下:<dependen原创 2020-12-03 15:51:58 · 2261 阅读 · 1 评论 -
Springboot实现定时任务的两种方式
定时任务在我们日常项目开发中会经常使用,如数据库的备份。springboot对于定时任务的实现也作了很便捷的自动化配置,实现的方式共有两种:一种是使用 Spring 自带的定时任务处理器 @Scheduled 注解,另一种就是使用第三方框架 Quartz 。 一、@Scheduled 二、Quartz 一、@Scheduled(1)@Scheduled的实现相对简单,但是 Quartz更加灵活。首先创建spring项目,引入web依赖即可。(2)在application启动类上加上@Enabl原创 2020-12-02 16:42:38 · 562 阅读 · 0 评论 -
Springboot整合Swagger,再也不用担心接口文档了
Swagger 2是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。简单来说,根据项目的接口生成规范化的接口文档,而且可以进行接口的测试类似于post man。话不多说,开始今天的学习。(1)创建spring项目,引入web依赖,手动添加swagger的相关依赖。pom.xml如下:<dependencies> <dependency> <groupId>org.springframework.boot<原创 2020-12-02 13:24:58 · 121 阅读 · 0 评论 -
Spring boot整合freemarker实现邮件模板的发送
目录:1、环境配置2、邮件模板3、邮件的发送一、环境配置邮件协议:邮件的发送协议:SMTP邮件的接收协议:POP3模板选择:目前主流的模板引擎:thymeleaf和freemarker(手动添加依赖),至于优缺点可以参考:两者比较,本文采用的模板是freemarker。创建springboot项目,添加web、freemarker和mail的依赖pom.xml如下<dependencies> <dependency> <groupId>原创 2020-12-01 16:35:04 · 970 阅读 · 0 评论 -
Spring boot整合RabbitMQ
目录:一、RabbitMQ简介 RabbitMQ安装不必我多说,linux和windows环境下都可以安装,我是在windows环境下进行安装的,安装RabbitMQ之前需要先安装Erlang,因为Rabbit MQ 是建立在Erlang OTP平台上,而且安装Erlang 时要注意安装的RabbityMQ 所依赖的Erlang版本。 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而且支持跨平台。原创 2020-11-30 21:11:34 · 604 阅读 · 2 评论 -
Spring boot实现WebSocket的单聊与群聊功能
前段时间我写了一篇文章:实现Springboot实时监听mysql数据库的变化且前端实时更新那篇文章就使用了websocket技术,有兴趣可以看看。话不多说,开启今天的学习!!!一、 websocket的简述WebSocket为浏览器和服务器之间提供了双工异步通信功能,也就是说我们可以利用浏览器给服务器发送消息,服务器也可以给浏览器发送消息,目前主流浏览器的主流版本对WebSocket的支持都算是比较好的,但是在实际开发中使用WebSocket工作量会略大,而且增加了浏览器的兼容问题,这种时候我们更原创 2020-11-30 15:23:18 · 621 阅读 · 0 评论 -
spring security 基于数据库的认证
学习本篇文章之前一定 要具备spring security的基础,可以参考:security基础学习上篇文章我们spring security登录的用户与密码是手动进行设置的,有两种方式:一种是application.properies文件中设置,还有一种是java配置类里进行设置。但是我们在实际的项目开发里一般都会利用数据库进行权限认证,这样也有利于用户权限的动态更改。实战(1)创建web项目,引入security、web 、mysql、mybatis与druid依赖即可(druid手动进行配置)原创 2020-11-27 21:07:04 · 338 阅读 · 0 评论 -
Mybatis 返回结果里面嵌套List
需求:需要查询Menu表里每个pattern所对应的多个roles角色角色表public class Role { private Integer id; private String name; private String nameZh;Menu表public class Menu { private Integer id; private String pattern; private List<Role> roles;查询原创 2020-11-27 18:33:05 · 3134 阅读 · 0 评论 -
Spring boot整合Spring security
我们一般用到的主流安全框架有两种:ShiroSpring Security 相对于 Shiro,在 SSM/SSH 中整合 Spring Security 都是比较麻烦的操作,所以,Spring Security 虽然功能比 Shiro 强大,但是使用反而没有 Shiro 多(Shiro 虽然功能没有 Spring Security 多,但是对于大部分项目而言,Shiro 也够用了)。 本文主要讲解spring security实战:(1)创建web项目,引入security和web依赖即可原创 2020-11-26 20:14:38 · 535 阅读 · 0 评论 -
springboot实现session共享
应用场景如何解决应用场景session是指多个http请求共享的会话。如果我们后台只有一个服务器,则不存在共享问题,但是在分布式/集群项目中,Session 共享则是一个必须面对的问题,先看一个简单的架构图:如何解决思路很简单,就是将各个服务之间需要共享的数据,保存到一个公共的地方此时我们先创建新的springboot项目,引入 Web、Spring Session 以及security、 Redis:<dependencies> <dependency>原创 2020-11-24 10:59:35 · 2530 阅读 · 0 评论 -
springboot解决跨域问题
跨域问题其实前后端都可以解决,说到跨域,我认为先了解下什么是同源策略。 同源策略是由Netscape提出的一个著名的安全策略,它是浏览器最核心也最基本的安全功能,现在所有支持JavaScript的浏览器都会使用这个策略。所谓同源是指协议、域名以及端口要相同。同源策略是基于安全方面的考虑提出来的,这个策略本身没问题,但是我们在实际开发中,由于各种原因又经常有跨域的需求,传统的跨域方案是JSONP,JSONP虽然能解决跨域但是有一个很大的局限性,那就是只支持GET请求,不支持其他类型的请求,而今天我们说原创 2020-11-22 16:13:24 · 145 阅读 · 2 评论 -
postman发送post请求一直不成功
我出现的问题postman结果为后台springboot拦截到的路径发现url中存在error解决方案:添加头部使用原生的json格式返回正确结果原创 2020-11-22 15:42:55 · 5511 阅读 · 0 评论 -
Springboot单文件上传和多文件上传
单文件上传多文件上传文件上传采用的是SpringBoot默认用的是StandardServletMultipartResolver,servlet版本要求3.0以上SimpleDateFormat sdf = new SimpleDateFormat("/yyyy/MM/dd/"); @PostMapping("/upload") public String upload(MultipartFile file, HttpServletRequest request){原创 2020-11-21 22:00:35 · 488 阅读 · 1 评论 -
实现Springboot实时监听mysql数据库的变化且前端实时更新
一、需求分析项目需求是 多个用户端提交报修信息 ,管理端web实时接收并显示。首先用户端是通过提交http请求去更新报修表,而管理端与后端采用websocket实现实时通信。现在的难点在于如何监听mysql数据库中报修表的变化。二、解决思路解决方案一使用mysql_udf_http(根据mysql表自动触发发送http请求通知后端),后端使用websocket通知前台进行数据更新。我个人认为这种是最好的解决方案,但此方案基本都是在linux系统下进行实现的。解决方案二也是我采用的,后台采用轮询原创 2020-11-17 15:04:53 · 16847 阅读 · 2 评论 -
解决springboot的静态工具类中使用mybatis的mapper对象为空
首先熟悉ssm开发的小伙伴都知道,mapper对象的注入一般在controller层。@Controllerpublic class LoginController { @Autowired public LoginMapper loginMapper;但是数据库的操作不一定只限于controller类中,如果我在普通java工具类中需要操作数据库,那我们直接注入会生效吗?@Componentpublic class TokenUtil { @Autowir原创 2020-11-17 09:52:57 · 2308 阅读 · 1 评论