网站后台搭建--springboot项目是如何创建的
在创建项目之前先说一下ide的问题,从学习软件开始一直到一个月之前,开发用的IDE都是Eclipse,对,就是这个远古时代的开发工具,在使用过程中虽然总是遇到各种bug,但内心里还是存在着一丝理解的想法的,因为自己写的代码也会存在很多bug,有些甚至很低端,所以开发工具存在问题也是有情可原的。而且还免费,还要什么自行车呢?但是最近工作中发现同事里大部分都在用Idea,虽然只是开发工具的不同而已,不过在具体使用的过程中还是存在很多问题的,比如:由于开发工具的验证方式不同,很多在Eclipse中写的代码没有问题,但是到了Idea中就会出现检查异常,最简单的例子,在eclipse中的这段代码就是没有问题的,但是到了Idea中就会存在问题。
所以为了工作顺利,果断跳入Idea的坑。因此,这里的项目开发工具也是Idea,下面进入正题。
之前说过,这个项目使用Springboot框架整合Mybatis,数据库使用mysql,是一个典型的springboot项目。除了典型的mysql、mybatis、web等依赖之外还加了lombok这个依赖,很实用。

一路下一步直到项目创建完成。完成之后打开pom文件,添加数据库连接池驱动,这里实用阿里的druid连接池。代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.hatten</groupId>
<artifactId>hihi-video</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>hihi-Video</name>
<description>a video website like bilibili</description> <properties>
<java.version>1.8</java.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>
这里需要注意:依赖文件的版本一定要合适,尤其是MySQL数据库版本、druid、mybaits、jdbc的版本一定要合适,自己当时创建项目的时候就因为版本的问题,搞了好长时间。所以项目创建完成之后一定要及时做测试,发现问题及时解决。
准备工作完成,可以着手写代码了。
第一步:创建Application启动类,这也是SpringBoot相比于传统的Spring框架的优势,直接一个main方法启动,不需要再配置Tomcat了,因为springboot内集成了一个Tomcat,所以也就不会出现之前的写了代码没编译、即使编译了也没部署Tomcat直接走缓存的情况。
package com.hatten.hihivideo; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan("com.hatten.hihivideo.dao")
@SpringBootApplication
public class HiHiVideoApplication {
public static void main(String[] args) {
SpringApplication.run(HiHiVideoApplication.class, args);
}
}
这是一个典型的springboot整合mybatis的启动类,其中@SpringBootApplication注解是在springboot2.0中出现的注解,表示这是一个启动类也是一个配置类。@MapperScan包扫描注解,功能相当于配置文件中的包扫描,用于标注mapper或者称为dao接口的包路径,可以配置多个,需要用“,”隔开。也可以不适用这个注解,但需要在每一个dao接口上加一个@Mapper注解,表示这是一个交给Spring管理的Bean,这里为了省事直接用包扫描。
第二步:在java下创建controller、service、dao、entity、utils几个包,分别用于存放*Controller类、*Service类、*Dao接口、实体类、工具类。在resources下新建mapper目录,用于存放*Dao.xml文件,目录结构如下:

