基本配置-toc" style="margin-left:0px;">一、Spring Boot基本配置
(一)入口类和@SpringBootApplication
1.项目入口类 - SpringBootDemoApplication
了解核心注释 - @SpringBootApplication
3、设置exclude属性值,关闭特定的自动配置
(二)创建SpringBoot项目报错
1、https://start.spring.io 初始化错误
2、连接失败 Request failed with status code 403
解决办法1 修改Http Proxy配置
解决办法2 修改项目URL地址
(三)启动项目,查看效果
(4)添加控制器和路由函数
(5)定制关闭Banner
2、通过http://patorjk.com/software/taag网站生成字符
4.启动应用程序
5、关闭Banner
(六)使用Spring Boot配置应用属性文件
1.修改服务器的端口号
2、启动应用
3.启动浏览器,访问http://localhost:8888/welcome
4、采用yaml格式的应用属性
(七)允许使用XML配置Spring
创建用户实体类 - User
2、在resources目录里创建spring-config配置文件
5.启动应用程序,检查结果
6.表格显示用户信息
二、Spring Boot项目访问静态资源
(一)在static里创建images目录,拷贝一张图片
(二)在入口类里访问图片资源
(三)启动应用,查看结果
三、Spring Boot整合Thymeleaf
(一)实现简单登录页面
1、在全局配置文件里配置Thymeleaf属性
2、创建登录控制器LoginController
3、创建模板文件,获取控制器传来的动态数据
4、启动项目,查看结果
四、Spring Boot集成Bootstrap
(一)访问官网
(二)编写登录页面login.html
1、集成Bootstrap
2、编写登录页面
3、启动项目,访问http://localhost:8888/toLogin
4、用户名和密码非空校验
(三)控制器编写登录验证方法
(四)编写登录成功与失败的模板页面
1、编写登录成功页面success.html
2、编写登录失败页面failure.html
(五)启动项目,测试效果
五、Thymeleaf访问模型里的数据
(一)页面访问Model里的实体数据
1、创建个人实体类 - User
2、在登录控制器里添加获取个人信息方法
3、创建显示个人信息的模板页面
4、启动应用,测试效果
一、Spring Boot基本配置
(一)入口类与@SpringBootApplication
利用Spring Initializr
创建Spring Boot
项目
项目基本信息配置
添加依赖
全部依赖
设置项目名及保存位置
1、项目入口类 - SpringBootDemoApplication
- 包含一个主方法作为入口类的入口方法
- 利用SpringApplication类的静态方法
run()
启动入口类实例,可以接收命令行参数
2、了解核心注解 - @SpringBootApplication
- @SpringBootApplication是Spring Boot的核心注解,是一个组合注解。
3、设置exclude属性值,关闭特定的自动配置
-
关闭数据源自动配置
(二)创建SpringBoot项目报错
1、https://start.spring.io 初始化错误
2、连接失败 Request failed with status code 403
解决办法1 修改Http Proxy配置
成功
解决办法2 修改项目URL地址
将https://start.spring.io/ 改为 http://start.spring.io/
成功
(三)启动项目,查看效果
必须暂时关闭数据源自动配置(因为目前尚未配置数据源,不关闭数据源自动配置,运行程序要报错)
运行时如果报错jdk发行版本无效,是因为jdk版本不一致导致的,可自行检查setting设置
(四)添加控制器与路由函数
-
直接在入口类上面添加
@Controller
注解,然后定义路由函数index()
package net.ydl.boot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.sql.DataSource;
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})// 不采用数据源自动配置
@Controller
public class SpringBootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootDemoApplication.class, args);
}
@RequestMapping("/")
@ResponseBody
public String index() {
return "<h3>Welcome to Spring Boot World~</h3>";
}
}
启动项目,访问http://localhost:8080
如果出现无法访问的错误
双击tomcat\bin目录下的startup.bat,关闭服务
解决办法选择一致的JDK版本
添加路由函数welcome()
,通过model
参数向前端模板页面传递数据
@GetMapping("/welcome")
public String welcome(Model model) {
//通过model向模板页面传递数据
model.addAttribute("message","Dear Friends, Welcome to Spring Boot World~");
return "welcome"; //逻辑视图名
}
在templates
里创建welcome.html
,跟路由函数welcome()
里的逻辑视图名welcome
相对应,其中<span>
元素的内容是静态数据,客户端打开页面看到的数据
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org/">
<head>
<meta charset="UTF-8">
<title>Welcome</title>
<head>
<body>
<h3><span th:text="${message}">亲爱的朋友,欢迎访问Spring Boot世界~</span></h3>
</body>
</html>
运行welcome.html文件
启动welcome.html
项目 ,看到后端控制器通过model
传递过来的数据
(五)定制关闭Banner
1、在resources目录下创建banner.txt文件
2、通过http://patorjk.com/software/taag网站生成字符
3、将网站生成的字符复制到banner.txt文件里
4、启动应用程序
5、关闭Banner
- 修改入口程序代码
启动应用,项目启动图案消失
注释掉设置旗帜模式语句,恢复启动图案
(六)使用Spring Boot的应用属性文件进行配置
1、修改服务器的端口号
在application.properties文件里修改端口号为8888
2、启动应用
服务器端口已改为四个8
3、启动浏览器,访问http://localhost:8888/welcome
4、采用yaml格式的应用属性
将application.properties重命名为application.yaml
(七)允许使用XML配置Spring
1、创建用户实体类 - User
创建net.ydl.boot.bean包,并创建User类
package net.ydl.boot.bean;
import java.util.Date;
public class User {
private int id;
private String username;
private String password;
private String telephone;
private Date registerTime;
private int popedom;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public Date getRegisterTime() {
return registerTime;
}
public void setRegisterTime(Date registerTime) {
this.registerTime = registerTime;
}
public int getPopedom() {
return popedom;
}
public void setPopedom(int popedom) {
this.popedom = popedom;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", telephone='" + telephone + '\'' +
", registerTime=" + registerTime +
", popedom=" + popedom +
'}';
}
}
2、在resources目录里创建spring-config配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="sdf" class="java.text.SimpleDateFormat">
<constructor-arg value="yyyy-MM-dd hh:mm:ss"/>
</bean>
<bean id="date" factory-bean="sdf" factory-method="parse">
<constructor-arg value="2021-12-25 09:30:30"/>
</bean>
<bean id="user" class="net.ydl.boot.bean.User">
<property name="id" value="2022001"/>
<property name="username" value="Mike"/>
<property name="password" value="903213"/>
<property name="telephone" value="18934563800"/>
<property name="registerTime" ref="date"/>
<property name="popedom" value="1" />
</bean>
</beans>
在SpringBootDemoApplication.java文件中添加 @ImportResource("classpath:spring-config.xml")
4、使用Spring配置文件里创建的Bean
5、启动应用,查看结果
- 访问
http://localhost:8888
6、表格形式显示用户信息
在welcome.html
页面以表格形式显示用户信息
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org/">
<head>
<meta charset="UTF-8">
<title>Welcome</title>
<head>
<body>
<table border="1" align="center" cellpadding="20" cellspacing="0">
<tr th:bgcolor="grey">
<th>编号</th>
<th>姓名</th>
<th>密码</th>
<th>手机</th>
<th>注册时间</th>
<th>权限</th>
</tr>
<tr>
<td>2022001</td>
<td>Mike</td>
<td>903213</td>
<td>18934563800</td>
<td>2021-12-25 09:30:30</td>
<td align="center">1</td>
</tr>
</table>
</body>
</html>
二、Spring Boot项目访问静态资源
- 静态资源(css、images、scripts)都放在
resources\static
目录里。下面以访问图片为例说明静态资源的访问。
(一)在static里创建images目录,拷贝一张图片
(二)在入口类里访问图片资源
- 修改路由函数
index()
,访问图片资源
@ResponseBody
public String index() {
return "<h3>Dear " + user.getUsername() + ",Welcome to Spring Boot World~</h3>" + user
+ "<br><img src='images/bear.png'>";
}
(三)启动应用,查看结果
- 访问
http://localhost:8888
三、Spring Boot整合Thymeleaf
(一)实现简单登录页面
1、在全局配置文件里配置Thymeleaf属性
thymeleaf: #配置百里香叶模板
cache: false #默认的是true,开发阶段设置为false
edcoding: utf-8 #避免中文乱码
mode: HTML5 #可以使用HTML4.0.1
prefix: classpath:/templates/ #模板位置可以修改的
suffix: .html #扩展名可修改
2、创建登录控制器LoginController
- 在net.ydl.boot包里创建controller子包,在controller子包里创建LoginController控制器
package net.ydl.boot.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.Calendar;
@Controller
public class LoginController {
@GetMapping("/toLogin")
public String toLogin(Model model) {
//通过model像前端传送逻辑数据
model.addAttribute("currentYear", Calendar.getInstance().get(Calendar.YEAR));
return "login";
}
}
3、创建模板文件,获取控制器传来的动态数据
- 在templates目录下创建模板文件login.html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org/">
<head>
<meta charset="UTF-8">
<title>用户登录</title>
</head>
<body>
<span th:text="${currentYear}">今年</span> -
<span th:text="${currentYear} + 1">明年</span>
</body>
</html>
静态访问模板文件,将显示默认值
4、启动项目,查看结果
访问http://localhost:8888/toLogin
- 登录页面显示用户信息,查看运行效果
package net.ydl.boot.controller;
import net.ydl.boot.bean.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.Calendar;
@Controller
public class LoginController {
@GetMapping("/toLogin")
public String toLogin(Model model) {
//通过model像前端传送逻辑数据
model.addAttribute("currentYear", Calendar.getInstance().get(Calendar.YEAR));
//创建用户对象
User user = new User();
//设置用户对象属性
user.setId(2020122);
user.setUsername("萌萌哒");
user.setPassword("123456");
user.setTelephone("18455524562");
user.setRegisterTime(Calendar.getInstance().getTime());
user.setPopedom(1);
model.addAttribute("user",user);
return "login";//逻辑视图名
}
}
四、Spring Boot集成Bootstrap
(一)访问官网
下载 ·Bootstrap v5.2 (getbootstrap.com)
下载
解压
给文件夹重命名
将bootstrap-4.0.0目录拷贝项目的static目录
(二)编写登录页面login.html
1、集成Bootstrap
<javascript>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>用户登录</title>
<link th:href="@{bootstrap-5.2.0/css/bootstrap.css}" rel="stylesheet">
<javascript th:src="@{bootstrap-5.2.0/js/bootstrap.bundle.js}"></javascript>
<javascript th:src="@{bootstrap-5.2.0/js/bootstrap.js}"></javascript>
<javascript th:src="@{/scripts/jquery.min.js}"></javascript>
</javascript>
2、编写登录页面
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org/">
<javascript>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>用户登录</title>
<link th:href="@{bootstrap-5.2.0/css/bootstrap.css}" rel="stylesheet">
<javascript th:src="@{bootstrap-5.2.0/js/bootstrap.bundle.js}"></javascript>
<javascript th:src="@{bootstrap-5.2.0/js/bootstrap.js}"></javascript>
<javascript th:src="@{/scripts/jquery.min.js}"></javascript>
</javascript>
</head>
<body>
<div class="col-6 m-auto" style="margin-top:30px!important;">
<div class="text-center">
<span th:text="${currentYear}">今年</span> -
<span th:text="${currentYear} + 1">明年</span>
</div>
<div class="border border-info bg-light p-2" style="border-radius: 5px">
<form action="/login" method="post">
<h3 class="text-center">用户登录</h3>
<div class="mt-1">
<input type="text" id="username" name="username" class="form-control" placeholder="输入用户名" autofocus>
</div>
<div class="mt-1">
<input type="password" id="password" name="password" class="form-control" placeholder="输入密码">
</div>
<div class="checkbox text-center" style="height: 50px;position: relative">
<label style="position: absolute; top: 20%; button: 20%; margin-left: -10%">
<input class="form-check-input text-center" type="checkbox">记住我
</label>
</div>
<div class="d-grid">
<button class="btn btn-lg btn-primary btn-block" id="login" type="submit">登录</button>
</div>
</form>
</div>
</div>
</body>
</html>
3、启动项目,访问http://localhost:8888/toLogin
4、用户名和密码非空校验
(三)控制器编写登录验证方法
@PostMapping("/login")
public String login(HttpServletRequest request, Model model) {
// 获取表单提交的用户名与密码
String username = request.getParameter("username");
String password = request.getParameter("password");
// 判断用户是否登录成功(假设合法用户名为howard,密码为903213)
if (username.equals("howard") && password.equals("903213")) {
model.addAttribute("loginMsg", "恭喜,用户登录成功~");
return "success";
} else {
model.addAttribute("loginMsg", "遗憾,用户登录失败~");
return "failure";
}
}
(四)编写登录成功与失败的模板页面
1、编写登录成功页面success.html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org/">
<head>
<meta charset="UTF-8">
<title>登录成功</title>
<link th:href="@{/bootstrap-4.0.0/css/bootstrap.css}" rel="stylesheet">
<javascript th:src="@{/bootstrap-4.0.0/js/jquery-3.4.1.min.js}"></javascript>
<javascript th:src="@{/bootstrap-4.0.0/js/bootstrap.bundle.js}"></javascript>
<javascript th:src="@{/bootstrap-4.0.0/js/bootstrap.js}"></javascript>
</head>
<body>
<div class="col-6 text-center m-auto border-info border p-3 bg-light" style="margin-top:50px!important;">
<p th:text="${loginMsg}" class="text-success"></p>
</div>
</body>
</html>
2、编写登录失败页面failure.html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org/">
<head>
<meta charset="UTF-8">
<title>登录失败</title>
<link th:href="@{/bootstrap-4.0.0/css/bootstrap.css}" rel="stylesheet">
<javascript th:src="@{/bootstrap-4.0.0/js/jquery-3.4.1.min.js}"></javascript>
<javascript th:src="@{/bootstrap-4.0.0/js/bootstrap.bundle.js}"></javascript>
<javascript th:src="@{/bootstrap-4.0.0/js/bootstrap.js}"></javascript>
</head>
<body>
<div class="col-6 text-center m-auto border-warning border p-3 bg-light" style="margin-top:50px!important;">
<p th:text="${loginMsg}" class="text-danger"></p>
</div>
</body>
</html>
(五)启动项目,测试效果
-
启动项目后,在浏览器里访问
http://localhost:8888/toLogin
- 输入错误的用户信息
五、Thymeleaf访问模型里的数据
(一)页面访问Model里的实体数据
1、创建个人实体类 - User
package net.ydl.boot.bean;
import java.util.Date;
public class User {
private int id;
private String username;
private String password;
private String telephone;
private Date registerTime;
private int popedom;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public Date getRegisterTime() {
return registerTime;
}
public void setRegisterTime(Date registerTime) {
this.registerTime = registerTime;
}
public int getPopedom() {
return popedom;
}
public void setPopedom(int popedom) {
this.popedom = popedom;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", telephone='" + telephone + '\'' +
", registerTime=" + registerTime +
", popedom=" + popedom +
'}';
}
}
2、在登录控制器里添加获取个人信息方法
@GetMapping("/toLogin")
public String toLogin(Model model) {
//通过model像前端传送逻辑数据
model.addAttribute("currentYear", Calendar.getInstance().get(Calendar.YEAR));
//创建用户对象
User user = new User();
//设置用户对象属性
user.setId(2020122);
user.setUsername("萌萌哒");
user.setPassword("123456");
user.setTelephone("18455524562");
user.setRegisterTime(Calendar.getInstance().getTime());
user.setPopedom(1);
model.addAttribute("user",user);
return "login";//逻辑视图名
}
3、创建显示个人信息的模板页面
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org/">
<head>
<meta charset="UTF-8">
<title>Welcome</title>
<head>
<body>
<h3><span th:text="${message}">亲爱的朋友,欢迎访问Spring Boot世界~</span></h3>
<table border="1" align="center" cellpadding="20" cellspacing="0">
<tr th:bgcolor="grey">
<th>编号</th>
<th>姓名</th>
<th>密码</th>
<th>手机</th>
<th>注册时间</th>
<th>权限</th>
</tr>
<tr>
<td>2022001</td>
<td>Mike</td>
<td>903213</td>
<td>18934563800</td>
<td>2021-12-25 09:30:30</td>
<td align="center">1</td>
</tr>
</table>
</body>
</html>
4、启动应用,测试效果
访问 http://localhost:8888/getPersonhttp://localhost:8080/getPerson