1. SpringBoot介绍
(1) 什么是Spring Boot?
Spring Boot充分利用了JavaConfig的配置模式以及“约定优于配置”的理念,能够极大的简化基于Spring MVC的Web应用和REST服务开发
(2) Spring Boot有哪些特点?
①Spring Boot 设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。
②嵌入的 Tomcat,无需部署 WAR 文件
③Spring Boot 并不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方 式。
2. 构建SpringBoot项目以及启动器讲解
(1) Spring Boot常见的启动器有哪些?
所谓的 springBoot 启动器其实就是一些 jar 包的集合。SprigBoot 一共提供 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启动类?
编写返回 HelloWorld 的 Controller:
@Controller
public class HelloWorld {
@RequestMapping("/hello")
@ResponseBody
public Map<String,Object> showHelloWorld(){
HashMap<String, Object> map = new HashMap<>();
map.put("msg","HelloWorld");
return map;
}
}
@SpringBootApplication//表名该类为启动类
启动 SpringBoot 编写启动类
@SpringBootApplication//表名该类为启动类
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class,args);
}
}
(2) 编写Spring Boot启动类时需要注意什么?
启动器存放的位置。启动器可以和 controller 位于同一个包下,或者位于 controller 的上一级 包中,但是不能放到 controller 的平级以及子包下。
4. Spring Boot整合Servlet
(1) Spring Boot整合Servlet有几种方式?
SpringBoot整合Servlet方式一,通过注解方式完成Servlet组件注册
@ServletComponentScan//在springBoot启动时扫描@WebServlet,并将该类实例化
Servlet:
@WebServlet("/first")
public class FirstServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("firstServlet");
}
}
启动类:
@SpringBootApplication
@ServletComponentScan//在springBoot启动时扫描@WebServlet,并将该类实例化
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class,args);
}
}
SpringBoot整合Servlet方式二,通过方法方式完成Servlet组件注册
Servlet:
public class SecondServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("SecondServlet");
}
}
启动类:
@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());
bean.addUrlMappings("/second");
return bean;
}
}
5. Spring Boot整合Filter
(1) Spring Boot整合Filter有几种方式?
SpringBoot整合Filter方式一:通过注解扫描完成 Filter 组件的注册
Servlet:
@WebServlet("/first")
public class FirstServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("firstServlet");
}
}
Filter:
@WebFilter("/first")
public class FirstFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("进入filter");
filterChain.doFilter(servletRequest,servletResponse);
System.out.println("离开filter");
}
@Override
public void destroy() {
}
}
启动类:
@SpringBootApplication
@ServletComponentScan
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class,args);
}
}
SpringBoot整合Filter方式二:通过方法扫描完成 Filter 组件的注册:
Servlet:
public class SecondServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("secondServlet");
}
}
Filter:
public class SecondFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("进入filter");
filterChain.doFilter(servletRequest,servletResponse);
System.out.println("离开filter");
}
@Override
public void destroy() {
}
}
启动类:
@SpringBootApplication
public class App2 {
public static void main(String[] args) {
SpringApplication.run(App2.class,args);
}
//注册Servlt
@Bean
public ServletRegistrationBean getServletRegistrationBean(){
ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());
bean.addUrlMappings("/second");
return bean;
}
//注册Filter
@Bean
public FilterRegistrationBean getFilterRegistrationBean(){
FilterRegistrationBean bean = new FilterRegistrationBean(new SecondFilter());
//bean.addUrlPatterns(new String[]{"*.do","*.jsp",……});
bean.addUrlPatterns("/second");
return bean;
}
}
6. springBoot整合Listener
(1) Spring Boot整合Listener有几种方式?
SpringBoot整合Listener方式一:通过注解扫描完成 Listener 组件的注册
监听器:
@WebListener
public class FirstListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
System.out.println("Listener.....init......");
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
System.out.println("Listener.....dest......");
}
}
启动器:
@SpringBootApplication
@ServletComponentScan
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class,args);
}
}
SpringBoot整合Listener方式二:通过方法扫描完成 Listener 组件的注册
监听器:
public class SecondListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
System.out.println("SecondListener.....init......");
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
System.out.println("Listener.....dest......");
}
}
启动器:
@SpringBootApplication
public class App2 {
public static void main(String[] args) {
SpringApplication.run(App2.class,args);
}
//注册Listener
@Bean
public ServletListenerRegistrationBean<SecondListener> getServletListenerRegistrationBean(){
ServletListenerRegistrationBean<SecondListener> bean = new ServletListenerRegistrationBean<>(new SecondListener());
return bean;
}
}
7. Spring Boot访问静态资源
(1) 在Spring Boot中访问静态资源有几种方式?
1. SpringBoot 从 classpath/static 的目录
注意目录名称必须是 static
访问路径:http://localhost:8080/images/1.jpg
从 ServletContext 根目录(webapp文件)下找
访问路径:http://localhost:8080/images/1.jpg
8. Spring Boot文件上传
(1) 在Spring Boot中如何设置单个上传文件大小?
需要添加一个 springBoot 的配置文件:application.properties
设置单个上传文件的大小
spring.http.multipart.maxFileSize=200MB
设置一次请求上传文件的总容量
spring.http.multipart.maxRequestSize=200MB
9. Spring Boot整合jsp
(1) 在Spring Boot中整合jsp需要添加哪些坐标?
<?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>1.5.10.RELEASE</version>
</parent>
<groupId>com.bjsxt</groupId>
<artifactId>08-spring-boot-view-jsp</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!--springBoot的启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!-- jasper -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
10. Spring Boot整合Freemarker
(1) 在Spring Boot中整合Freemarker需要添加哪些坐标?
<?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>1.5.10.RELEASE</version>
</parent>
<groupId>com.bjsxt</groupId>
<artifactId>09-spring-boot-view-freemarker</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- springBoot的启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- freemarker启动器的坐标 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
</dependencies>
</project>
(2) Freemarker视图的扩建名是什么?
注意:springBoot 要求模板形式的视图层技术的文件必须要放到 src/main/resources 目录下必 须要一个名称为 templates
11. Thymeleaf入门-创建项目
(1) 在Spring Boot中整合Thymeleaf需要添加哪些坐标?
<?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>1.5.10.RELEASE</version>
</parent>
<groupId>com.bjsxt</groupId>
<artifactId>10-spring-boot-view-thymeleaf</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<thymeleaf.version>3.0.2.RELEASE</thymeleaf.version>
<thymeleaf-layout-dialect.version>2.0.4.RELEASE</thymeleaf-layout-dialect.version>
</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>
(2) Thymeleaf视图的扩建名是什么?
(3) Thymeleaf视图要求放到项目的哪个目录下?
目录位置:src/main/resources/templates templates:该目录是安全的。意味着该目录下的内容是不允许外界直接访问的。
12. Thymeleaf入门-Thymeleaf基本使用
(1) Thymeleaf的特点是什么?
Thymeleaf 特点: Thymelaef 是通过他特定语法对 html 的标记做渲染。
(2) 在使用Thymeleaf时页面会出现什么异常?
(3) 解决Thymeleaf中标签匹配的异常有几种方式?
①手动添加结束标签
②在pom文件中修改jar包版本
<properties>
<thymeleaf.version>3.0.2.RELEASE</thymeleaf.version>
<thymeleaf-layout-dialect.version>2.0.4.RELEASE</thymeleaf-layout-dialect.version>
</properties>