这里需要注意:Application启动类一定要放在最外层目录,这样整个项目才能启动起来。
第三步:编辑application.properties文件,这是springboot项目中唯一的配置文件,所有的配置都会放在这个文件中,当然如果配置日志或者其他功能也可以通过添加相应的配置文件的方式实现。application也可以通过yml文件的形式配置,只是形式上的不同,每有太大差别。配置文件如下:
server.port=8080
server.servlet.context-path=/
#配置数据源
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/hihi_video?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT
spring.datasource.username=root
spring.datasource.password=root
#配置静态资源存放路径
spring.resources.static-locations=classpath:/static/
#配置mapper.xml文件路径
mybatis.mapper-locations=classpath:/mapper/*.xml
#下划线对应驼峰规则
mybatis.configuration.map-underscore-to-camel-case=true
在这个阶段需要配置的东西不是很多,主要配置Tomcat端口号、访问路径,数据源,mapper文件路径,静态资源路径即可,也可以配置mybatis的下划线驼峰对应规则,用于将数据库中的字段名和实体类中的属性名一一对应。
第四步:创建测试类,包括(测试Controller、测试Service、测试Dao、测试实体类、测试mapper.xml文件、测试html文件),分别测试页面跳转和数据传递功能。代码如下:
①Controller类:
package com.hatten.hihivideo.controller; import com.hatten.hihivideo.entity.vo.SysResultVo;
import com.hatten.hihivideo.service.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; @Controller
@RequestMapping("/test")
public class TestController {
@Autowired
private TestService testService; /**
* 测试页面跳转
* @return
*/
@RequestMapping("/page")
public String pageTest(){
return "/page/page-test.html";
} /**
* 测试数据传输
* @return
*/
@RequestMapping("/get/json")
@ResponseBody
public SysResultVo getJsonResult(){
return SysResultVo.ok(testService.getJsonResult());
}
}
②Service类:
package com.hatten.hihivideo.service; import com.hatten.hihivideo.dao.TestDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import java.util.List; @Service
public class TestService {
@Autowired
private TestDao testDao; public List getJsonResult(){
List demos=testDao.getJsonResult();
return demos;
}
}
③Dao接口:
package com.hatten.hihivideo.dao; import org.springframework.stereotype.Component; import java.util.List;
@Component
public interface TestDao {
List getJsonResult();
}
④mapper.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.hatten.hihivideo.dao.TestDao">
<select id="getJsonResult" resultType="com.hatten.hihivideo.entity.HiHiDemo">
select * from hihi_demo
</select>
</mapper>
⑤实体类:
package com.hatten.hihivideo.entity; import lombok.Data;
import lombok.experimental.Accessors; import java.io.Serializable; @Data //省略无参构造、get、set方法
@Accessors(chain = true) //链式结构
public class HiHiDemo implements Serializable {
private Integer demoId;
private String demoName;
private String demoDesc;
}
在这里可以看到引入lambok的优势,不用在写大段的get和set方法,而且能使用链式结构,让代码十分简洁。
⑥html文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Page-Test</title>
</head>
<body>
<h1>Page-Test</h1>
<p>This is a page-test-html</p>
</body>
</html>
第五步:到这里就可以开始测试了,启动application类,在浏览器输入相应地址进行测试,测试结果如下:

启动成功!!!!!!!

页面正常访问!!!!!!!!!!!!

数据传输正常!!!!!!!!!!!!!!!!!!!!!!!!!
对了,应该还需要验证一下数据库中的数据是什么样的才对:

