
Spring Boot2.x实战 - Spring MVC
文章平均质量分 91
Spring Boot实战 - Spring Web MVC 5.x
汪云飞记录本
Spring
展开
-
Spring Boot 2.x实战39 - Spring Web MVC 11 - Web MVC配置(HttpMessageConverter)
3.5 HttpMessageConverter在Spring MVC中请求(@RequestBody、RequestEntity等)和返回(@Responsebody、ResponseEntity等)都是通过HttpMessageConverter来实现数据转换的。外部的请求数据通过HttpMessageConverter转换成Java对象,而Java对象又通过HttpMessageConverter转换成外部数据到返回中。在我们前面的例子中,web请求体中的Json数据通过MappingJackso原创 2020-05-12 17:37:44 · 507 阅读 · 0 评论 -
Spring Boot 2.x实战40 - Spring Web MVC 12 - Web MVC配置(控制器方法参数和返回值处理设置-使用HandlerMethodArgumentResolver)
3.6 方法参数和返回值处理设置在控制器方法里,我们可以使用@RequestBody、RequestEntity获得请求体里的数据,使用@ResponseBody、ResponseEntity对返回体进行处理。在Spring MVC中可以通过实现HandlerMethodArgumentResolver接口来实现对控制器方法参数进行处理,通过实现HandlerMethodReturnValueHandler可以对方法的返回值进行处理。若同时需要对请求参数和返回返回体进行处理的话,则继承Abstract原创 2020-05-13 13:35:39 · 309 阅读 · 0 评论 -
Spring Boot 2.x实战41-SpringWebMVC13-WebMVC配置(控制器方法参数和返回值处理设置-AbstractMessageConverterMethodProcessor)
3.6.2 示例2我们再模仿@RequestBody和@ResponseBody的实现原理做一个简单的示例。请求体注解:@Target({ElementType.PARAMETER})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface RequestPerson {}返回体注解:@Target({ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@D原创 2020-05-14 13:56:58 · 1584 阅读 · 0 评论 -
Spring Boot 2.x实战42 - Spring Web MVC 14 - Web MVC配置(初始化数据绑定设置-ConfigurableWebBindingInitializer)
3.7 初始化数据绑定设置Spring MVC可以让我们配置ConfigurableWebBindingInitializer 的Bean来初始化WebDataBinder对象,这也意味着前面对于PropertyEditor、Formatter和Validator可以用现在这种方式来设置。初始化数据绑定是在控制器方法参数处理之前进行的。注册PropertyEditor:@BeanConfigurableWebBindingInitializer ConfigurableWebBindingIniti原创 2020-05-14 14:04:46 · 310 阅读 · 0 评论 -
Spring Boot 2.x实战43 - Spring Web MVC 15 - Web MVC配置(类型转换原理与设置-Converter和ConverterFactory)
3.8 类型转换原理与设置Spring为我们提供了ConversionService接口用来做类型转换,它是Spring类型转换系统的入口。像我们注册的Formatter的FormattingConversionService类就是它的实现类。FormattingConversionService支持注册Formatter、Converter和AnnotationFormatterFactory,它属于配置初始化数据绑定的一部分。3.8.1 FormatterFormatter用于格式化(id|na原创 2020-05-14 14:15:30 · 704 阅读 · 0 评论 -
Spring Boot 2.x实战44 - Spring Web MVC 16 - Web MVC配置(类型转换原理与设置-AnnotationFormatterFactory)
3.8.3 AnnotationFormatterFactory AnnotationFormatterFactory创建Formatter来格式化标记了特殊注解的属性值。NumberFormatAnnotationFormatterFactory使用@NumberFormat注解创建NumberStyleFormatter、CurrencyStyleFormatter,PercentStyleFormatter这些Formatter来格式化注解的属性。DateTimeFormatAnnotati原创 2020-05-14 14:27:01 · 389 阅读 · 0 评论 -
Spring Boot 2.x实战45 - Spring Web MVC 17 - Web MVC配置(路径匹配和内容协商-PathMatchConfigurer)
3.9 路径匹配和内容协商Spring MVC中可以通过重载WebMvcConfigurer接口的configurePathMatch方法来设置路径匹配。Spring MVC为我们提供了PathMatchConfigurer来进行路径匹配配置。 public void configurePathMatch(PathMatchConfigurer configurer) { }3.9.1 后缀匹配使用PathMatchConfigurer.setUseSuffixPatternMatc原创 2020-05-14 15:00:05 · 3136 阅读 · 0 评论 -
Spring Boot 2.x实战46 - Spring Web MVC 18 - Web MVC配置(JSON配置)
3.10 JSONSpring MVC给我们提供了多种Json的实现,包含:Jackson、Gson、JSON-B。Jackson使用的是MappingJackson2HttpMessageConverter,Spring Boot提供的自动配置为:JacksonAutoConfigurationGson使用的是GsonHttpMessageConverter,Spring Boot提供的自动配置为:GsonAutoConfigurationJSON-B使用的是JsonbHttpMess原创 2020-05-14 15:03:40 · 279 阅读 · 0 评论 -
Spring Boot 2.x实战47 - Spring Web MVC 19 - Web MVC配置(常用外部配置:静态文件目录,欢迎页,Favicon)
3.11 其他外部属性配置3.11.1 静态文件目录Web开发中有很多静态的文件,如:html、js、css、图片等。在Spring Boot下,下列目录都可放置静态文件:classpath:/META-INF/resources/classpath:/resources/classpath:/static/classpath:/public/当前的classpath类路径是Spring Boot为我们生成的src/main/resources目录。我们还可以通过spring.resour原创 2020-05-14 15:17:10 · 259 阅读 · 0 评论 -
Spring Boot 2.x实战48 - Spring Web MVC 20 - Servlet容器(如何注册Servlet、Filter和listener)
4. Servlet容器Spring Boot使用的是内嵌式的Servlet容器,支持tomcat、jetty和undertow。4.1 注册Servlet、Filter和listenerSpring Boot下我们可以用多种形式注册Servlet、Filter和Listener,我们先定义三个简单的示例:Servlet:@Slf4j@Getter@Setterpublic class CustomServlet extends HttpServlet { private Strin原创 2020-05-14 15:28:53 · 260 阅读 · 0 评论 -
Spring Boot 2.x实战49 - Spring Web MVC 21 - Servlet容器(配置Servlet容器-常用配置)
4.2 配置Servlet容器4.2.1 外部配置网络配置:server.port、server.address等;用户会话配置:server.servlet.session.*;错误配置:server.error.*;HTTP压缩:server.compression.* ,支持html、xml、css、js、json、text。默认关闭,可用server.compression.enabled: true开启;SSL配置:server.ssl.*;tomcat专有配置:server.to原创 2020-05-14 15:34:28 · 205 阅读 · 0 评论 -
Spring Boot 2.x实战50 - Spring Web MVC 22 - Servlet容器(配置SSL与HTTP/2)
4.2.5 配置SSLSSL全称为Secure Sockets Layer,它是建立web服务器和客户端(浏览器)之间安全连接的标准安全技术。它保证了web服务器和客户端之间传递数据保持私有和完整。为了创建SSL连接,web服务器需要一个SSL证书。一般情况下,我们会购买证书,本例我们会通过java的工具keytool生成一个证书。生成证书:$ keytool -genkey -keyalg RSA -alias wisely -keystore keystore.jks -storepass原创 2020-05-14 15:46:10 · 374 阅读 · 0 评论 -
Spring Boot 2.x实战51 - Spring Web MVC 23 - 异步请求(Servlet 3.0 异步返回-Callable)
5. 异步请求当一个web请求到达了Servlet容器时,Servlet线程将被阻碍直至处理执行完成。这种阻碍称为同步,我们需要通过一些方式来降低Servlet容器的负载。5.1 Servlet 3.0 异步返回Spring MVC支持Servlet 3.0提供的异步支持,它将web请求的处理放在另外一个线程中。我们由另外的线程来处理耗时的任务,而让Servlet线程被释放去处理另外的web请求,而不是阻碍Servlet线程。此时的返回(response)还是打开的,当处理完成后,将处理结果返回给客户原创 2021-03-04 10:26:22 · 847 阅读 · 0 评论 -
Spring Boot 2.x实战52 - Spring Web MVC 24 - 异步请求(Servlet 3.0 异步返回-DeferredResult)
DeferredResult的结果是由另外一个线程再稍后计算后返回给客户端的。DeferredResult的线程执行器可由CompletableFuture来定制。同样我们在TaskService定义我们的处理:@Service@Slf4jpublic class TaskService { public String deferredTask() { log.info("+++++DeferredResult数据返回+++++"); return "resu原创 2020-05-19 15:53:26 · 474 阅读 · 0 评论 -
Spring Boot 2.x实战53 - Spring Web MVC 25 - 异步请求(HTTP Streaming - ResponseBodyEmitter)
5.2 HTTP StreamingDeferredResult和Callable只能异步返回单个值;如果我们想有多个异步返回的话,我们可以用HTTP Streaming来实现。HTTP Streaming是一种推送形式的数据传输技术,它通过无限期开放的HTTP连接让web服务器(tomcat)能持续向客户端(浏览器)传送数据。在HTTP Streaming下,web服务器会握住客户端的请求并让返回保持开放,这样服务器可以通过返回一直发送数据。这个请求-返回的通道会一直开启,除非我们显示的要求关闭。原创 2020-05-19 15:58:30 · 1868 阅读 · 0 评论 -
Spring Boot 2.x实战54 - Spring Web MVC 26 - 异步请求(HTTP Streaming - SSE)
Spring MVC提供了SseEmitter用来提供对W3C的SSE规范的支持。SSE是Server-Sent Events的缩写。HTML5 API 提供了EventSource对象和服务端交互,服务端返回数据时头数据里的内容类型为:text/event-stream。我们的控制器的代码和ResponseBodyEmitter的几乎差不多:@RestController@RequestMapping("/async")@Slf4jpublic class AsyncController {原创 2020-05-19 16:02:05 · 749 阅读 · 1 评论 -
Spring Boot 2.x实战55 - Spring Web MVC 27 - 异步请求(HTTP Streaming - StreamingResponseBody)
我们可以通过返回StreamingResponseBody来直接使用返回的OutputStream来自己控制数据返回。我们也可以使用ResponseEntity来定制状态和头的信息。本例使用StreamingResponseBody返回一张图片,示例控制器如下:@RestController@RequestMapping("/async")@Slf4jpublic class AsyncController { @Value("classpath:wyn.jpg") //1 pri原创 2020-05-19 16:06:16 · 1337 阅读 · 0 评论 -
Spring Boot 2.x实战56 - Spring Web MVC 28 - HTTP/2应用
我们在前面已经配置SSL和开启了HTTP/2(https://blog.youkuaiyun.com/wiselyman/article/details/106121219),我们只需要在控制器方法里的参数使用javax.servlet.http.PushBuilder对象即可使用HTTP/2的推送技术。PushBuilder主动将资源推送到客户端(浏览器);这个特性也需要浏览器的支持,当然现代浏览器绝大部分都支持这个功能。HttpBuilder属于builder模式,主要方法有:path:中间操作,指定需推送的原创 2020-05-19 16:11:05 · 355 阅读 · 0 评论