6.10面试笔记(springboot)

本文介绍了SpringBoot的核心优势,如简化配置、内置Tomcat等,并详细阐述了JavaConfig的概念。重点讲解了Servlet、Filter和Listener这三大JavaWeb组件的原理、生命周期及配置。此外,还探讨了SpringBoot的@SpringBootApplication注解以及自动配置的实现机制。
摘要由CSDN通过智能技术生成

为什么用使用springboot?
(1)简化配置,基本使用yaml语法配置,或Java类配置
(2)内置Tomcat (还内置其他容器: Jetty,Undertow.. 要知道如何移除 ,切换)
(3)maven简化配置
(4)更容易跟其他框架整合(很多都提供启动器自动配置,启动器是谁开发的,可以看groupid,或者启动器的名字)

什么是JavaConifg?

java config是指基于java配置的spring。传统的Spring一般都是基本xml配置的,后来spring3.0新增了许多java config的注解,特别是spring boot,基本都是清一色的java config。

 

SpringBoot的核心注解是哪个?
@SpringBootApplication
{
@SpringBootConfiguration:组合Configuration注解,实现加载配置文件
@EnableAutoConfiguration:打开自动配置功能,也可以关闭某自动配置的选项
@ComponentScan():Spring组件扫描
}

Javaweb三大组件:servlet、filter、listener

1、Servlet
Servlet是用来处理客户端请求的动态资源,也就是当我们在浏览器中键入一个地址回车跳转后,请求就会被发送到对应的Servlet上进行处理。

Servlet的任务有:

    接收请求数据:我们都知道客户端请求会被封装成HttpServletRequest对象,里面包含了请求头、参数等各种信息。
    处理请求:通常我们会在service、doPost或者doGet方法进行接收参数,并且调用业务层(service)的方法来处理请求。
    完成响应:处理完请求后,我们一般会转发(forward)或者重定向(redirect)到某个页面,转发是HttpServletRequest中的方法,重定向是HttpServletResponse中的方法,两者是有很大区别的。

Servlet的创建:Servlet可以在第一次接收请求时被创建,也可以在在服务器启动时就被创建,这需要在web.xml的< servlet>中添加一条配置信息 < load-on-startup>5< /load-on-startup>,当值为0或者大于0时,表示容器在应用启动时就加载这个servlet,当是一个负数时或者没有指定时,则指示容器在该servlet被请求时才加载。
 

Servlet的生命周期方法:

void init(ServletConfig)

servlet的初始化方法,只在创建servlet实例时候调用一次,Servlet是单例的,整个服务器就只创建一个同类型Servlet

> void service(ServletRequest,ServletResponse)

 

servlet的处理请求方法,在servle被请求时,会被马上调用,每处理一次请求,就会被调用一次。ServletRequest类为请求类,ServletResponse类为响应类

> void destory()

 

servlet销毁之前执行的方法,只执行一次,用于释放servlet占有的资源,通常Servlet是没什么可要释放的,所以该方法一般都是空的

Servlet的其他重要方法:

> ServletConfig getServletConfig()

 

获取servlet的配置信息的方法,所谓的配置信息就是WEB-INF目录下的web.xml中的servlet标签里面的信息

String getServletInfo()

2、Filter
filter与servlet在很多的方面极其相似,但是也有不同,例如filter和servlet一样都又三个生命周期方法,同时他们在web.xml中的配置文件也是差不多的、 但是servlet主要负责处理请求,而filter主要负责拦截请求,和放行。
filter四种拦截方式

    REQUEST:直接访问目标资源时执行过滤器。包括:在地址栏中直接访问、表单提交、超链接、重定向,只要在地址栏中可以看到目标资源的路径,就是REQUEST;
    FORWARD:转发访问执行过滤器。包括RequestDispatcher#forward()方法、< jsp:forward>标签都是转发访问;
    INCLUDE:包含访问执行过滤器。包括RequestDispatcher#include()方法、< jsp:include>标签都是包含访问;
    ERROR:当目标资源在web.xml中配置为< error-page>中时,并且真的出现了异常,转发到目标资源时,会执行过滤器。

url-mapping的写法
匹配规则有三种:

    精确匹配 —— 如/foo.htm,只会匹配foo.htm这个URL
    路径匹配 —— 如/foo/*,会匹配以foo为前缀的URL
    后缀匹配 —— 如*.htm,会匹配所有以.htm为后缀的URL
    < url-pattern>的其他写法,如/foo/ ,/.htm ,/foo 都是不对的。

执行filter的顺序
如果有多个过滤器都匹配该请求,顺序决定于web.xml filter-mapping的顺序,在前面的先执行,后面的后执行
3、Listener
Listener就是监听器,我们在JavaSE开发或者Android开发时,经常会给按钮加监听器,当点击这个按钮就会触发监听事件,调用onClick方法,本质是方法回调。在JavaWeb的Listener也是这么个原理,但是它监听的内容不同,它可以监听Application、Session、Request对象,当这些对象发生变化就会调用对应的监听方法。


元注解有几个?分别是?
@Target  作用位置(类上、方法上或者参数)
@Retention  生命周期(编译时、运行时、、)
@Documented  文档

@Retention:注解的保留位置

@Target:注解的作用目标

@Document:说明该注解将被包含在javadoc中

@Inherited:说明子类可以继承父类中的该注解

Springboot需要独立的容器运行吗?
不需要,因为内置了Tomcat容器(servlet容器)

部署Springboot应用,有几种方式?
打包jar和war的方式

springboot自动配置原理是什么?
自动配置的注解@EnableAutoConfiguration
通过这个注解可以引入自动配置jar包下面的配置类信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值