![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
springboot
张嘉烘
这个作者很懒,什么都没留下…
展开
-
redis缓存序列化的泥坑
redis缓存序列化的泥坑redis注解序列化问题凡事预则立,不预则废路过~最近用springboot和redis过程中,发现一个小问题。问题虽小,但奈何能力不足,用了好久才发现!redis注解序列化问题redis序列化有手动序列化和注解序列化,我不打算说这个,我也讲不明白~网上有很多大神讲解,这里我贴上项目里在用到的序列化的类。import org.springframework.cache.annotation.CachingConfigurerSupport;import org.sp原创 2021-12-31 17:18:34 · 1324 阅读 · 0 评论 -
为什么要把DAO作为接口,再用impl类来实现?
为什么要把DAO作为接口,再用impl类来实现?这样做是为了后期的维护。当软件全部编好了,测试好了,然后给用户装好了,但是过一段时间,用户用着不爽,他又让做软件的人改变一些功能,这样软件开发人员只需要改实现类里面的代码,也就是只用改一个包下代码,不用这个包改一下,那个包里的代码还要改。因为项目大了,代码就是成万上亿行。用了接口的话,就起了这个作用。另外,不用接口的话,假如修改了dao中的代码,因为service引用了dao中的类,那么也要改变service里面的代码,改完之后要重新编译运行,当项目比较大原创 2021-07-02 13:10:25 · 951 阅读 · 0 评论 -
Mysql单表优化笔记
Mysql单优化笔记建立索引ALTER TABLE table_name ADD INDEX (字段名);删除索引ALTER TABLE table_name DROP INDEX 字段名;查询表中有哪些索引,\G是格式设置SHOW INDEX FROM table_name; \G查看查询语句运行使用了什么排序只需要加explain关键字order by当order by 中的字段出现在where条件中时,才会利用索引而不进行排序操作。这个结论不仅对order by有效,对其他需原创 2021-04-24 10:04:00 · 74 阅读 · 0 评论 -
项目部署
项目部署部署项目前的文件配置、项目打包,自定义项目名称以及一些注意事项这篇文章不展开,包括方法一的具体步骤都可以参考这篇文章。idea下springboot打包成jar包和war包,并且在外部tomcat下运行访问方法一:提取war包,放入tomcat的webapps目录,重启tomcat即可,但是不推荐。方法二:按本地项目部署操作办法,部署特定虚拟主机上运行的一个Web应用,这样可以避免访问时需要输入端口号和项目名的问题。将项目war包放置在你个人指定的目录下,可以自行决定位置。通常建议存放在当前原创 2021-04-23 09:51:24 · 106 阅读 · 0 评论 -
前端获取后端数据
前端获取后端数据前阵子做个项目,因为涉及到前端代码,奈何前端知识有限,有个问题搞了好久。前端的js里需要一个数组,我后端都封装好了,但是这短短的距离我却不知道怎么拿过去前端的js。用了网上一个不太友好的方法:先用input从后端拿到前端的body<input type="hidden" th:value="${address}" id="address"/>再用document.getElementById拿到js,但是这样如果是传数组会出错var address = d原创 2021-04-17 00:04:16 · 24348 阅读 · 2 评论 -
分级评论回复模块
分级评论回复模块评论功能的实现效果有三种,单一型、两层型、多层嵌套型。实现难度也是从易到难,下面分别对每一种进行实现。单一型只能评论,没有对评论的回复功能。如下图所示数据库表只需要建立一张评论表,每条评论对应所属文章的id。后端只需要根据文章的id从数据库评论表中获取数据即可。两层型两层型可以对评论进行多次回复,如图所示数据库中使用两张表,第一张表和单一型的数据表相同,有每条评论对应的文章 id 和 该评论的 id;第二张表是回复表,每条回复对应评论表中的评论 id ,这样就可以根据评原创 2021-03-27 11:56:08 · 471 阅读 · 0 评论 -
SpringBoot2使用@Cacheable注解时,Redis中保存的Value为java序列化乱码问题
SpringBoot2使用@Cacheable注解时,Redis中保存的Value为java序列化乱码问题解决办法:采用自定义RedisCacheConfiguration组件的方式,向IOC容器中注册一个类型为org.springframework.data.redis.cache.RedisCacheConfiguration的组件,调用serializeValuesWith方法对value的序列化规则改为json类型:/** * 新建一个配置类,通过注册自定义RedisCacheConfig原创 2021-03-19 22:08:26 · 628 阅读 · 1 评论 -
Spring boot使用redis缓存出现乱码
Spring boot使用redis缓存出现乱码有时候我们会发现,我们存入缓存到redis时会出现乱码,但是取出又不会,这是因为redis使用了java的序列化,我们只需要更改redis的序列配置就可以解决这个问题了(文章对新手不是很友好,需简单了解springboot怎么使用redis存取数据)解决步骤:创建一个redis配置类:MyRedisConfiguration,继承CachingConfigurerSupport类@Configurationpublic class MyRedi原创 2021-03-19 00:22:31 · 663 阅读 · 0 评论 -
Thymeleaf怎么显示request中绑定的数据?
Thymeleaf怎么显示request中绑定的数据?后端代码:@Controllerpublic class test { @RequestMapping({"/test"}) public String test(HttpServletRequest httpServletRequest){ //使用setAttribute存入数据 httpServletRequest.setAttribute("zhang" , "zhangjiahong");原创 2021-03-08 14:59:27 · 1168 阅读 · 0 评论 -
Navicat 导出导入数据库
Navicat 导出导入数据库利用Navicat,怎么把mysql数据库备份或者分享给别人呢导出:Navicat连接到mysql,然后选中你要导出的数据库,右键,选择转储SQL文件…,接着保存到本地中即可。如下图:选择转储SQL文件…,如果只是结构则选择仅结构,如果连同数据库里的数据也需要则选择结构和数据,导出成功后点击关闭即可。导入:打开我们刚才导出的sql文件,我们发现并没有数据库本身的信息,所以我们一会导入sql文件的时候,需要先自己建立一个数据库。建立数据库完成后,同样右击,选择运行原创 2021-03-05 21:17:26 · 843 阅读 · 0 评论 -
springboot访问不到静态资源
springboot访问不到静态资源有时候我们为了图方便,直接把css,js等静态文件直接拖到项目中,但是这样可能会导致项目运行找不到该文件,这要是找不出问题出在哪里真的是有够头疼的。我们怎么判断有没有正确导入呢?打开target下的classes,查看有没有相应的文件,如果没有就是springboot没有感应到你的导入。解决方法:打开maven,clean一下,再编译运行项目就可以了...原创 2021-03-05 17:08:55 · 1403 阅读 · 0 评论 -
spring项目修改包名后找不到类
今天创建一个springboot项目时,把项目名称打错了,于是修改了项目包的名称。但是启动一直报:错误:找不到或无法加载主类,后面跟上未修改之前的路径,想着可能是有缓存的原因。尝试清理了缓存 ,启动仍然报相同的错误。猜测可能是workspace里哪个地方的路径没有改。果然发现几处路径为修改前的路径,修改路径后成功启动。...原创 2021-03-04 21:03:42 · 901 阅读 · 1 评论 -
springboot自定义项目首页
springboot自定义项目首页一、使用 index.html 作为首页面二、使用非 index.html 的文件作为首页面java web项目首页Spring Boot 项目启动后,默认会去查找 index.html 文件作为首页面。当然我们可以指定其它页面作为首页面一、使用 index.html 作为首页面1,静态首页Spring Boot 项目在启动后,首先回去静态资源路径(resources/static)下查找 index.html 作为首页文件。2,动态首页如果在静态资源路径(r原创 2021-01-14 13:35:19 · 1817 阅读 · 0 评论 -
idea下springboot打包成jar包和war包,并且在外部tomcat下运行访问
idea下springboot打包成jar包和war包,并且在外部tomcat下运行访问声明一点,下面打包的过程中,scope一直都是使用默认的范围<!--用于编译jsp--><dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <!--<scope原创 2021-01-13 22:00:12 · 2077 阅读 · 0 评论 -
SpringBoot整合MarkDown
SpringBoot整合MarkDown下载MarkDown的资源包修改html代码controller类调试测试下载MarkDown的资源包在项目resources/static目录下创建一个editormd目录、同时在resources/templates下创建一个editor目录,在templates的editor目录下新建一个editormd.html文件(作为编辑页面),将资源包的examples目录中的simple.html的代码内容拷贝进去,最后把整个资源包都导入static的editor原创 2020-12-10 16:20:25 · 1143 阅读 · 0 评论 -
Request和Response部分方法
Request 和 Response 对象起到了服务器与客户机之间的信息传递作用。Request 对象用于接收客户端浏览器提交的数据,而 Response 对象的功能则是将服务器端的数据发送到客户端浏览器。Request对象QueryString:用以获取客户端附在url地址后的查询字符串中的信息。例如:stra=Request.QueryString ["strUserld"]Form:用以获取客户端在FORM表单中所输入的信息。(表单的method属性值需要为POST)例如:stra=Req原创 2020-12-09 15:13:27 · 105 阅读 · 0 评论 -
数据库软删除
数据库软删除这是个问题冷静分析这是个问题今天研究个博客项目的开源代码时,发现了一个奇怪的现象,就是发现它在数据库中查找的语句是下面这样select 属性 from 表名 where is_deleted = 0 limit 1它的目的是想找出表中没有被删除的数据,但是为啥要用这个 is_deleted 来记录这条数据是不是被删除了呢?直接在数据库删除了不好吗?冷静分析百度了一下,这原来是数据库软删除从数据库删数据是一个非常有风险的事情,也许你会认为一些无效数据没有保留的必要,却很容易给后续的原创 2020-12-08 18:14:30 · 826 阅读 · 0 评论 -
springboot中配置addResourceHandler读取本地文件
springboot中配置addResourceHandler和addResourceLocations,可以使得可以从磁盘中读取图片、视频、音频等例如我们要读取该文件夹下的文件WebMvcConfig的代码//以windows系统下为例//对静态资源的配置@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {// addResourceHandler("/smallapple/**"),原创 2020-12-07 17:49:24 · 11458 阅读 · 9 评论 -
springboot上传文件
springboot上传文件前端准备控制类 UploadController.javaapplication.properties测试前端准备<!--uploadPage.html--><!--表单部分代码--><form action="upload" method="post" enctype="multipart/form-data"> 选择图片:<input type="file" name="file" accept="image/*" /&g原创 2020-12-07 16:17:39 · 148 阅读 · 0 评论 -
SpringBoot全局异常处理入门
SpringBoot全局异常处理入门springboot默认处理基本思路自定义异常请求的方式方式一:自定义错误页面方式二:自定义异常控制器在开发中,当我们需要构建一个基础的开发框架时,自定义错误页面、全局异常处理等技术点,是我们必须考虑的问题,那么如何在SpringBoot框架的基础上来优雅的解决这些问题呢?springboot默认处理基本思路关于错误页面的处理,SpringBoot提供了默认的支持,基本思路如下:当页面请求发生异常时,会自动请求“/error”控制器;此控制器会根据处理类型自动原创 2020-12-06 21:38:50 · 122 阅读 · 0 评论 -
springboot之HandlerInterceptor拦截器入门
springboot之HandlerInterceptor拦截器入门HandlerInterceptor简介使用步骤pom加入如下依赖编写一个拦截器,实现HandlerInterceptor接口编写一个类,继承WebMvcConfigurerAdapter抽象类结果HandlerInterceptor简介拦截器,最常用的登录拦截、或是权限校验、或是防重复提交、或是根据业务像12306去校验购票时间,总之可以去做很多的事情下面提供主要的代码,像控制器代码、application配置文件没有给出,适合对s原创 2020-12-06 00:39:58 · 2046 阅读 · 0 评论 -
SpringBoot + kaptcha 生成验证码
SpringBoot + kaptcha 生成验证码pomKaptchaConfigKaptchaController效果验证码生成使用的是 Google 的 kaptcha 框架,固定的代码,只需要自己配置一些参数即可,下面的代码是主要的代码,像项目的前端代码、验证生成的验证码之类的代码没有给出,所以需要一定的springboot基础pom需要引入 kaptcha 的 Maven 依赖<!-- https://mvnrepository.com/artifact/com.github.pen原创 2020-12-05 22:35:44 · 243 阅读 · 0 评论 -
重定向RedirectAttributes用法
重定向RedirectAttributes用法用于重定向之后还能带参数跳转的的工具类他有两种带参的方式:第一种:redirectAttributes.addAttributie("prama",value); 这种方法相当于在重定向链接地址追加传递的参数,例如:redirectAttributes.addAttributie("prama1",value1);redirectAttributes.addAttributie("prama2",value2);return:"redirect:/原创 2020-10-03 11:12:04 · 566 阅读 · 0 评论 -
Session的获取和存取值
Session的获取和存取值获取sessionHttpServletRequest request = ServletActionContext.getRequest();HttpSession session = request.getSession();存取session值 存储方式:session.setAttribute("key",value); 取值1:session.getAttribute("key"); 取值2:String name=(String)session.get原创 2020-10-03 11:00:30 · 631 阅读 · 0 评论 -
IDEA创建springboot输出helloworld
springboot输出helloworld打开IDEA,新建项目选择Spring Initializr-->Next选择Web-->SpringWeb --> NextProject Name自定义 --> Finish目录如下DemoApplication是启动类,在和启动类同一个包下新建JAVA类——hello类回到启动类DemoApplication 运行,打开浏览...原创 2020-01-22 17:01:35 · 1076 阅读 · 0 评论 -
springboot小实操(登陆功能实现)
springboot小实操(登陆功能实现)新建数据库和表新建springboot项目application.yml实体类admin建持久层接口与映射文件服务层登录页面新建控制层测试心得新建数据库和表这里我使用mysql数据库//建立数据库DROP DATABASE IF EXISTS landers;CREATE DATABASE landers DEFAULT CHARACTER SET utf8;//建立表use landers;CREATE TABLE admin( id INT原创 2020-09-05 12:52:21 · 2395 阅读 · 1 评论 -
springboot分页小坑(JpaRepository与PageHealper)
spring boot 中 JpaRepository 与 PageHealper分页小坑废话:事情是这样的,跟着教程做了springboot分页,分页失败!下载了教学代码运行确可以,对比了自己代码的pom.xml、controller.java、PageHelperConfig.java等文件,但是还是没发现有啥问题。问题发现:最后突发奇想,例子里用的是Mapper注释的方式查找数据库,而我用的是JpaRepository,是不是JpaRepository的findAll()方法有问题。事实证明问原创 2020-08-18 22:22:01 · 590 阅读 · 1 评论 -
springboot开发小坑(webapp下的jsp页面找不到了)
springboot运行找不到webapp下的jsp页面先上目录springboot找不到webapp/WEB-INF路径问题可能不同,我们讲一下常见的spring-boot-starter-thymeleaf惹的祸这是个大坑,坏苦我了如果pom.xml导入了 thymeleaf 依赖的话默认访问 resource 路径下的页面,不会访问 webapp 下的页面解决方法只要去掉 thymeleaf 依赖,也就是Jsp和Thymeleaf只能取其一,不过也可以整合,这里就不展开了没有原创 2020-08-12 15:50:11 · 1590 阅读 · 1 评论 -
springboot错误处理(error页面)
springboot错误处理(error页面)在 exception 包下创建 GlobalExceptionHandler 类代码如下:import javax.servlet.http.HttpServletRequest; import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.ExceptionHandler;imp原创 2020-08-11 17:51:01 · 3295 阅读 · 0 评论 -
springboot找不到对象(自动注入失败)
springboot找不到对象(自动注入失败)今天在idea重新建立个springboot项目时,遇到这个奇怪的问题,说是找不到对应的bean,我猜想是@@Mapper的问题Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.2019-04-08 14:11:11.359 ERROR 7300 --- [ ma原创 2020-08-10 12:43:03 · 1517 阅读 · 0 评论 -
springboot热部署
springboot热部署Springboot当发生了任何修改之后,必须关闭后再启动Application类才能够生效,显得略微麻烦。 其实Springboot提供了热部署的方式,当发现任何类发生了改变,马上通过JVM类加载的方式,加载最新的类到虚拟机中。 这样就不需要重新启动也能看到修改后的效果了实现:在pom.xml中新增加一个依赖和一个插件依赖:<dependency> <groupId>org.springframework.boot</group原创 2020-08-09 17:14:04 · 116 阅读 · 0 评论 -
IDEA中打包SpringBoot项目jar包
IDEA中打包SpringBoot项目jar包Springboot 其本质上是一个 Java 应用程序,那么又如何部署呢?通常来说,Springboot 部署会采用两种方式:全部打包成一个jar,或者打包成一个war。这里讲解jar的方式打包前确认项目可以正常运行,点击下图图标如图所示操作module选择需要打包的项目名Main Class 选择项目的主程序类输出目录确保是空的(这里我的输出目录是out)如果里面有一个MANIFEST.MF文件,要先删除掉现在将设置原创 2020-08-09 15:22:31 · 246 阅读 · 1 评论 -
Idea导入springboot项目
Idea导入springboot项目有时候会拿到别人现成的 springboot 项目,而不是从头自己做一个。 这个时候,就需要用导入的方式来 import 这么一个项目了。所以我们看看如何用 idea 来导入。菜单->File->New->Project From Existing Sources进入要导入的项目中的目录,并选中 pom.xml(假装这里有图)点击OK,然后后面就一路 Next 就行了因为是 maven 项目,所以在本地库没有 springb原创 2020-08-08 16:58:21 · 6085 阅读 · 1 评论 -
Mybatis多个参数问题
Mybatis多个参数问题引入:这几天做个springboot登陆的小项目,但是在配置Mybatis时遇到了这两个问问题,愁得我头发都掉光了出现的问题:DAO层的函数方法@Mapperpublic interface UsersDao { Users getUser(String Sname , String Spassword );}出问题的xml文件<select id="getUser" resultType="com.example.demo.entity.User原创 2020-08-06 11:26:59 · 354 阅读 · 2 评论