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