![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring MVC
文章平均质量分 93
Spring MVC
云烟成雨TD
一个追求有道有术的非典型程序员
展开
-
Spring MVC系列【17】参数处理流程源码解析
Spring MVC系列【17】参数处理流程源码解析原创 2022-06-06 14:09:21 · 508 阅读 · 0 评论 -
Spring MVC系列(16)-使用HttpServletRequestWrapper 解决流只能读取一次的问题
文章目录问题场景原因分析解决方案方案1 使用HttpServletRequestWrapper 重新包装流1. HttpServletRequestWrapper2. 自定义实现类3. 添加过滤器4. 测试问题场景在使用@Aspect进行切面配置打印请求日志时,获取了请求参数,然后在访问接口中,又调用了工具类去获取请求参数,发生异常。错误信息如下:// 在使用getInputStream方法时,发现InputStream已经被读取了。java.lang.IllegalStateException:原创 2021-12-23 14:42:25 · 3147 阅读 · 0 评论 -
Spring MVC系列(15)-文件上传流程源码分析
前言在上篇文档,我们分析了如何使用Spring MVC进行文件的上传和下载,也分析了一些常用的类和接口,那么这些请求和解析器是如何工作的呢?核心类Part接口Part是javax.servlet.http包下的一个接口,servlet3.0加入,此类用于封装multipart/form-data请求时,上传文件的请求体。public interface Part { InputStream getInputStream() throws IOException; String g原创 2021-09-16 15:14:18 · 548 阅读 · 0 评论 -
Spring MVC系列(14)-文件上传和下载
Media Type上传文件时,需要指定媒体类型,有下面这两种。multipart/form-data在HTML中,表单form中的enctype 属性,指定在发送到服务器之前应该如何对表单数据进行编码。默认地,表单数据会编码为 “application/x-www-form-urlencoded”。就是说,在发送到服务器之前,所有字符都会进行编码(空格转换为 “+” 加号,特殊符号转换为 ASCII HEX 值)。当表单使用 POST 请求时,数据会被以 x-www-urlencoded 方式编原创 2021-09-16 13:40:17 · 401 阅读 · 0 评论 -
Spring MVC系列(13)-实际开发中异常处理方案
Spring MVC中的异常首先了解下 Spring MVC中定义的一些异常。异常说明HttpRequestMethodNotSupportedException请求处理程序不支持具体请求方法HttpMediaTypeNotSupportedExceptionMediaType不支持HttpMediaTypeNotAcceptableException当请求处理程序无法生成客户端可接受的MediaTyp时引发异常。MissingPathVariableExce原创 2021-09-16 09:13:56 · 414 阅读 · 0 评论 -
Spring MVC系列(12)-异常处理流程源码分析
前言首先写一个接口,会抛出算术异常ArithmeticException。 @GetMapping("/testException") @ResponseBody public String testException() { int i= 4/0; return "testException"; }浏览器访问,发现返回了一个页面,但是是说500异常,找不到/error访问路径。使用PostMan访问,发现返回了Json数据。那么原创 2021-09-15 19:06:19 · 456 阅读 · 0 评论 -
Spring MVC系列(11)-拦截器使用详解及流程分析
拦截器简介什么是拦截器Spring中的拦截器(Interceptor) ,用于拦截控制器方法的执行,可以在方法执行前后,添加自定义逻辑,类似于AOP编程思想。实际应用中,可以使用拦截器实现,认证授权、日志记录、字符编码转换,敏感词过滤等等。和过滤器有什么区别过滤器也能实现拦截功能,具体和拦截器有什么不同呢1. 触发机制过滤器Filter是在请求进入容器后,但在进入servlet之前进行预处理,请求结束是在servlet处理完以后。拦截器 Interceptor 是在请求进入servlet后,原创 2021-09-14 15:40:44 · 3303 阅读 · 1 评论 -
Spring MVC系列(10)-使用fastjson自定义消息转换器
前置知识Content-Type使用fastjson思路Spring MVC提供了很多消息转换器,默认使用的是MappingJackson2HttpMessageConverter转换器,使用Jackson进行转换。如果我们想使用fastjson该如何设置呢?spring MVC提供了WebMvcConfigurer接口,可以自定义配置类,实现configureMessageConverters或者extendMessageConverters就可以添加自定义消息转换器了。 /** * 配置原创 2021-09-14 10:47:04 · 3675 阅读 · 0 评论 -
Spring MVC系列(9)-HttpMessageConverter报文转换流程源码解析
HttpMessageConverters类HttpMessageConverters是org.springframework.boot.autoconfigure.http下的一个类,是Spring Boot提供的管理应用程序中使用HttpMessageConverter的Bean。提供一种方便的方法来添加和配置额外的HttpMessageConverter到 Web 应用程序。如果需要,可以使用特定的HttpMessageConverters注册此 bean 的实例,否则将使用默认转换器。Htt原创 2021-09-13 17:24:07 · 1800 阅读 · 0 评论 -
Spring MVC系列(8)-HttpMessageConverter之使用分析
HTTP报文HTTP请求流程HTTP超文本传输协议(HyperText Transfer Protocol)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理有如下的过程:(1)客户与服务器建立连接;(2)客户向服务器提出请求;(3)服务器接受请求,并根据请求返回相应的文件作为应答;(4)客户与服务器关闭连接。HTTP报文用于HTTP协议交互的信息被称为HTTP报文。请求端的HTTP报文叫请求报文,响应端的叫响应报文原创 2021-09-13 10:47:01 · 843 阅读 · 3 评论 -
Spring MVC系列(7)-DispatcherServlet处理请求流程源码分析
前言在之前我们了解到了DispatcherServlet是如何初始化的,接下来我们了解下他是如何处理请求的呢?Tomcat处理请求流程首先,我们了解下Tomcat启动后是如何处理HTTP请求的?文档来源网络通信三要素IP地址:计算机在网络上的唯一标示,通过ip找到通信所在的机器端口:端口是一台机器上不同程序的标示传输协议:双方都遵守的传输数据的格式HTTP工作原理HTTP协议是浏览器与服务器之间的数据传送协议。作为应用层协议,HTTP是基于TCP/IP协议来传递数据的(HTML文件、原创 2021-09-11 22:56:23 · 718 阅读 · 0 评论 -
Spring MVC系列(6)-DispatcherServlet初始化源码分析
前言我们知道servlet程序需要使用servlet容器运行,那么DispatcherServlet是如何在spring boot内嵌tomcat容器进行初始化的呢?1. 启动tomcat首先点击启动类,启动spring boot 程序,然后进入了ServletWebServerApplicationContext类的createWebServer方法,开始创建一个web服务器。 private void createWebServer() { WebServer webSer原创 2021-09-10 17:19:35 · 320 阅读 · 0 评论 -
Spring MVC系列(5)-SpringMVC执行流程及相关Servlet类简介
Spring MVC系列(13)-SpringMVC执行流程原创 2021-09-10 16:05:16 · 1060 阅读 · 0 评论 -
Spring MVC系列(4)-应用RESTful
RESTful什么是RESTREST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移。首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一。 他在论文中提到:“我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。REST指的是一组架构约束条件和原则。” 如果一个架构符合REST的约束条件和原原创 2021-09-10 09:54:47 · 251 阅读 · 0 评论 -
Spring MVC系列(3)- 获取请求参数的多种方式
前言在HTTP请求时,参数传递是及获取,是非常重要的一项功能。SpringMVC提供了很多种方式,具体采用哪种,可以根据实际需求选择。这里按照常用级别列出几种。1. 通过方法形参获取可以在控制器方法的形参位置,设置当前请求的参数。当访问映射到该方法时,DispatcherServlet会将请求中的参数赋值给相同名字的形参。 @RequestMapping(value = {"getUser"}, method = {RequestMethod.GET}) public Objec原创 2021-09-09 17:33:11 · 586 阅读 · 0 评论 -
Spring MVC系列(2)-@RequestMapping使用详解
@RequestMapping我们只要编写一个Controller接口,就轻松的实现了请求响应,其中@RequestMapping注解起到了至关重要的作用。@RestController@RequestMapping("/mvc")public class MvcController { @RequestMapping("/test") public Object test() throws IOException { return "test"; }}原创 2021-09-09 17:14:36 · 559 阅读 · 0 评论