序言

从简入深的使用SpringBoot搭建一个Web项目,同时也包括一些小的问题。第一篇博文是以较为简单的方式完成一个可以连接数据库的Springboot web程序。之前自己学习的时候看网上的教程总是感觉有点太大,我只是想最简单的搭建一个可以运行的项目,之后再去深究细节。每个教程的配置还都不一样,让我不知所措,所以我就写了这篇博文来记录自我感觉的较简单的步骤较少的方法去搭建一个springboot web项目,不常写文可能思路有点混乱。

Code

创建项目

这里使用的IDE是IDEA,选择软件左上角File -> New -> Project来创建一个新的项目

选择Spring Initializr来初始化我们的SpringBoot项目,选择JDK8之后点击Next,接下来的点击Next操作就不做说明了

在如下界面我们设置包名,项目类型选择Maven项目,语言选择Java,打包方式选择Jar,Java版本选择8

依赖这部分,我们分别选择Web下的Spring Web,Template Engines下的Thymeleaf(为以后挖坑),SQL下的MyBatis Framework,当然这里也可以创建项目之后手动在POM文件中写入,不过这样更方便一些。

接下来选择项目的存放路径,即可完成项目的创建,创建完成项目打开项目之后IDEA右下角会弹出Maven projects need to be imported弹窗,选择Enable Auto-Import即可,这样Maven就可以自己下载依赖。

目录结构

我们打开新建的项目之后大致如下图所示。.idea文件夹下存放的是IDEA项目的配置文件,比如compiler.xml 配置了JDK版本,encodings.xml 配置了编码类型,该文件夹我们不需要过多了解。.mvn文件夹下存放的是Maven的配置和相关Jar包。src文件夹是我们主要编码的地方,src.main.java路径下是我们编写java代码的地方,src.main.resources是我们存放静态资源,页面以及配置文件的地方。test文件夹是我们编写测试代码的地方。.gitignore文件配置了我们使用git时忽略上传的文件。HELP.md是一个帮助文档。mvnw是一个linux脚本文件,可以使我们运行指定版本的Maven,mvnw.cmd则是相同功能的windows版本脚本文件,pom.xml是Maven项目的依赖配置文件。t1.iml是 intellij idea的工程配置文件,里面是当前t1 project的一些配置信息。

我们主要关注的还是src文件夹下的文件,其余不重要的文件可以隐藏,选中t1 项目,然后点击这个文件夹右下角带三个小蓝色方块的图标

选择要隐藏的文件右键选择Excluded 然后这些文件夹就会变成橙黄色

点击Apply回到原来的页面点击图片中右上角的小齿轮,点击取消Show Excluded Files,这样想要隐藏的文件就消失了

测试启动

首先我们先来测试一下SpringBoot框架是否能够启动,创建TestController文件,目录结构如下

该类的代码如下

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; @RestController // 标注该类为Controller,SpringBoot会自动扫描该类
public class TestController {
@RequestMapping("/test") // 处理请求路径为/test的请求
public String test(){
return "测试成功";
}
}

注:自己敲代码的时候会自动导包,如果是复制上去的话可能不会自动导,需要手动处理。

接下来点击下图左侧主启动类的小箭头或者右上角的箭头都可以启动项目

然后观察控制台的输出,很自然的没有运行成功,出错了,我们看一下错误提示


APPLICATION FAILED TO START


Description:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

Reason: Failed to determine a suitable driver class

大体意思就是没有配置数据库驱动,我们也没用到数据库啊?为啥要配置数据库驱动呢?还记得我们之前选择依赖的时候选择了mybatis吗,原因就出在这里,找到pom.xml文件注释掉mybatis依赖,重启项目。

<!--        <dependency>-->
<!-- <groupId>org.mybatis.spring.boot</groupId>-->
<!-- <artifactId>mybatis-spring-boot-starter</artifactId>-->
<!-- <version>2.1.3</version>-->
<!-- </dependency>-->

项目成功启动控制台输出如下

我们可以看到程序启动在8080端口,在浏览器中输入请求地址即可看到我们想要得到的测试成功字符串

我们百度可以了解到mybatis是一个Java持久层框架,JDBC才是连接数据库用到的驱动,那为什么我们引入mybatis需要配置数据库驱动呢?

我们从上面这张图片可以看到mybatis-spring-boot-starter依赖包含了jdbc依赖,所以引入了mybatis就相当于引入了jdbc,再加上SpringBoot的自动配置是根据是否引入类来进行自动配置的,自然的,引入了jdbc依赖就需要配置数据库驱动程序(选择数据库驱动自然是没法自动配置的),从如下的报错也可以得出同样结论。

Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Failed to determine a suitable driver class

