1. SpringBoot介绍
(1) 什么是Spring Boot?
![b2b4869ffb1b2d2a40d1cd6a07689a88.png](https://i-blog.csdnimg.cn/blog_migrate/28183dbd75c797c735a06857f68b034e.png)
(2) Spring Boot有哪些特点?
Spring Boot 设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。
嵌入的 Tomcat,无需部署 WAR 文件
Spring Boot 并不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方式。
![072b8c3230aff0b223559d6908dd8c86.png](https://i-blog.csdnimg.cn/blog_migrate/9f141a738b98bd89d0dddf459b8a3ae1.png)
2. 构建SpringBoot项目以及启动器讲解
(1) Spring Boot常见的启动器有哪些?
所谓的SpringBoot启动器其实就是一些jar包的集合。SpringBoot一共提供44启动器。
spring-boot-starter-web 支持全栈式的web开发,包括了tomcat和springMVC等jar
Spring-boot-starter-jdbc 支持spring以jdbc方式操作数据的jar包的集合。
Spring-boot-starter-redis 支持redis键值存储的数据库操作。
(2) Spring Boot的Web启动器的坐标是什么?
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
3. 编写HelloWorld
(1) 如何编写Spring Boot启动类?
package com.bjsxt;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* SpringBoot 启动类
* @author MSI-PC
*
*/
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
(2) 编写Spring Boot启动类时需要注意什么?
启动器存放的位置,启动器可以和controller位于同一个包下,或者位于controller的上一级包中,但是不能放到controller平行的包及子包下。即启动器只能位于Controller所在包及其上级包中。
4. Spring Boot整合Servlet
(1) Spring Boot整合Servlet有几种方式?
通过注解扫描完成Servlet组件的注册
通过方法完成Servlet组件的注册
(2) 各种方式有什么特点?
通过注解扫描完成Servlet组件的注册
Servlet
package com.bjsxt.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* SpringBoot整合Servlet方式一
* @author MSI-PC
*
*/
@WebServlet(name="FirstServlet",urlPatterns="/first")
public class FirstServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("FirstServlet.........................");
}
}
App启动类
package com.bjsxt;
import javax.servlet.annotation.WebServlet;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
/**
* SpringBoot启动类
* 整合Servlet方式一:通过注解
* @author MSI-PC
*
*/
@SpringBootApplication
@ServletComponentScan //在SpringBoot启动时,会扫描@WebServlet注解,并将该类实例化
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
通过方法完成Servlet组件的注册
Servlet
package com.bjsxt.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* SpringBoot整合Servlet方式二:通过方法
* @author MSI-PC
*
*/
public class SecondServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("SecondServlet......................");
}
}
App启动类
package com.bjsxt;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import com.bjsxt.servlet.SecondServlet;
/**
* SpringBoot整合Servlet方式二:通过方法
* @author MSI-PC
*
*/
@SpringBootApplication
public class App2 {
public static void main(String[] args) {
SpringApplication.run(App2.class, args);
}
@Bean
public ServletRegistrationBean getServletRegistrationBean(){
ServletRegistrationBean bean = new ServletRegistrationBean<>(new SecondServlet());
return bean;
}
}
5. Spring Boot整合Filter
(1) Spring Boot整合Filter有几种方式?
通过注解扫描完成Filter组件的注册
通过方法完成Filter组件的注册
(2) 各种方式有什么特点?
通过注解扫描完成Filter组件的注册
Servlet类
package com.bjsxt.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(name="FirstServlet",urlPatterns="/first")
public class FirstServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("FirstServlet................");
}
}
Filter类
package com.bjsxt.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
/**
* SpringBoot整合Filter方式一:注解方式
* @author MSI-PC
*
*/
@WebFilter(filterName="FirstFilter",urlPatterns="/first")
public class FirstFilter implements Filter {
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException {
System.out.println("进入Filter.........");
arg2.doFilter(arg0, arg1);
System.out.println("离开Filter..............");
}
}
App启动类
package com.bjsxt;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
@ServletComponentScan
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
通过方法完成Filter组件的注册
Servlet
package com.bjsxt.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SecondServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("SecondServlet...................");
}
}
Filter
package com.bjsxt.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class SecondFilter implements Filter {
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException {
System.out.println("进入SecondFilter............");
arg2.doFilter(arg0, arg1);
System.out.println("离开SecondFilter................");
}
}
SpringBoot启动类
package com.bjsxt;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import com.bjsxt.filter.SecondFilter;
import com.bjsxt.servlet.SecondServlet;
/**
* SpringBoot整合Filter方式二:通过方法
* @author MSI-PC
*
*/
@SpringBootApplication
public class App2 {
public static void main(String[] args) {
SpringApplication.run(App2.class, args);
}
/**
* 注册Servlet
* @return
*/
@Bean
public ServletRegistrationBean getServletRegistrationBean() {
ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());
bean.addUrlMappings("/second");
return bean;
}
/**
* 注册Filter
* @return
*/
@Bean
public FilterRegistrationBean getFilterRegistrationBean() {
FilterRegistrationBean bean = new FilterRegistrationBean(new SecondFilter());
bean.addUrlPatterns("/second");
return bean;
}
}
6. springBoot整合Listener
(1) Spring Boot整合Listener有几种方式?
通过注解扫描方式
通过方法的方式
(2) 各种方式有什么特点?
通过注解扫描方式
Listener类
package com.bjsxt.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
/**
* SpringBoot整合Listener方式一:注解扫描方式
* @author MSI-PC
*
*/
@WebListener
public class FirstListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
// TODO Auto-generated method stub
ServletContextListener.super.contextInitialized(sce);
System.out.println("Listener..........init..........");
}
}
SpringBoot启动类
package com.bjsxt;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
@ServletComponentScan
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
通过方法的方式
Listener类
package com.bjsxt.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class SecondListener implements ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent sce) {
// TODO Auto-generated method stub
ServletContextListener.super.contextInitialized(sce);
System.out.println("SecondListener............init..........");
}
}
SpringBoot启动类
package com.bjsxt;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* SpringBoot整合Listener方式二:通过方法
* @author MSI-PC
*
*/
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.context.annotation.Bean;
import com.bjsxt.listener.SecondListener;
@SpringBootApplication
public class App2 {
public static void main(String[] args) {
SpringApplication.run(App2.class, args);
}
@Bean
public ServletListenerRegistrationBean<SecondListener> getServletListenerRegistrationBean(){
ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean(new SecondListener());
return bean;
}
}
7. Spring Boot访问静态资源
(1) 在Spring Boot中访问静态资源有几种方式?
两种:
SpringBoot从classpath/static的目录
![fc2bd4be29e7e613a3ec96796bd613fb.png](https://i-blog.csdnimg.cn/blog_migrate/d4c34f4750eca1d82551706398bf3740.png)
ServletContext根目录 src/main/webapp
![fd4affe0e8a343815bfa2d9ebc48be2a.png](https://i-blog.csdnimg.cn/blog_migrate/563e63c329d01cfd61f20676c924c106.png)
8. Spring Boot文件上传
(1) 在Spring Boot中如何设置单个上传文件大小?
在resources文件夹下添加application.properties配置文件,并添加
spring.http.multipart.maxFileSize=200MB
![1408e4a655fa68132906ccef7dd42d51.png](https://i-blog.csdnimg.cn/blog_migrate/58e52ad674877dfe00a6dfc58a71d8b8.png)
(2) 在Spring Boot中如何设置一次请求上传文件大小?
在application.properties文件中添加如下配置:
spring.http.multipart.maxRequestSize=200MB
9. Spring Boot整合jsp
(1) 在Spring Boot中整合jsp需要添加哪些坐标?
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
10. Spring Boot整合Freemarker
(1) 在Spring Boot中整合Freemarker需要添加哪些坐标?
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
(2) Freemarker视图的扩建名是什么?
.ftl
11. Thymeleaf入门-创建项目
在Spring Boot中整合Thymeleaf需要添加哪些坐标?
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
(2) Thymeleaf视图的扩建名是什么?
.html
(3) Thymeleaf视图要求放到项目的哪个目录下?
Src/main/resources/templates
该目录是安全的。意味着该目录下的内容是不允许外界直接访问的。
12. Thymeleaf入门-Thymeleaf基本使用
(1) Thymeleaf的特点是什么?
Thymeleaf是通过它特定的语法对html的标记做渲染。
(2) 在使用Thymeleaf时页面会出现什么异常?
![ea7ca9156d28a52353a96e850b8738ed.png](https://i-blog.csdnimg.cn/blog_migrate/a420c2f3278a66aa921ea6ca67fce1b3.jpeg)
(2) 解决Thymeleaf中标签匹配的异常有几种方式?
两种
解决异常方式 1
让 html 的标记按照严禁的语法去编写。
![d920a26e7dc2a19c593c43f3121dc9de.png](https://i-blog.csdnimg.cn/blog_migrate/f1b7c6d7425a0fc6200138967af4822b.png)
解决异常方式 2
Thymeleaf.jar:更新为 3.0 以上的版本
thymeleaf-layout-dialect.jar:更新为 2.0 以上的版本
更换 thymeleaf 的 jar 包的版本
<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>1.5.10.RELEASE</version>
</parent>
<groupId>com.bjsxt</groupId>
<artifactId>10-spring-boot-view-thymeleaf</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<java.version>1.7</java.version>
<thymeleaf.version>3.0.2.RELEASE</thymeleaf.version>
<thymeleaf-layout-dialect.version>2.0.4</thymeleaf-layout-dialect.versi
on>
</properties>
<dependencies>
<!-- springBoot 的启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- springBoot 的启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
</project>