数据也没有问题,项目环境搭建成功!!!!之后就可以着手开发了。。。。这才刚刚是个开始,而已。
============================分割线,以下有知识点=====================================
关于代码中的SysResult类,它的作用就是向前端页面传递数据,对数据进行一次封装,并加入一些状态信息或者消息,方便前后端交互用的。在实际开发过程中每个公司应该都会使用自己公司的代码,我的代码是这样的,可以当做参考:
package com.hatten.hihivideo.entity.vo;
import java.io.Serializable;
public class SysResultVo implements Serializable {
private static final long serialVersionUID = -7368493786259905794L;
/**
* 状态码
*/
private int state = 1;//1-OK,0-Error
/**
* 状态码对应的消息
*/
private String message = "OK";
/**
* 要呈现到客户端的数据
*/
private Object data;
public SysResultVo() {
}
public SysResultVo(String message) {
this.message = message;
}
public SysResultVo(Object data) {
this.data = data;
}
public SysResultVo(Throwable e) {
this.state = 0;
this.message = e.getMessage();
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
/**
* 静态方法,用于返回正确数据
* @param data
* @return
*/
public static SysResultVo ok(Object data){
return new SysResultVo(data);
}
/**
* 静态方法,用于返回错误信息
* @param msg
* @return
*/
public static SysResultVo fail(String msg){
SysResultVo result=new SysResultVo();
result.setState(0);
result.setMessage(msg);
return result;
}
}
=======================代码已更新至GitHub,并持续更新==========================
https://github.com/Mysterious-gt/HiHi-Video.git
网站后台搭建--springboot项目是如何创建的的更多相关文章
- idea:spring initializr无web勾选,maven方式搭建springboot项目。jdk7创建springboot项目的版本不兼容问题。
一.idea 使用spring initializr不选择web搭建springboot项目 1.file => new => project 2.直接next到finish结束. 3.完 ...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-1.快速搭建SpringBoot项目,采用Eclipse
笔记 1.快速搭建SpringBoot项目,采用Eclipse 简介:使用SpringBoot start在线生成项目基本框架并导入到eclipse中 1.站点地址:http://start. ...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-2.快速搭建SpringBoot项目,采用IDEA
笔记 2.快速搭建SpringBoot项目,采用IDEA 简介:使用SpringBoot start在线生成项目基本框架并导入到IDEA中 参考资料: IDEA使用文档 ...
- linux下后台启动springboot项目
linux下后台启动springboot项目 我们知道启动springboot的项目有三种方式: 运行主方法启动 使用命令 mvn spring-boot:run”在命令行启动该应用 运行“mvn p ...
- 在线官网Spring Initializr 或 IntelliJ IDEA 快速搭建springboot项目
Spring Boot是由Pivotal团队提供的全新框架,设计目的是用来简化新Spring应用的初始搭建以及开发过程.它主要推崇的是'消灭配置’,实现零配置. 那么,如何快速新建一个一个spring ...
- springboot:基础学习一 linux下后台启动springboot项目
我们知道启动springboot的项目有三种方式: 运行主方法启动 使用命令 mvn spring-boot:run”在命令行启动该应用 运行“mvn package”进行打包时,会打包成一个可以直接 ...
- SpringBoot从入门到精通一(idea优雅搭建SpringBoot项目)
前言 在没有SpringBoot之前,我们搭建的是SSM(SpingMVC+Spring+Mybatis)项目,在搭建SSM项目的时候,我们要经过一系列的繁琐配置,例如:application,web ...
- linux下后台启动springboot项目(转载)
我们知道启动springboot的项目有三种方式: 运行主方法启动 使用命令 mvn spring-boot:run”在命令行启动该应用 运行“mvn package”进行打包时,会打包成一个可以直接 ...
- 使用IDEA快速搭建Springboot项目
Spring Boot是由Pivotal团队提供的全新框架,设计目的是用来简化新Spring应用的初始搭建以及开发过程.它主要推崇的是'消灭配置’,实现零配置. 下面就介绍一下如何使用idea快速搭建 ...
随机推荐
- windows任务栏IDEA图标变白色快速解决方法
方案1:同时按Windows键+R键打开运行对话框,输入ie4uinit.exe -show然后回车即可修复. 方案2:打开计算机(Win7),此电脑(Win10)或任意文件夹,然后在地址栏输入cmd ...
- Android学习(四)
教材学习内容总结 图形和定制视图 硬件加速 Android APILevel14及其以上版本为目标的应用程序来说,硬件加速是默认可用的. 可通过android:hardwareAccelerated= ...
- vue项目运行
共分为以下六步: 1.安装node.js2.安装cnpm3.安装vue-cli脚手架构建工具4.用vue-cli构建项目5.安装项目所需的依赖6.运行项目 第1步:从node.js官网下载node.j ...
- oracle 关于房贷计算过程
create or replace procedure fd(p_bj in number, --贷款本金 p_nll in number, --年利率 p_ns in number, --贷款年数 ...
- Django 中文和时区设置
Django 语言和时区的设置都在 settings.py 文件中. 中文设置 LANGUAGE_CODE:设置语言,英语 en-us,中文简体 zh-Hans,中文繁体 zh-Hant 在 MIDD ...
- 运用SharedPreferences“偷取”输入的信息
运用SharedPreferences"偷取"输入的信息 本次的任务是 利用SharedPreferences来完成信息的保存和读取 就是你输入什么 手机就可以把输入的内容&quo ...
- 82、iOS 基本算法
“冒泡排序.选择排序.快速排序.归并排序.逆序.二分查找.求两个整数的最大公约数和最小公倍数.” 一.冒泡排序 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素作同样的 ...
- uni-app 顶部导航点击更换图标
更换顶部导航的iconfont.ttf图标,先在配置文件配置好按钮: pages.json文件 "buttons": [ { "text": "\ue ...
- 在java中,事务是什么?
一.什么是Java事务通常的观念认为,事务仅与数据库相关.事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性(isolat ...
- ruby module extend self vs module_funciton
最近学习ruby过程中,extend self 跟 module_function 傻傻分不清楚,查资料后明白之间的差别,虽记录之,原文地址 github module A extend self d ...