连接数据库

我们使用mysql数据库,首先创建一个数据库,我起的名字叫t1并创建了一张表Bear

表内字段如下

然后随便添加点数据,这样我们数据库就准备好了。

再次回到代码这边,首先我们是要配置数据库的连接信息,在application.properties里做如下配置

# 数据库设置
## 数据库驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 数据库连接地址
spring.datasource.url=jdbc:mysql://localhost:3306/t1
# 数据库用户名
spring.datasource.username=root
# 数据库密码
spring.datasource.password=root

其次是导入JDBC驱动,在pom.xml中添加如下代码

  <!-- mysql jdbc 驱动 https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>

因为我安装的是5.7版本的mysql所以这里我选择的是5版本的jdbc,如果是8版本的mysql可能就需要选择8版本的驱动了,驱动程序可以在maven仓库找到,同时我们要解开之前对mybatis依赖的注释。

接下来我们要创建一个实体Bear,用来承接Bear表查询出来的数据,在t1目录下创建controller的同级目录entity,再在entity内创建java文件Bear.java,内容如下

package com.ljsh.t1.entity;

public class Bear {

    private String name;
private String type;
private String weight; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getType() {
return type;
} public void setType(String type) {
this.type = type;
} public String getWeight() {
return weight;
} public void setWeight(String weight) {
this.weight = weight;
} public Bear(String name, String type, String weight) {
this.name = name;
this.type = type;
this.weight = weight;
}
}

一个典型的pojo,下面的getter和setter方法可以在idea编码页面右键选择 Generate -> Getter and Setter 自动生成。

再之后是对mybaitis的配置与操作,创建controller目录同级目录mapper,在mapper目录中创建接口文件TestMapper.java,代码内容如下

package com.ljsh.t1.mapper;

import com.ljsh.t1.entity.Bear;
import java.util.List; public interface TestMapper {
List<Bear> getAllBears(); //查询Bear表所有数据,作为List查出来
}

同样的在resources目录下也创建一个mapper文件夹,mapper文件夹里创建TestMapper.xml文件,内容如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ljsh.t1.mapper.TestMapper"> <select id="getAllBears" resultType="com.ljsh.t1.entity.Bear">
select
*
from Bear
</select>
</mapper>

在T1Applicatin文件也就是主启动类中添加一个注解如下

package com.ljsh.t1;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
@MapperScan("com.ljsh.t1.mapper") //扫描mapper接口类
public class T1Application { public static void main(String[] args) {
SpringApplication.run(T1Application.class, args);
} }

最后在application.properties中增加一行

