论坛建站

学点有的没的,以加深对于网络世界的理解。

Spring Boot

1. 创建

在Intellij IDEA中新建项目,使用Spring Initializer创建即可。

名称最好为网址的倒序排列。

2. 入门

参考spring.ioGuides栏下的Serving Web Content with Spring MVC进行配置。

主要注意pom.xmldependency的添加,controller的创建以及templates中html的添加。

### Bootstrap

参考[bootstrap v3](https://v3.bootcss.com/components/)中各组件的使用,以及[bootstrap 栅格系统](https://v3.bootcss.com/css/#grid)。

在 https://v3.bootcss.com/getting-started/#download 中直接下载用于生产环境的bootstrap。

把这些文件放至`static`目录下。

按照 https://v3.bootcss.com/getting-started/#download-cdn 的方式在html中部署css和js文件,路径应为`css/`或者`js/`。

拷贝所需组件的代码至html文件。

3. 登录

参照https://docs.github.com/en/developers/apps/building-oauth-apps来使用Github登录。

Developer setting中创建OAuth应用。

登录按钮处按照https://docs.github.com/en/developers/apps/building-oauth-apps/authorizing-oauth-apps的GET部分来填写href,其Parameters使用?&的组合传入。

创建controller来接收callback的数据(包含code和state)。

这里使用OkHttpPOST。需要一个DTO(需要POST的参数以及相应的get\set方法)和一个Provider(创建一个方法来调用OkHttp)。Json依赖可以使用Fastjson,可在https://mvnrepository.com/里查找所需库并按Maven来添加dependency

controller中调用ProviderDTO

再通过access_tokenGET接入API。同样可以构造DTODTO的内容选择需要GET的参数内容)和ProviderProvider可以共用,因为是同一个过程的不同步骤,有些变量会重用)。使用JSON.parseObject来将String按照DTO的形式来切分。

基本流程:GET获取code -> POST获取的code来换取AccessToken -> 使用AccessToken来GET用户信息

P.S. DTO用来传递网络中的数据结构

4. Session&Cookie

HttpServletRequest用来处理Http请求,获取session并将得到的用户信息写入session以保持登录态。

session信息和前端页面的绑定通过index.html的修改实现,需要根据dependency依赖的引擎所支持的语法来改写前端页面。

“redirect:/“可以重定向至首页。

5. MySQL

常用语句:增(CREATE、INSERT INTO)、删(DELETE)、查(SELECT)、改(UPDATE)

在此处使用H2数据库。通过MVN引入的方式参考H2 Database Engine

在IDEA中的右侧边栏Database,点击+选择数据源,配置方式参考Quickstart。在此基础上右键创建的database来创建表和列。

6. MyBatis

参考mybatis-spring-boot-autoconfigure来引入MyBatis。

参考官方文档来添加支持。

在mapper文件夹下创建UserMapper,在model文件夹下创建User,mapper用来存放映射对应SQL操作的方法model用来存放程序内部交换的数据结构

application.properties

server.port 指定端口

可以任意指定关键字,使用时在@Value中替换即可。适用于当前环境与开发环境不一致的路径,便于快速修改。

Spring @

@Component

@Autowired

@Value("${}")

@Controller

@GetMapping()

快捷键

ctrl alt v 快速创建变量

alt insert 快速创建get\set等方法

alt enter 引入所需的包(标红时使用)

ctrl 鼠标左键 快速查看对应的定义

ctrl alt o 去除未使用的引入包

ctrl n 检索

shift enter 快速换行