- 博客(38)
- 收藏
- 关注
原创 SpringBoot集成RabbitMQ---保证消息可靠性
SpringBoot集成RabbitMQ—保证消息可靠性在我们使用RabbitMQ消息队列时,使用生产者发送消息,可能出现发送失败,rabbitMQ宕机,一个消息重复发送等问题,一旦出现这种问题,如果不进行相应处理,就可能导致消息丢失,消费者重复消费一条信息等问题,消息就变得不可靠了,进而影响我们的业务逻辑。所以我们要对可能出现的问题进行相应的操作,来保证消息的可靠性。下面我们来介绍在生产端实现消息可靠性投递,消费端幂等性操作两种实现方式。本篇文章是springboot集成RabbitMQ中保证消息可靠
2022-04-29 19:15:42 2444 1
原创 springboot前后端分离-使用微信扫码登录(后端)
springboot前后端分离-使用微信扫码登录(后端)最近项目需要,临时加入了微信扫码登录的功能,让身为小白的我很是折磨,在网上搜了很多的教程,也被一些cv博客误导了许久,本篇blog主要从小白(我自己)的角度介绍前后端分离项目中如何接入微信扫码登录功能(仅后端)扫码登录的基本流程使用微信扫码登录 我们肯定要先来了解一下扫码登录的基本流程啦前端首先向服务端发送一个请求,用来获取二维码的url和唯一随机数(用UUID即可,这个随机数可以理解为这个二维码的key值,一一对应,所以尽量要用唯一的)同
2022-04-18 20:41:44 4729 3
原创 @Autowired
文章目录@Autowired原理:作用:注:@Autowired和构造方法@Autowired@Autowired是用在JavaBean中的注解,通过byType形式,用来给指定的字段或方法注入所需的外部资源原理:在启动spring IoC时,容器自动装载了一个AutowiredAnnotationBeanPostProcessor后置处理器,当容器扫描到@Autowied、@Resource(是CommonAnnotationBeanPostProcessor后置处理器处理的)或@Inject时
2022-02-09 20:24:59 535
原创 springboot自定义异常类+全局处理异常
文章目录springboot自定义异常类+全局处理异常自定义异常类全局处理异常springboot自定义异常类+全局处理异常在项目运行中,难免会产生抛出一些待处理的异常,而java自带的异常信息不是很明确,所以会生成自己想要的一些数据格式。这时候就会用到自定义异常类。抛出的运行错误的异常,必然是要处理的,我用到的是全局异常处理去处理这些异常,可以返回给前端你想返回的数据。自定义异常类自定义异常类需要继承java异常类的父类,因为一般需要处理的异常都是RuntimeException(运行时异常),
2021-12-23 22:02:59 717
原创 <img src=“http://......“ > url访问图片显示不出来问题
解决办法标签内加入 <meta name="referrer" content="no-referrer">原因referrer是一种引用策略,可以用来防止图片或视频被盗原理:http 协议中,如果从一个网页跳到另一个网页,http 头字段里面会带个 Referrer。图片服务器通过检测 Referrer 是否来自规定域名,来进行防盗链。如果没有设置referrer,那就可以直接绕过防盗链机制,直接使用或盗取。no-referrer:所有请求不发送 referrer...
2021-11-18 08:48:34 3253
原创 JWT身份认证
文章目录利用`token`进行用户身份验证的流程JWT的认证流程JWT认证的优势JWT结构1.Header2.Payload3.SignatureJWT每部分的作用JWT依赖JWT工具类Json Web TokenJWT的本质就是一个字符串,它是将用户信息保存到一个Json字符串中,然后进行编码后得到一个JWT token,并且这个JWT token带有签名信息,接收后可以校验是否被篡改,所以可以用于在各方之间安全地将信息作为Json对象传输目前无论单体应用还是分布式应用,都更加推荐用JWT toke
2021-11-01 08:35:37 523
原创 springboot-缓存管理
文章目录一、使用springboot默认的缓存管理在启动类上加上@EnableCaching ,代表开启Spring Boot基于注解的缓存管理支持所有缓存注解使用都在Service层下缓存的注解:缓存注解的常用属性二、springboot整合Redis缓存实现1.基于注解的Redis缓存实现2.基于API的Redis缓存实现自定义RedisCacheManager缓存管理器的默认序列化机制springboot默认使用Simple缓存组件进行缓存管理,Simple组件位于9大缓存组件最后一个(按顺序启用
2021-10-20 09:40:49 1274
原创 springboot---文件上传
文章目录file.html 单文件上传单文件上传 controllermultifile.html 多文件上传多文件上传 controller加入thymeleaf依赖MultipartFile 接受前台传过来的文件file.getOriginalFilename() 获取上传文件的文件名写明文件存储的位置file.transferTo(dest); 将上传文件写到服务器上指定的文件new File(“xxx.xxx”) 只是在内存中创建File文件映射对象,而并不会在硬盘中创建文件
2021-10-17 21:37:51 570
原创 Springboot中temlates和static
文章目录statictemplatesspringboot默认 static中放静态页面,而templates中放动态页面**注:html链式引入css或js时,路径默认是从static开始的 **lg : href="/css/mycss.css"加入thymleaf依赖后,springboot中controller中的跳转页面操作,自动跳转templates下的页面,而不会扫描static下的页面staticstatic文件夹默认存放的是静态资源 静态页面static文件夹中的html页
2021-10-16 23:39:55 409
原创 springboot整合spring security(一) :身份认证,自定义用户授权管理
文章目录springboot整合spring security使用UserDetailsService 身份认证前端html数据库1.导入security的启动依赖2.创建Customer(用户信息)、Authority(用户权限) 两个实体类3.创建查询接口CustomerRepository、AuthorityRepository4.创建RedisConfig类5.添加CustomerService业处理类 (查询用户信息和权限)6.自定义接口实现类UserDetailsServiceImpl 进
2021-10-15 21:20:50 2309
原创 request.getXXX 得到什么路径问题
getServletPath():获取能够与“url-pattern”中匹配的路径,注意是完全匹配的部分,*的部分不包括。getPathInfo():与getServletPath()获取的路径互补,能够得到的是“url-pattern”中*d的路径部分getContextPath():获取项目的根路径getRequestURI:获取根路径到地址结尾getRequestURL:获取请求的地址链接(浏览器中输入的地址)getServletContext().getRealPath("/"):获取“/
2021-08-16 20:07:57 253
原创 springboot整合mybatis-实现简单注册登录-体现拦截器
文章目录springboot整合mybatis-实现简单注册登录-体现拦截器思路步骤整体项目结构1.导入依赖application.yml 配置文件3.实体类 User4.持久层UserMappermapper配置文件(实现sql语句) UserMapper.xml5.服务层接口UserService接口实现类 UserServiceImpl控制层 UserControllerhtml页面主页面(登录页面):index.html注册页面:register.html登陆后可查看的页面(体现拦截器):welco
2021-08-16 20:02:47 1444
原创 python爬虫(案例)——豆瓣读书爬虫
文章目录要爬取的内容一级页面(分类中图书的列表)二级页面(每本书的详情页)本案例中的防封ip小技巧多用几个user-agent(随机抽取)设置间隔时间完整代码本篇文章为豆瓣读书爬虫的案例,采用了xpath解析式,比较基础,未涉及其他深入的爬虫知识要爬取的内容根据豆瓣图书中不同的分类爬取图书的相关信息 ( 每个分类豆瓣最多给50页数据 )一级页面(分类中图书的列表)爬取 : 书名(文本和url),作者,出版社,出版日期,评价数,缩略图链接,短简介二级页面(每本书的详情页)通过一级页面 书名
2021-06-29 10:54:08 9306 4
原创 springmvc---处理器类方法的返回值---学习记录
文章目录返回值是 ModelAndView返回值是 String(表示视图)返回值是 Void现在做ajax,主要使用json格式,主要步骤:1.加入处理json的工具库的依赖,springmvc默认使用的jackson2.在springmvc配置文件之间加入注解驱动``3.在处理器方法的上面加入@ResponseBody注解返回值是Object返回对象的处理流程:返回值是String(表示数据的)响应结果中文乱码返回值是 ModelAndView有数据和视图,对视图执行forward ,处理器
2021-05-30 16:45:05 116
原创 jQuery---学习记录
文章目录过滤器jQuery中给dom对象绑定事件$(function() {})表单过滤器jquery中的函数valtextattrremoveemptyappendhtmleach使用jquery的函数,实现ajax请求的处理$.ajax() 的使用json结构的参数说明过滤器在定位了dom对象后,根据一些条件筛选dom对象过滤器就是一个字符串,用来筛选dom对象的过滤器不能单独使用,必须和选择器一起使用1)$(“选择器:first”) :第一个dom对象2) $(“选择器:last”)
2021-05-27 21:04:37 381
原创 jQuery---学习记录
文章目录概述dom对象和jQuery对象选择器概述jQuery是js库库:相当于java的工具类,库是存放东西的,jQuery是存放js代码的地方,放的用js代码写的functiondom对象和jQuery对象dom对象:使用javascript的语法创建的对象叫做dom对象,也就是js对象。var obj=document.getElementById("txt1");obj是dom对象,也叫做js对象jquery对象:使用jquery语法表示对象叫做jquery对象,注意:jquery
2021-05-26 21:33:12 125
原创 ajax---json的使用---学习记录
文章目录JSON语法规则JSON的优点jackson——java中的json工具库之一ajax请求使用json格式的数据数据库表provinceProvince实体类(id,name,jiancheng,shenghui)代码略ProvinceDaoQueryJsonServletweb.xmljsp文件——myajax.jsp结果效果图JSONJSON,全称是 JavaScript Object Notation,即 JavaScript对象标记法语法规则数组(Array)用方括号(“[]”)表示
2021-05-24 21:49:33 178
原创 ajax---学习记录
文章目录概述ajax中使用xmlHttpRequset对象1.创建异步对象2.给这个异步对象绑定事件onreadyStatechangereadyState 属性3.初始异步请求对象4.使用异步对象发送请求获取服务器端返回的数据示例index.jspweb.xmlBmiAjaxServlet.java概述ajax是用来做局部刷新的局部刷新使用的核心对象是异步对象(xmlHttpRequest)这个异步对象是存在浏览器内存中的,使用javascript语法创建和使用xmlHttpRequest对象同
2021-05-23 20:26:32 308
原创 springmvc---接收请求的参数---学习记录
文章目录接收请求的参数接受用户提交的数据1.逐个接收使用post方式提交请求,中文有乱码接收请求的参数使用的处理器方法的形参:1)HttpServletRequest2)HttpServletResponse3)HttpSession4)用户提交的数据接受用户提交的数据1.逐个接收逐个接受请求参数:要求:处理器(控制器)方法的形参名和请求中参数名必须一致,同名的请求参数付给同名的形参框架接受请求参数1.使用request对象接收参数String strName=request.ge
2021-05-20 20:29:12 216
原创 springmvc---配置视图解析器和@Requestmapping放在类上面---学习记录
文章目录声明视图解析器存放在/WEB-INF/下面的内容是不能直接通过request请求的方式请求到的,为了安全性考虑,我们通常会把jsp文件放在WEB-INF目录下(不能通过jsp地址直接访问)声明视图解析器声明springmvc框架中的视图解析器,帮助开发人员设置视图文件的路径<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!--前缀:视图文件的路
2021-05-20 16:22:03 294
原创 springmvc---第一个springmvc程序---学习记录
文章目录springmvc概述DispatherServlet实现步骤1.新建web maven工程2.加入依赖3.在web.xml中注册springmvc框架的核心对象DispatherServlet4.创建一个发起请求的页面 index.jsp5.创建控制器类6.创建一个作为结果的jsp,显示请求的处理结果7.创建springmvc的配置文件(与spring的配置文件一样)代码url-patternspringmvc请求的处理流程springmvc概述springmvc是基于spring的一个框架,
2021-05-20 15:05:23 205
原创 spring---spring-web---学习记录
文章目录实现步骤加入依赖实体类DaoService配置文件创建jsp页面创建servlet创建结果jsp在web项目中使用spring,完成学生注册功能实现步骤1.创建maven,web项目2.加入依赖3.写入代码及配置文件4.创建一个jsp发起请求5.创建servlet,接受请求参数,调用Service,调用dao完成注册6.创建一个jsp作为显示结果页面加入依赖<dependencies> <!--单元测试--> <dependency&
2021-05-18 19:22:52 53
原创 spring---事务处理---学习记录
文章目录添加依赖创建实体类创建Dao和mapper文件创建mybatis主配置文件自定义异常类创建Service接口和实现类 (在实行类中进行事务处理)配置spring的主配置文件测试代码结果spring框架中提供的事务处理方案1.@Transactional注解方案(适合中小项目使用)2.使用aspextj框架功能(适合大型项目)通过电商购买商品进行事务的异常处理添加依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="
2021-05-16 21:10:16 56
原创 spring---事务处理---学习记录---21.05.15
21.05.15文章目录21.05.15什么是事务事务的两种状态:什么时候会使用事务使用JDBC访问数据库,还有mybatis访问数据库怎么处理事务上述处理事务的方式的不足spring事务处理(解决了上述的不足)总结spring的事务什么是事务事务是指一组sql语句的集合,集合中有多条sql语句可能是insert , update , seleat , delete,我们希望这些多个sql语句都能成功,或者都失败,这些sql语句的执行是一致的,作为一个整体执行。事务的两种状态:事务的提交:是指事务
2021-05-15 21:40:04 71
原创 spring---spring整合mybatis---学习记录---21.05.13
21.05.13文章目录21.05.13为什么用ioc来整合整合步骤加入maven依赖创建实体类创建dao接口和mapper文件创建mybatis主配置文件创建Service接口和实现类创建spring的配置文件创建测试类spring整合mybatis(总结)把mybatis框架和spring集合在一起,像一个框架一样使用用的技术是ioc为什么用ioc来整合因为ioc能创建对象,可以把mybatis框架中的对象交割ispring同意创建,开发人员从spring中获取对象,就不用同时面对两个或多个框
2021-05-13 20:48:29 102 1
原创 spring---AOP---学习记录---21.05.12
21.05.13文章目录21.05.13异常通知 @AfterThrowing最终通知 @After@Pointcut目标类没有接口,使用cglib动态代理(默认)目标类有接口,使用cglib动态代理异常通知 @AfterThrowing异常通知方法的定义格式1.public2.没有返回值3.方法名称自定义4.方法有一个Exception,如果还有时JoinPoint@AfterThrowing属性:1.value 切入点表达式2.throwing 自定义的变量,表示目标方法抛出的异常对
2021-05-13 15:15:21 154
原创 spring---AOP---学习记录---21.05.11
21.05.11文章目录21.05.11JoinPoint@AfterReturning 后置通知@Around 环绕通知JoinPoint指定通知方法中的参数:JoinPoint* JoinPoint:业务方法,要加入切面功能的业务方法* 作用是:可以在通知方法中获取方法执行时的信息,例如方法名称,方法的实参* 如果你的切面功能中需要用到方法的信息,就加入JoinPoint* 这个JoinPoint参数的值是由框架赋予,必须是第一个位置的参数xml<?xml versi
2021-05-11 20:27:38 57
原创 spring---AOP---学习记录---21.05.10
21.05.10文章目录21.05.10什么是AOP怎样理解面向切面编程术语一个切面的三个关键的要素aop的实现AsjpectJ的切入点给表达式使用aspectj实现aop的基本步骤:@Aspect什么是AOPAOP(Aspect-Oriented Programming,面向切面编程)是对传统传统 OOP(Object-Oriented Programming,面向对象编程)的补充,属于一种横向扩展。其将与核心业务无关的代码,如日志记录、性能监控、事务处理等从业务逻辑代码中抽离出来,进行横向排列,从
2021-05-10 21:09:43 367
原创 spring---动态代理---学习记录---21.05.10
21.05.10文章目录21.05.10动态代理动态代理动态代理的作用:1)在目标类源代码不改变的情况下,增加功能2)减少代码的重复3)专注业务逻辑代码4)解耦合,让业务功能和入职,事务非业务功能分离实现方式:jdk动态代理,使用jdk中的Proxy,Method,InvacationHanderl创建的对象。jdk动态代理要求目标类必须实现接口cglib动态代理:第三方的工具库,创建代理对象,原理时继承。通过继承目标类,创建子类。子类就是代理对象。要求目标类不能时final的,方法也不
2021-05-10 20:26:58 65
原创 21.05.09---spring---学习记录(di注解)
21.05.09文章目录21.05.09简单类型的属性赋值引用类型--Autowired@Resource属性的配置文件赋值jdk的动态代理简单类型的属性赋值属性:value 是String类型的,表示简单类型的属性值位置:1.在属性定义的上面,无需set方法,推荐使用2.在set方法的上面value可省略@Value(value="张飞") private String name;@Value("29") public void setAge(Integer age)
2021-05-09 21:04:58 95
原创 21.05.08---spring---学习记录(引用类型的注入,di注解)
21.05.08文章目录21.05.08引用类型的自动注入(通过配置文件)byName(按名称注入)byType(按类型注入)多个配置文件的优势多个配置文件的分配方式基于di的注解使用注解的步骤@Component声明组件扫描器指定多个包的三种方式引用类型的自动注入(通过配置文件)spring框架根据某些规则可以给引用类型赋值,不用我们在给引用类型赋值。使用的规则常用的是byName,byTypebyName(按名称注入)byName(按名称注入):Java类中引用类型的属性名和Spring容
2021-05-08 21:45:38 231
原创 21-05-07---spring---学习记录(spirng概述,di注入)
21-05-07目录21-05-07spring概述ioc的技术实现反射机制Spring的配置文件告诉spring创建对象实现spring创建对象的步骤DI的语法分类set注入构造注入spring概述Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)ioc的技术实现DI是ioc的技术实现DI :依赖注入,只需要在程序中提供要使用的对象名称就可以,至于对象如何在容器中创建,赋值,查找都由容器内部实现。spring是使用的di实现了ioc的功能,spring底层创建对象
2021-05-07 21:43:55 326 1
原创 21.05.06---mybatis---学习记录——结
21.05.06主配置文件DataSource<transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/>
2021-05-06 16:11:42 90
原创 21.05.05---mybatis---学习记录
21.05.05resultType结果类型指sql语句执行完毕后,数据转为的java对象处理方式:1.mybatis执行sql语句,然后mybatis调用类的无参数构造方法,创建对象2.mybatis把ResultSet指定列值付给了同名的属性定义别名在mybatis主配置文件中定义第一种方式 typeAliases可以指定一个类型 一个自定义别名type:自定义类型的全限定名称alias:别名<typeAliases> <typeAlias type="dom
2021-05-05 22:05:24 87
原创 21.05.04---mybatis---学习记录
mybatis定义的别名左边是别名 ,右边是java类型别名映射的类型_bytebyte_longlong_shortshort_intint_integeint_doubledouble_floatfloat_booleanbooleanstringStringbyteBytelongLongshortShortintIntegerintegerIntegerdouble
2021-05-04 22:23:19 89
原创 20.05.03---mybatis---学习记录
21.05.03mybatis中运用的主要类的介绍1)Resources : mybatis中的一个类,负责读取主配置文件 //1.定义mybatis主配置文件的名称,从类路径开始 String config="mybatis.xml"; //2.读取这个config表示的文件 InputStream in= Resources.getResourceAsStream(config);2)SqlSessionFactoryBuilder : 创建SqlSessionFa
2021-05-03 21:52:37 140 1
原创 21.04.30---mybatis---学习记录
21.04.30mybatis的主配置文件使用mybatis进行数据库操作的基本步骤配置日志功能mybatis的主配置文件环境配置:数据库的连接信息default: 必须和某个environment的id值一样告诉mybatis使用哪个数据库的连接信息因为数据库配置是在environment中,environment中的id值就表示要使用哪个数据库,所以要使用哪个数据库,就要在environments中配置default,即default等于某个environment的id值,就表示要使用哪个数据
2021-04-30 23:24:07 76 2
原创 21.04.29---mybatis---学习记录
21.04.29三层架构1.界面层:和用户打交道,接受用户的请求参数,显示处理结果(jsp,html,servlet)2.业务逻辑层:接受了界面层传递的数据,计算逻辑,调用数据库,获取数据3.数据访问层:就是访问数据库,执行对数据的增删改查三层中类的交互:用户使用界面–>业务逻辑层–>数据访问层–>数据库三层对应的处理框架界面层----servlet----springmvc业务逻辑层----service类----spring数据访问层----dao类----myba
2021-04-29 22:39:39 112 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人