Spring Boot 搭建Web项目
目录
- 版本及环境
- Maven配置
- 数据库的连接
- 静态资源的访问
版本及环境
项目 | 版本 | 描述or选用原因 | 是否必须 |
---|---|---|---|
JDK | 1.8 | 1.8版本经久不衰,可SpringBoot4不支持 | yes |
Maven | 3.8.3 | 一个项目构建和包管理工具,构建SpringBoot需要3.5+ | yes |
springBoot | 2.4.13 | 网上的教程和对应问题的解决办法较多,兼容1.6 | yes |
mybatis | 3.4.0 | 一个功能强大的数据持久框架,支持动态sql,结果集映射 和存储过程的好东西 | yes |
thymeleaf | 2.4.13 | Thymeleaf是一款用于渲染XML/HTML5内容的模板引擎 | yes |
maven配置文件
点击查看代码
<?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>
<packaging>jar</packaging>
<groupId>org.example</groupId>
<artifactId>myBlog</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.13</version>
</parent>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.yml</include>
<include>**/*</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
<dependencies>
<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.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
</dependencies>
<description/>
<developers>
<developer/>
</developers>
<licenses>
<license/>
</licenses>
<scm>
<url/>
</scm>
<url/>
</project>
资源过滤的配置是必选的,否则会出现Mybatis Sqlsession注入失败的错误 以及application.yml文件无法导出、静态资源无法导出、页面访问404、数据库无法连接、mapper无法映射等问题
项目目录结构
cat中的目录结构
resources目录结构
总目录结构
目录说明
目录 | 说明 |
---|---|
resources | 用于存放配置文件和网页资源文件 |
mapper | mybatis的mapper.xml存放位置 |
static | 用于存放静态资源,如css,js,html等,springboot的默认静态目录的命名 |
templates | 用于存放视图,比如html或者jsp等 |
controller | 控制层 |
entity | 存放pojo |
mapper | mybatis的dao层接口和mapper.xml文件存放地 |
文件说明:application.yml是springboot配置文件,用于写一些配置,比如mybatis,数据源,模板引擎的配置
项目搭建:
idea创建普通项目和编写maven配置文件已经完成,application.yml文件的编写
点击查看代码
server:
port: 8080
spring:
datasource:
username: root
password:
url: jdbc:mysql://localhost:3306/catblog?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
mapper-locations: classspath:mapper/*.xml
type-aliases-package: com.example.cat.home.entity
pagehelper:
helper-dialect: mysql
reasonable: true
support-methods-arguments: true
params: count=countSql
thymeleaf:
cache: false
freemarker:
cache: false
devtools:
restart:
enabled: true
additional-paths: src/main/java
exclude: static/**
点击查看代码
package com.example.cat.mapper;
import com.example.cat.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
@Mapper
public interface UserMapper {
List<User> AD();
}
@Repository和@Mapper注解是二选一的,但必须选择一个,否则无法自动装配sqlsession,在springboot启动类中要加入注解@MapperScan("com.example.cat.mapper"),这个注解用于扫描mapper的所在的包,告诉spring那些mapper是需要自动装配的。
Controller的编写 只需要注解@Controller注解在类上便可以把类变成Controller类,需要返回json,则要用RestController注解,该注解是两个注解的合并,这两个注解分别是@ResponseBody和@Controller。 为方便测试,在主类加上@RestController,并测试数据库是否搭建成功 测试代码: ``点击查看代码
package com.example;
import com.example.cat.entity.User;
import com.example.cat.mapper.UserMapper;
import com.google.gson.Gson;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@RestController
@SpringBootApplication
@MapperScan("com.example.cat.mapper")
public class MyApplication {
UserMapper userMapper ;
@Autowired
public void setUserMapper(UserMapper userMapper) {
this.userMapper = userMapper;
}
@RequestMapping("/")
List<User> SS (){
Gson gson = new Gson();
System.out.println(gson.toJson(userMapper.AD()));
return userMapper.AD();
}
public static void main(String[] args) {
SpringApplication.run(MyApplication.class,args);
}
}
运行结果:
控制台
浏览器返回
dao层对应的代码
UserMapper
点击查看代码
package com.example.cat.mapper;
import com.example.cat.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
public interface UserMapper {
List<User> AD();
}
点击查看代码
<?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">
<!--第 1 步绑定 mapper接口全类名-->
<mapper namespace="com.example.cat.mapper.UserMapper">
<!-- 'id' 就是mapper接口里面的方法名 'resultType' 返回类型(也要是全类名) -->
<select id="AD" resultType="com.example.cat.entity.User">
SELECT * FROM c_user
</select>
</mapper>
数据库表
对应表的javaBean
点击查看代码
public class User {
Integer id;
String UserName;
String UserPsw;
String UserPhone;
public User() {
}
public User(Integer id, String userName, String userPsw, String userPhone) {
this.id = id;
UserName = userName;
UserPsw = userPsw;
UserPhone = userPhone;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return UserName;
}
public void setUserName(String userName) {
UserName = userName;
}
public String getUserPsw() {
return UserPsw;
}
public void setUserPsw(String userPsw) {
UserPsw = userPsw;
}
public String getUserPhone() {
return UserPhone;
}
public void setUserPhone(String userPhone) {
UserPhone = userPhone;
}
}
静态资源的访问
需要直接通过浏览器访问而不走Controller。需要把静态资源放在static目录下,访问时候的路径为/CatCC.html 带目录为/js/ada.js