1. SpringBoot介绍
(1) 什么是Spring Boot?
Spring Boot就是用来简化新Spring应用的初始搭建以及开发过程。
(2) Spring Boot有哪些特点?
• SpringBoot 设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。
• 嵌入的 Tomcat,无需部署 WAR 文件
• SpringBoot 并不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方 式。
2. 构建SpringBoot项目以及启动器讲解
(1) Spring Boot常见的启动器有哪些?
spring-boot-starter-web: 支持全栈式的 web 开发,包括了 tomcat 和 springMVC 等 jar
spring-boot-starter-jdbc: 支持 spring 以 jdbc 方式操作数据库的 jar 包的集合
spring-boot-starter-redis: 支持 redis 键值存储的数据库操作
(2) Spring Boot的Web启动器的坐标是什么?
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.9.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
3. 编写HelloWorld
(1) 如何编写Spring Boot启动类?
@SpringBootApplication
public class HelloApplication {
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class,args);
}
}
(2) 编写Spring Boot启动类时需要注意什么?
需要注意的是启动类和Controller同一包下以及上一级包下是可以运行成功的,但是不能放到同级包下以及他的子包下
4. Spring Boot整合Servlet
(1) Spring Boot整合Servlet有几种方式?
2种方式如下所示:
方式一:
@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.doGet");
resp.getWriter().println("FirstServlet.doGet");
}
}
@SpringBootApplication
@ServletComponentScan//扫描webservlet注解
public class ServletApplication {
public static void main(String[] args) {
SpringApplication.run(ServletApplication.class,args);
}
}
方式二:
public class SecondServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("SecondServlet.doGet");
resp.getWriter().println("SecondServlet.doGet");
}
}
@SpringBootApplication
public class ServletApplication2 {
public static void main(String[] args) {
SpringApplication.run(ServletApplication2.class,args);
}
@Bean
public ServletRegistrationBean getBean(){
ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());
bean.addUrlMappings("/second");
return bean;
}
}
(2) 各种方式有什么特点?
第一种方式只需在servlet层和启动类加注解
第二种方式在servlet不需要加注解知需要在启动类加方法
5. Spring Boot整合Filter
(1) Spring Boot整合Filter有几种方式?
方式一:
//@WebFilter(filterName = "FirstFilter",urlPatterns = {"*.do,*.jsp"})
@WebFilter(filterName = "FirstFilter",urlPatterns = "/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 FilterApplication {
public static void main(String[] args) {
SpringApplication.run(FilterApplication.class,args);
}
}
方式二:
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 FilterApplication2 {
public static void main(String[] args) {
SpringApplication.run(FilterApplication2.class,args);
}
@Bean
public ServletRegistrationBean getServletRegistrationBean(){
ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());
bean.addUrlMappings("/second");
return bean;
}
@Bean
public FilterRegistrationBean getFilterRegistrationBean(){
FilterRegistrationBean bean = new FilterRegistrationBean(new SecondFilter());
bean.addUrlPatterns("/second");
return bean;
}
}
(2) 各种方式有什么特点?
第一种方式只需在Filter层和启动类加注解
第二种方式在Filter不需要加注解知需要在启动类加方法
6. springBoot整合Listener
(1) Spring Boot整合Listener有几种方式?
方式一:
@WebListener
public class FirstListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("FirstListener.contextInitialized监听开始");
}
}
@SpringBootApplication
@ServletComponentScan
public class ListenerApplication {
public static void main(String[] args) {
SpringApplication.run(ListenerApplication.class,args);
}
}
方式二:
public class SecondListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("SecondListener.contextInitialized监听开始");
}
}
@SpringBootApplication
public class ListenerApplication2 {
public static void main(String[] args) {
SpringApplication.run(ListenerApplication2.class,args);
}
@Bean
public ServletListenerRegistrationBean getServletListenerRegistrationBean(){
ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean(new SecondListener());
return bean;
}
}
(2) 各种方式有什么特点?
第一种方式只需在Listener层和启动类加注解
第二种方式在Listener不需要加注解知需要在启动类加方法
7. Spring Boot访问静态资源
(1) 在Spring Boot中访问静态资源有几种方式?
方式一:
方式二:
8. Spring Boot文件上传
(1) 在Spring Boot中如何设置单个上传文件大小?
spring.servlet.multipart.max-file-size=99MB
(2) 在Spring Boot中如何设置一次请求上传文件大小?
spring.servlet.multipart.max-request-size=99MB
9. Spring Boot整合jsp
(1) 在Spring Boot中整合jsp需要添加哪些坐标?
<!-- 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>