springboot学习笔记2:搭建web项目
分类:
IT文章
•
2025-01-08 09:03:50
再springboot学习期间,使用架构的方式搭建项目,项目创建方式参考重识maven
创建工程及子工程,并添加层级依赖,项目结构如下:

common:工具类;mapper:持久层;service:业务层;web:控制层;model:实体类
然后父工程添加依赖:
<?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>
<groupId>com.zs.springboot</groupId>
<artifactId>springboot817</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>model</module>
<module>service</module>
<module>mapper</module>
<module>web</module>
<module>common</module>
</modules>
<dependencyManagement>
<dependencies>
<!-- 将springboot-parent以jar包的形式导入进来,声明类型为pom文件-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.22.RELEASE</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.5.22.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.45</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>1.5.22.RELEASE</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
父级pom
然后给各个子工程添加层级依赖,mapper依赖model,service依赖mapper,common,controller依赖service。
因为controller,service,都是以来mapper的,因此将jar都放入mapper模块就可以,根据层级依赖的关系,controller,service也能使用jar包。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<type>pom</type>
</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>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.zs.springboot</groupId>
<artifactId>model</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
View Code
springboot配置mvc
在之前使用ssm框架时,配置文件都是使用xml文件编辑的,但是springboot的宗旨是干掉xml文件,使用java类来配置,如何使用呢?
首先看下之前我们的xml配置:
<mvc:annotation-driven>
<mvc:message-converters>
<!--配置编码字符集-->
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg name="defaultCharset" value="utf-8"/>
</bean>
<!--格式化json-->
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="prettyPrint" value="true"/>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
上面的内容使用java配置如下:
/**
* 声明这是一个配置文件
*/
@SpringBootConfiguration
public class SpringMvcConfig {
/**
* 配置编码字符集为utf-8,@Bean相当于xml文件中的bean标签
* @Bean("aaa")就像当于标签的id为aaa
* @return
*/
@Bean
public StringHttpMessageConverter stringHttpMessageConverter() {
StringHttpMessageConverter converter = new StringHttpMessageConverter(Charset.forName("utf-8"));
return converter;
}
/**
* Json数据格式化
* @return
*/
@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setPrettyPrint(true);
return converter;
}
}
效果:

火狐浏览器请查看原始数据,因为火狐浏览器会自动将json数据格式化
通过mapper.xml的形式实现mapper接口
需要在application.properties中进行配置:
#起别名,也可以不配置
mybatis.type-aliases-package=com.zs.springboot.model
#配置xml文件路径
mybatis.mapper-locations=classpath:mapper/*.xml
配置mapper扫描器:
1.接口上添加@Mapper注解,但是如果接口多的话,每个接口都要添加
2.直接在入口类上添加mapper扫描器:

使用Thymeleaf写页面
在springboot官网中,明确表示如果使用springboot作为架构的话,默认不支持jsp,如果非要使用jsp可以手动加载配置实现jsp。
springboot默认支持Thymeleaf模板,这个模板也是java写的,使用非常方便,相当于jsp
注意:1.使用thymeleaf模板的话,在开发阶段需要关闭缓存
#配置thymeleaf关闭缓存
spring.thymeleaf.cache=false
2.添加依赖:springboot已经完整把thymeleaf集成进框架中了,可以直接添加使用不需要任何的配置信息
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>1.5.22.RELEASE</version>
</dependency>
3.在之前使用jsp,需要在mvc配置文件中配置视图解析器,添加前缀后缀等, 在使用thymeleaf模板的html页面的情况下,默认在resources(相当于classpath)下的templates文件夹中进行加载,不需要配置
4.如果使用thymeleaf需要更换html的头部信息:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">
5.thymeleaf是一个非常严谨的模板,和普通的html不一样,需要严格按照html的标准来实现:不能出现未闭合标签,如果不按照html的标准会报错
如果非要不遵循标准来也可以,需要在application.properties中配置: spring.thymeleaf.mode=LEGACYHTML5 导入jar包:
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.21</version>
</dependency>
下面写thymeleaf使用例子:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">
<head>
<meta charset="UTF-8"/>
<title>Title</title>
</head>
<body>
<table border="1px solid black">
<thead>
<tr>
<th>编号</th>
<th>图书名</th>
<th>价格</th>
<th>类别</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr th:each="book : ${books}">
<td th:text="${book.id}"></td>
<td th:text="${book.title}"></td>
<td th:text="${book.price}"></td>
<td th:text="${book.cateId}"></td>
<td>
<a href="">修改</a>
<a href="">删除</a>
</td>
</tr>
</tbody>
</table>
</body>
</html>
th:each就相当于是jstl的c:forEach标签