# 指向映射xml文件目录
mybatis.mapperLocations=classpath:mapper/*.xml

现在的目录结构如下

通过在主启动类上配置@MapperScan注解,让springboot扫描需要实现的Mapper接口文件。通过配置文件里xml地址的配置,让Mapper接口和Mapper的xml实现可以对应起来。

最后我们在TestController里修改代码

package com.ljsh.t1.controller;

import com.ljsh.t1.entity.Bear;
import com.ljsh.t1.mapper.TestMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController // 标注该类为Controller,SpringBoot会自动扫描该类
public class TestController { @Autowired
TestMapper testMapper; //自动注入 @RequestMapping("/test") // 处理请求路径为/test的请求
public Object test(){
List<Bear> bears = testMapper.getAllBears();
return bears;
}
}

重新启动项目访问http://localhost:8080/test我们会收到从数据库查询出来的数据

这时候查看控制台可能会发现一些警告

Thu Jan 14 22:45:15 CST 2021 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

修改application.properties中的数据库连接为如下即可消除警告

spring.datasource.url=jdbc:mysql://localhost:3306/t1?useSSL=false

结束语

本来的出发点是以最简单的方式搭建一个能跑起来的web项目,但是写完了感觉还是有点复杂,但有基础的话还是很好理解的。之后应该还会根据这个demo更新 mvc / 配置 /mybatis 具体的一些细节,也是自己的一次复习,如果有时间的话。

使用SpringBoot搭建Web项目的更多相关文章

  1. springBoot 搭建web项目(前后端分离,附项目源代码地址)

    springBoot 搭建web项目(前后端分离,附项目源代码地址)   概述 该项目包含springBoot-example-ui 和 springBoot-example,分别为前端与后端,前后端 ...

  2. springboot搭建web项目(转)

    转:http://blog.csdn.net/linzhiqiang0316/article/details/52589789 这几天一直在研究IDEA上面怎么搭建一个web-mvc的SpringBo ...

  3. Springboot搭建web项目

    最近因为项目需要接触了springboot,然后被其快速零配置的特点惊呆了.关于springboot相关的介绍我就不赘述了,大家自行百度google. 一.pom配置 首先,建立一个maven项目,修 ...

  4. springboot搭建web项目与使用配置文件

    目录 一.准备工作 二.创建基础web项目 1. maven配置 2.创建maven项目.配置pom.xml为web基础项目 3.编写启动类 4.使用maven打包 5.使用命令java -jar x ...

  5. Spring-Boot快速搭建web项目详细总结

    最近在学习Spring Boot 相关的技术,刚接触就有种相见恨晚的感觉,因为用spring boot进行项目的搭建是在太方便了,我们往往只需要很简单的几步,便可完成一个spring MVC项目的搭建 ...

  6. 使用idea+springboot+Mybatis搭建web项目

    使用idea+springboot+Mybatis搭建web项目 springboot的优势之一就是快速搭建项目,省去了自己导入jar包和配置xml的时间,使用非常方便. 1.创建项目project, ...

  7. Spring Boot搭建Web项目常用功能

    搭建WEB项目过程中,哪些点需要注意: 1.技术选型: 前端:freemarker.vue 后端:spring boot.spring mvc 2.如何包装返回统一结构结果数据? 首先要弄清楚为什么要 ...

  8. 基于springboot的web项目最佳实践

    springboot 可以说是现在做javaweb开发最火的技术,我在基于springboot搭建项目的过程中,踩过不少坑,发现整合框架时并非仅仅引入starter 那么简单. 要做到简单,易用,扩展 ...

  9. 【maven】 在 MyEcplise上使用maven搭建Web项目

    二.在My Ecplise上使用Maven搭建Web项目 1.新建一个maven项目   2.create一个简单的骨架 3.就像在ecplise中一样设置项目的以下配置   4.新创建的项目结构如下 ...

随机推荐

  1. watch监听对象的属性

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. P6772 [NOI2020]美食家

    题目大意 给你一个 \(n\) 个点,\(m\) 条边的有向图,每条边有一个权值 \(w_i\) ,每个节点有一个权值 \(a_i\) . 你从节点 \(1\) 出发,每经过一个节点就可以获得该点的权 ...

  3. EHCACHE实现登录错误次数账号锁定

    使用EHCACHE实现账号密码登录校验失败5次锁定10分钟 <?xml version="1.0" encoding="UTF-8"?> <e ...

  4. 搭建yum仓库服务器

    环境:服务端centos6.9 客户端要求 能上网(可以ping通baidu.com) 1.yum的配置文件信息在/etc/yum.repos.d/下,我们配置的是自己的网络yum源,所以这些文件我们 ...

  5. J20航模遥控器开源项目系列教程(六)亚克力外壳制作

    我们的开源宗旨:自由 协调 开放 合作 共享 拥抱开源,丰富国内开源生态,开展多人运动,欢迎加入我们哈~ 和一群志同道合的人,做自己所热爱的事! 项目开源地址:https://github.com/J ...

  6. MySql字符集与排序规则详解

    前段时间往MySQL中存入emoji表情或生僻字.繁体字时,报错无法添加,研究后发现这是字符集编码的问题,今天就来分析一下各个字符集与排序规则 一.字符集 先说字符,字符是各种文字和符号的总称,包括各 ...

  7. java web简单的增删改查

    1.主要的文件,运行结果,运行界面,数据库创建的表等图片. 所要创建的文件和要导入的包: 主页面: 显示界面: 数据库的信息: 删除.查找.修改就不一 一列出来,自己可以运行看看.哈哈 2.接下来我将 ...

  8. Sql Server 数据把列根据指定的内容拆分数据

    今天由于工作需要,需要把数据把列根据指定的内容拆分数据 其中一条数据实例 select id , XXXX FROM BIZ_PAPER where  id ='4af210ec675927fa016 ...

  9. 关于Java Integer和Long直接比较

    Integer和Long不能直接equals比较会返回False Long.class源码 ` public boolean equals(Object obj) { if (obj instance ...

  10. css进阶 01-CSS中的非布局样式

    01-CSS中的非布局样式 #前言 CSS中,有很多非布局样式,这些样式(属性)和与布局无关,包括: 字体.字重.颜色.大小.行高 背景.边框 滚动.换行 装饰性属性(粗体.斜体.下划线)等. 这篇文 ...