springboot 启动类_122-SpringBoot

本文详细介绍了SpringBoot的核心概念,如简化Spring应用搭建、嵌入式Tomcat、约定优于配置。并逐步讲解了如何构建SpringBoot项目,包括常用启动器如web、jdbc、redis的使用。接着,通过实例展示了如何编写启动类、整合Servlet、Filter和Listener。此外,还涵盖了访问静态资源、文件上传、整合JSP、Freemarker和Thymeleaf的配置方法。
摘要由CSDN通过智能技术生成

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

bba14eff41699f6b260b70a39da3ad95.png

访问路径:http://localhost:8080/images/1.jpg

从 ServletContext 根目录(webapp文件)下找

dc236b4f092b95a6f888276a72cd9cdf.png

访问路径:http://localhost:8080/images/1.jpg

8. Spring Boot文件上传

(1) 在Spring Boot中如何设置单个上传文件大小?

需要添加一个 springBoot 的配置文件:application.properties

3f853980685fc63bf5211df35bce14f8.png

设置单个上传文件的大小

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

f49ab044d6c95e4b6ea89c625837c871.png

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视图的扩建名是什么?

511d44234e5454499b71f57afafbc6b7.png

(3) Thymeleaf视图要求放到项目的哪个目录下?

目录位置:src/main/resources/templates templates:该目录是安全的。意味着该目录下的内容是不允许外界直接访问的。

12. Thymeleaf入门-Thymeleaf基本使用

(1) Thymeleaf的特点是什么?

Thymeleaf 特点: Thymelaef 是通过他特定语法对 html 的标记做渲染。

(2) 在使用Thymeleaf时页面会出现什么异常?

6d1bd4afa5bf4227ce749fcb57716d7e.png

(3) 解决Thymeleaf中标签匹配的异常有几种方式?

①手动添加结束标签

fc2ab9dee0cb8f99c18cd083f4e6d57a.png

②在pom文件中修改jar包版本

<properties>

<thymeleaf.version>3.0.2.RELEASE</thymeleaf.version>

<thymeleaf-layout-dialect.version>2.0.4.RELEASE</thymeleaf-layout-dialect.version>

</properties>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值