摘要:
你还坐在小时候的篝火旁 看天上的月亮还是那个模样 北斗星在指着你的前方 在夜里你也不会失去你的方向 不会再度感到迷茫 湖面倒映着天空是你心中的梦想 丢弃内心不安的彷徨 不会在任何寂静夜里孤单幻想流浪 (Verse 1) 总在见过一场暴雨才懂 信念未被击碎 可经历过沉寂的梦想 dreaming再不疲惫 阅读全文
摘要:
默认支持的WebServer Tomcat, Jetty, or Undertow。ServletWebServerApplicationContext 容器启动寻找ServletWebServerFactory 并引导创建服务器。原理 SpringBoot应用启动发现当前是Web应用,web场景包 阅读全文
摘要:
原理概述 Springboot向外界提供web服务,底层依赖了springframework中的web模块一整套(包含但不限于spring mvc核心类DispatcherServlet,RequestMappingHandlerMapping等)来实现的; 那么springboot在什么时机向容器 阅读全文
摘要:
使用原生的注解@WebServlet(urlPatterns = "/my")public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServlet 阅读全文
摘要:
默认异常情况 在SpringBoot的项目中,如果出现异常,那么默认是如下白板页面。那么我们一般并不会使用默认的错误页面,而都是自定义错误页面。 定制错误页面定制错误页面也有两类情况。 1、如果们使用模板引擎的情况下,那么我们可以在 templates 目录下创建一个 error 目录,在里面创建 阅读全文
摘要:
ErrorMvcAutoConfiguration 自动配置异常处理规则容器中的组件:类型:DefaultErrorAttributes -> id:errorAttributespublic class DefaultErrorAttributes implements ErrorAttribut 阅读全文
摘要:
默认效果: 1)、浏览器,返回一个默认的错误页面 浏览器发送请求的请求头: 2)、如果是其他客户端,默认响应一个json数据,比如postman客户端,接收application/json 原理: 可以参照ErrorMvcAutoConfiguration;错误处理的自动配置; 给容器中添加了以下组 阅读全文
摘要:
文件上传相关的自动配置类MultipartAutoConfiguration有创建文件上传参数解析器StandardServletMultipartResolver。 @Configuration(proxyBeanMethods = false) @ConditionalOnClass({ Ser 阅读全文
摘要:
页面代码/static/form/form_layouts.html <form role="form" th:action="@{/upload}" method="post" enctype="multipart/form-data"> <div class="form-group"> <lab 阅读全文
摘要:
1.DispatcherServlet的doDispatch方法 DispatcherServlet的doDispatch方法是请求的入口。 protected void doDispatch(HttpServletRequest request, HttpServletResponse respo 阅读全文
摘要:
编写一个拦截器实现HandlerInterceptor接口 拦截器注册到容器中(实现WebMvcConfigurer的addInterceptors()) 指定拦截规则(注意,如果是拦截所有,静态资源也会被拦截】 编写一个实现HandlerInterceptor接口的拦截器: @Slf4j publ 阅读全文
摘要:
视图解析原理流程: 目标方法处理的过程中(阅读DispatcherServlet源码),所有数据都会被放在 ModelAndViewContainer 里面,其中包括数据和视图地址。方法的参数是一个自定义类型对象(从请求参数中确定的),把他重新放在 ModelAndViewContainer 。任何 阅读全文
摘要:
控制层代码: @GetMapping("/dynamic_table") public String dynamic_table(Model model){ //表格内容的遍历 List<User> users = Arrays.asList(new User("zhangsan", "123456 阅读全文
摘要:
公共页面/templates/common.html <!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"><!--注意要添加xmlns:th才能添加thymeleaf的标签--> <head th:fragment= 阅读全文
摘要:
项目创建 使用IDEA的Spring Initializr。 thymeleaf、 web-starter、 devtools、 lombok 登陆页面 /static 放置 css,js等静态资源 /templates/login.html 登录页 <html lang="en" xmlns:th 阅读全文
摘要:
Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。它与 JSP,Velocity,FreeMaker 等模板引擎类似,也可以轻易地与 Spring MVC 等 Web 框架集成。与其它模板引擎相比,Thymeleaf 最大的特点是,即使不启动 Web 应用,也可以直 阅读全文
摘要:
假设你想基于自定义请求参数的自定义内容协商功能。 换句话,在地址栏输入http://localhost:8080/test/person?format=gg返回数据,跟http://localhost:8080/test/person且请求头参数Accept:application/x-guigu的 阅读全文
摘要:
之前的文章我们知道,如果使用@ResponseBody,我们在发请求的时候,对请求头进行设置,可以获取到我们想要的返回数据格式,例如json数据,或者XML数据(当然这些都要导入对应的依赖,也要开启基于请求参数的内容协商功能),这是服务器与浏览器进行内容协商后的结果。那么,如果我们想自定义返回的数据 阅读全文
摘要:
基于请求参数的内容协商原理上面通过postman可以把数据又变成json,但是总有一个情况是又要json,又要xml,又要别的。这时不可能打开好几个软件发请求。 在上面的不设置就用,就是基于请求头转换结果数据。就也可以基于请求参数转换指定参数值的结果数据类型 结合之前的学习内容,上面的请求一路执行到 阅读全文
摘要:
将数据以xml的方式返回给浏览器,在参数解析器解析时涉及到内容协商。 @ResponseBody @RequestMapping("/test/person") public Person getPerson(){ Person person = new Person(); person.setAg 阅读全文