springBoot随计——web

web

①springBoot可以通过webjars(jar包)的方式引入静态资源;自己的可以放在静态文件夹:classpath:/META-INF/resources/→/resources/→/static/→/public/→/:根路经;首页自动映射到静态文件夹下的index.html(被/**眏射);图标**/favicon.ico也都放在静态文件下。
②模版引擎:JSP、Velocity、Freemarker、Thymeleaf;通过模板(静态标签和${user}、if等)和数据交给模版引擎组装,反回显示的页面。
③springBoot推荐Thymeleaf,3.0版本需要layout2以上版本,页面放在/templates/下,.html结尾,方法直接返回页面名既可。语法看官方文档

MVC

①WebMvcAutoConfiguration自动配置,看官网
②修改springBoot的默认配置:
1、springBoot在自动配置很多组件的时候,会判断有没用户自己配置的(@Bean、@Component),有就用用户的;如果组件可以有多个,会把用户和自已默认的组合起来。
2、在springBoot中会有非常多的xxxConfigurer帮助我们扩展配置
③继承WebMvcConfigurerAdapter并设为@Cofiguration可以扩展SpringMVC的功能,通过重写相应的方法,不能注@EnableWebMvc,否则springBoot取消自动配置,要手动配置所有mvc相关

Servlet

①在yml改server.xxx等通用的相关配置,或server.tomcat.xxx等配置;也可以编写个EmbeddedServletContainerCustomizer嵌入式的servlet容器定制器修改Servlet的配置。
②注册三大组件:ServletRegistrationBean、FilterRegistrationBean、SerletListenerRegistrationBean
③springboot自动注册springMVC时,注册的前端控制器:DispatcherServlet:默认拦截:/所有请求,包括静态资源,但不包括JSP请求;/*会拦截JSP
④其它Servlet容器:Jetty(长连接)、Undertow(不支持JSP);在starter-web排除starter-tomcat再引入其它的既可切换容器
⑤嵌入式Servlet自动配置:EmbeddedServletContainerFactory容器工厂→EmbeddedServletContainerCustomizerBeanPostProcessor后置处理器→获取所有EmbeddedServletContainerCustomizer定制器的定制方法
⑥启动原理:SpringBoot的run→refreshContext(context):SpringBoot刷新I0C容器【创建IOC,并初始化】→onRefresh:web的ioc容器重写了onRefresh方法→创建嵌入式的Servlet容器:createEmbeddedServletContainer()→获取Servlet容器工厂,执行自动配置→使用容器工厂获取Servlet容器→嵌入式的Servlet容器创建对象并启动Servlet容器(先启动tomcat,再将IOC中剩下的对象创建出来)
⑦使用外置:创建war项目(包含webapp的)→将嵌入式的starter-tomcat指定scope为provided→必须编写一个SpringBootServletInitializer的子类,并调用configure方法→启动tomcat
⑧外置启动SpringBoot原理:
jar包:执行主类的main方法→启动ioc容器→创建嵌入式的Servlet容器
war包:启动服务器→服务器启动SpringBoot应用【SpringBootservletInitializer启动】→启动ioc容器
Servlet3.0的规范第8.2.4:Shared libraries/runtimes pluggability:
规则:
1、服务器启动(web应用启动)会创建当前web应用里每一个Jar包里面ServletContainerInitializer实例;
2、实例的实现放在Jar包的META-INF/services文件夹下,有一个名为javax.servlet.ServletContainerInitializer的文件,内容就是ServletContainerInitializer的实现类的全类名
3、还可以使用@HandlesTypes,在应用启动的时候加载我们感兴趣的类

其它

①国际化i18n/login_en_US.properties或login_zh_CN.properties,用#{取值};可以通过定义LocaleResolver实现切换语言。
②spring.thymeleaf.cache=false禁用缓存,spring.messages.basename=i18n.login设置国际化,ctrl+F9清理thy缓存
③HandlerInterceptor做登录检查,springBoot自动对静态资源做映射了,拦截时可以不用管
④Rest风格:URI:/资源名称/资源标识 HTTP请求方式区分对资源CRUD操作,如getEmp→ emp…GET/updateEmp?id=xxx→emp/{id}…PUT
⑤错误页面:参考ErrorMvcAutoConfiguration;有模板引擎:error/状志码(将错误页面命名为错误码.html放在模板文件夹下的error下),此状态码的错误就会来到对应的页面;可以使用4xx作为错误页面匹配所有这类的错误,但精确优先;没模板引擎,会到静态资源下找,但没法获取值了;如果都没有,就用springBoot的默认的。
⑥异常:利用@ExceptionHandler机制,设置状态码等信息,然后"forward:/error";通过给容器中添加自己的ErrorAttributes定制返回信息,其中requestAttributes就是请求的封装,可以获取异常处理器携带的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值