SpringBoot搭建个人博客网站过程记录(一)

从搭建到现在两个多星期了。由于css的不熟悉,整个前端页面的编写花了好长的时间(所以说css是硬伤)。
在一周以前,终于开始编写后端的代码了。这里记录一下编写过程中踩到的坑以及项目不足的地方。方便以后重构或者迭代的时候参考。

踩坑总结

说起来真的是血泪史,基本上一天都能碰上两三个bug,感觉bug就像一个死结,你打开了其中一个结,还有另一个结等着你。

一、freemarker模板引擎:

因为是在项目中边学边做,没有进行系统的学习。freemarker使用的时候需要把值存进model里面,然后在页面上展示出来,这就造成了每次跳转可能都要model一遍数据,我觉得可能会造成代码的盈余,所以想将数据存放进session域中(更大的域对象),这样方便我取以及只需要存一次,在更新的时候重新存就好了。
可是我谷歌了好久发现,freemarker好像不支持从session域中取出数据。不知道是不是我代码的问题。取数据的时候总是会报错。然后就放弃了这个想法。
通过 @ModelAttribute 这个注解,在通过@RequestMapping访问控制器方法的时候,会先执行被这个注解标记的方法,这样就暂时解决了model的问题。
SpringBoot搭建个人博客网站过程记录(一)_第1张图片
而且session也是有缺陷的,不支持存放大量数据,有兴趣的可以看一下这篇博文。
session正在被淘汰吗?
还有这个
添加链接描述

二、markdown编辑器editormd:
一个非常好用的markdown编辑器,可是在使用的过程中,我犯了个错。
一开始,在本地测试的时候,我并没有把静态文件放在cos上,而是放在本地引用,(下面的lib目录指向本地),这个path路径是这个markdown插件依赖的其他静态资源
SpringBoot搭建个人博客网站过程记录(一)_第2张图片
然后呢,当我把本地的静态资源放到cos上面,在页面上引入静态资源的路径时,
出现了这问题。
SpringBoot搭建个人博客网站过程记录(一)_第3张图片
lib目录的请求路径请求到我项目的根目录上面了。我一开始的解决办法时在web工程的static(springboot的默认静态资源加载路径)下,把lib文件夹copy进去。
后来,当我检查js文件的时候,发现了path路径指向有问题。
以下是改正之后的路径:
SpringBoot搭建个人博客网站过程记录(一)_第4张图片
三、java8的Time类:
我是根据这个老哥的博客进行学习的,有兴趣可以跟着学习,老哥出了一整个系列,很详细。
无Bug说
顺便提一句:mysql的datetime,timestamp类型都可以用Time类下的localdate类存储,真的很方便。有兴趣的同学可以去试一下。

四、Jquery的tagsInput插件:
这个是他们的官网,有需要的可以看一下。
http://xoxco.com/projects/code/tagsinput/

我做出来的效果是这样的
SpringBoot搭建个人博客网站过程记录(一)_第5张图片
这样的输入框,如果有多个标签的话,获取到的值是用“,”分割的,所以我直接就获取了输入框的值,在后端对,号进行分割。
后来,在老哥的建议下(上面的无BUG说的博客就是他的)我改成了在前端生成数组,然后传给后端,后端只要对这个数组进行遍历就行了。
前端的操作:
SpringBoot搭建个人博客网站过程记录(一)_第6张图片
后端:SpringBoot搭建个人博客网站过程记录(一)_第7张图片
五、mybatis的OGML表达式:
文章的保存操作:
在这里插入图片描述
在进行文章保存的操作时,SQL是没有问题的,但是mybatis缺给我了报了个类型异常在这里插入图片描述
在尝试了n次不行之后,我想到了mybatis的OGML表达式还有另一种写法

SpringBoot搭建个人博客网站过程记录(一)_第8张图片
用“KaTeX parse error: Expected 'EOF', got '#' at position 6: ”号代替“#̲”号,mybatis“#{}”…{}"进行插值,插值的类型是String类型,然后插值成功。

六、HTML字符串转码:
从前端传过来的html内容,需要先转码,然后再存储到数据库中,不然会因为占位符的问题而报错。
在这里插入图片描述
可以参考一下这篇博文:
https://blog.csdn.net/yuebinghaoyuan/article/details/27787519
在这里插入图片描述


## 不足总结

一、类与类之间的耦合:

这个很难说清楚,毕竟我的封装能力太弱了,总是需要new 对象,记得之前看过的一句话:框架的灵魂就是减少new的次数。
但是我自己封装的一些工具类的时候,总是避免不了要new 对象。所以这是一个不足的地方。

二、mysql TIMESTAMP类型:

TIMESTAMP好像只支持到203x年,这之后可能要改改了。
SpringBoot搭建个人博客网站过程记录(一)_第9张图片

三、前后端分离:

本人是在是太菜了,没有办法前后端分离,等以后技术精进了之后,再做打算。

你可能感兴趣的:(踩坑,java,博客搭建)