1.回顾
技术栈,你需要用到哪些技术栈,在创建springboot的时候,直接勾选就可以了
配置原理,还是跟之前一样,把.properties文件给某个配置bean赋值,然后就可以用这些配置bean去搞事情了
2.springboot对静态资源的映射规则
所有/webjars下的请求都去META-INF/resources/webjars/下找资源,webjars让我们可以用jar包的方式使用前端框架(maven)
我们在resource.properties里面设置和静态资源有关系的东西
/**
如果访问任何一个请求,会按照springboot的默认规定在多个文件夹下找
但是考虑到之后前后端分离,不写jsp,这里就不写哪些文件夹
从根路径java/resource往下多种方法都可以放
3.欢迎页
静态资源文件夹下的所有index.html页面
图标也是在静态资源文件下找
到时候vue写好的直接首页写index
自定义静态资源位置
直接在application.properties可以自定义,定义了以后以前的默认的就无法使用了
4..模板引擎
现在讲了很多关于thymeleaf的。。。很蛋疼,到底学不学,姑且了解一下吧,到时候还是用前后端分离,所以本章关于thymeleaf都只简单做一下了解
5.Springmvc
springboot自动为springmvc配置
①viewresolver,视图对象决定如何渲染,我们自己可以给容器中添加一个视图解析器,但是我们搞前后端分离,所以这玩意还是不配
②converter、formatter
需要的时候,自己配置converter&formatter
③HttpMessageConverter同样也是直接加到容器就行了
6.springboot的配置模式
springboot在自动配置很多组件的时候,先看容器中有没有用户自己配,如果有,就用用户配置的,如果没有才自动配置;如果一些组件可以有多个,可以把默认的跟用户自己配置的组合起来
7.自定义springmv配置
自己想配置springmvc的时候,想扩展springmvc的功能,继承WebMvcConfigurerAdapter,然后重写其方法就可以了,特点:既保留了所有的自动配置,也能用我们扩展的配置,如果我们想全部自己弄,那么就要加@EnableWebMvc,所以这句话谨慎使用,一旦加了以后自动配置的就全部失效了。
原理就是:@EnableWebMvc将WebMvcConfigurationSupport组件导入进来,所有的自动配置就都会失效,按照springmvc的要求自定义的东西,一定要要添加到容器中才会生效,所以要加@Bean
8.国际化
一般情况下写3个properties,一个是跟page相关的,然后一个en一个zh
然后把所有的变量抽取出来
这个springboot也会给自动配置,然后其放在resource下面,命名为一个叫做messages.properties就可以了
国际化是根据你的浏览器信息自动设置的,通过一个区域信息对象来读取的,这里也会出现在请求头的lang里面
如何实现国际化切换,自己写一个区域信息解析器,之前的是解析请求头,我们这里换一下
9.默认修改全局设置
在.properties文件里面修改的时候,这个编码有问题,在idea的settings里面仅仅针对本工程,想要修改idea的默认设置,还是要进入default-setting里面进行设置
10.表单/拦截器
这里的表单提交,之前写的是一个bean来接收,其实可以写一个name然后用单个的key去接收也是可以的,这里注意一下,如果登录成功以后,刷新重新提交表单的话,最好的防止的办法就是重定向(意思就是,登录成功以后直接重定向到一个页面)但是,这里的页面不需要登录,直接就可以访问了,这里还是需要拦截器,每次登录前检查一下token/username,在配置拦截器的时候,设置拦截路径,不能把登录页面或者登录请求也拦截了,但是一些静态资源也是要设置,不然根绝不同的版本可能也会被拦截
11.formatter
修改默认的date-format
在application.properties里面设置就可以了,主要是修改日期格式
12.springboot默认错误处理机制
①如果是h5默认会返回一个空白页,提示错误代码等信息
②如果是客户端,那么会返回一个json
③定制错误响应:页面和定制json
④系统出现错误以后,这里会默认跳转到/error
⑤DefaultErroViewResolver来指定error了以后去哪个页面
如何定制错误页面:
有模板引擎的情况下,可以按照springboot的设置要求来,替换默认的错误页面,比如4xx.html,精确优先
没有模板引擎:在静态资源文件夹下面找
都没有:springboot默认的错误页面
如何定制错误json:
①自定义一个异常处理器, 用@ExceptionHandler捕获所有controller层的异常,在类的上面有标注@ControllerAdvice注解,捕获到异常以后,然后return回去;这种是没有自适应效果,不管浏览器还是客户端全部都返回的json
②通过reqeust添加一个attribute,然后传一个我们自己的状态码,但是这样还是不能返回我们自己写的json错误信息,这里给容器里面加入一个自己定义的errorAttribute,里面可以加一些错误信息,然后也可以从request的域对象里面拿到我们在之前的异常处理器里面set的一些错误信息
13.Advice
关于springmvc的异常捕获,之前没接触过,或者说是接触过忘记了,现在重新拾起来看看,主要是关于controller层的一个aop
ref:https://blog.csdn.net/zxfryp909012366/article/details/82955259
14.配置嵌入式servlet容器
①如何定制和修改servlet容器
修改与server有关的配置,直接就是在application.properties里面修改
②通用的servlet设置
都是用server.xxx设置,而tomcat的直接就是:server.tomcat.xxx
③编写嵌入式的tomcat的容器的定制器
EmbeddedServletContainerCustomizer
tips:我们可以在properties里面写配置,以后还会遇到很多configurer和custmizer来进行配置
15.注册servlet三大件
①servlet
配置好一个我自己写的servlet,然后用ServletRegistrationBean,把这个bean返回到容器
②Filter同上FilterRegistrationBean
③Listener同上ListenerRegistrationBean
16.使用其他嵌入式容器
springboot默认的是使用tomcat
除此之外,springboot还支持Jetty(长链接)和Undertow(不支持JSP)
这里直接跟那个更换日志包一样,打开show diagrams,找到依赖关系,把tomcat去掉,加入jetty就可以了
17.嵌入式servlet容器自动配置原理
jett,tomcat,undertow,都有一个EmbeddedServletContainer
通过一系列的定制器来做:
①通过依赖情况,会给容器添加相应的EmbeddedServletContainerFactory
②然后成功会惊动一个后置处理器EmbeddedServletContainerCustomizerBeanPostProcessor
③后置处理器从容器中获取所有的EmbeddedServletContainerCustmizer,调用定制器的方法
这里简单的了解一下就可以了
18.使用外置的Servlet容器
优点:快,简单
缺点:无法使用JSP(这不是优点?呵呵)、无法深度优化和定制
如何使用外置servlet容器:外置tomcat,打war包
这里注意一下,在使用外置tomat打包的时候,关于springboot的tomcat包,下面scope要写provided,意思就是我打包成war以后肯定是要部署到tomcat的,这个包打包的时候不用打
最后传主application到ServletInitializer这个类里面就可以打包了