SpringMVC--07HttpMessageConverter

5分钟搞定!用L型匹配电路优化窄带天线性能(附Smith圆图实操) 本文针对窄带天线阻抗匹配难题,提供了一套5分钟快速解决方案。通过详解L型匹配电路的核心原理,并结合Smith圆图这一射频工程师的“瑞士军刀”,手把手指导如何选择拓扑、计算元件值并进行实际调试,旨在帮助硬件工程师高效优化天线性能,实现最大功率传输。 阅读详情

HttpMessageConverter

这是一个消息转换器,用于java对象和请求体,响应体内容直接的相互转换

使用原生Servlet API完成AJAX请求

web.xml

<!--字符编码过滤器-->
<filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <!--初始化参数-->
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceRequestEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>forceResponseEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<!--springmvc控制器-->
<servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

springmvc-servlet.xml

<!--导入扫描包-->
<context:component-scan base-package="com.atli"></context:component-scan>

<!--thymeleaf视图解析器-->
<bean id="thymeleafViewResolver" class="org.thymeleaf.spring6.view.ThymeleafViewResolver">
    <!--作用与视图渲染的过程中,可以设置视图渲染后输出时采用的编码字符集-->
    <property name="characterEncoding" value="UTF-8"></property>
    <!--如果配置多个视图解析器,它来决定优先使用那个视图解析器,值越小优先级越高-->
    <property name="order" value="1"></property>
    <!--当ThymeleafViewResolver渲染模板是,会使用该模板引擎来解析,编译和渲染模板-->
    <property name="templateEngine">
        <bean class="org.thymeleaf.spring6.SpringTemplateEngine">
            <!--用于指定Thymeleaf 模板引擎使用的模板解析器。模板解析器负责根据模板位置、目标资源名称,文件编码等信息,加载模板并对其进行解析-->
            <property name="templateResolver">
                <bean class="org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver">
                    <!--设置模板文件的位置(前缀)-->
                    <property name="prefix" value="/WEB-INF/templates/"></property>
                    <!--设置模板文件后缀,thymeleaf文件扩展名不一定是html,也可以是其他,如txt-->
                    <property name="suffix" value=".html"></property>
                    <!--设置模板引擎类型,列如HTML,TEXT,JAVASCRIPT,CSS等-->
                    <property name="templateMode" value="HTML"></property>
                    <!--用于模板文件在读取和解析过程中采用的编码字符集-->
                    <property name="characterEncoding" value="UTF-8"></property>
                </bean>
            </property>
        </bean>
    </property>
</bean>

<!--开启注解支持-->
<mvc:annotation-driven />
<!--视图控制器-->
<mvc:view-controller path="/" view-name="index" />
<!--静态资源处理-->
<mvc:default-servlet-handler/>

AJAXController.java

@Controller
public class AJAXController {
    @GetMapping("/ajax")
    public void ajax(HttpServletResponse response) throws IOException {
        PrintWriter writer = response.getWriter();
        writer.println("from ajax");
    }
}

index.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script th:src="@{/static/vue3.js}"></script>
    <script th:src="@{/static/axios.js}"></script>
</head>
<body>
<div id="App">
    <button name="message" onclick="getMessage" value="check me"></button>
    <h1>{{message}}</h1>
</div>

<script th:inline="javascript">
    Vue.createApp({
        data(){
            return {
                message : ''
            }
        },
        methods:{
            /*ajax请求*/
            async getMessage(){
               let response = await axios.get('/ajax')
                this.message=response.data
            }
        }
    }).mount("#App")
</script>
</body>
</html>

@ResponseBody注解

上方写到的控制器方法采用原生的Servlet API来完成AJAX请求有诸多不便

此时我们只需要一个@ResponseBody注解就可以完成上述工作,底层实现依旧是使用原生的API进行


// @Controller
// public class AJAXController {
//     @GetMapping("/ajax")
//     public void ajax(HttpServletResponse response) throws IOException {
//         PrintWriter writer = response.getWriter();
//         writer.println("from ajax");
//     }
// }


@Controller
@ResponseBody
public class AJAXController {
    @GetMapping("/ajax")
    public String ajax(){
        return "from ajax"
    }
}
// 该程序使用的是StringHttpMessageConverter消息转换器

@ResponseBody注解不仅能转换字符串还能将java对象与json串进行相互转换(需要添加jackson依赖)

@Controller
@ResponseBody
public class AJAXController {
    @GetMapping("/ajax")
    // 假设有一个User类属性为name和age
    public User ajax(){
        return new User("li","12");
    }
}

通过上述代码,前端会收到[{'name':'li'},{'age':12}]的json格式字符串
此时底层使用了MappingJackon2HttpMessageConverter消息转换器

对于FormHttpMessageConverter消息转换器在之前就有所涉及,即将响应体中数据转换为java对象

// request body: name=li&age=12
// 若前端是发送的json格式数据那么需要在前端响应头中添加
// xhr.setRequestHeader("Content-Type","application/json");
// 并且在形参前添加@RequestBody注解
@Controller
public class AJAXController(User user) {
}

@RestController注解

这是一个复合注解,用于类上,相当于@Controller+@RequestBody

@RequestBody注解

该注解用于控制器方法的参数上,使用该注解后,会将请求体中的数据直接赋值给被注解的变量(String)

// requestBody: from user
@RequestMapping("/save")
public String save(@RequestBody String requestBodyStr){
    // 会输出 from user
    System.out.println(requestBodyStr);
    return 'success';
}

同时,该注解最常用的方法是将前端传递的JSON格式数据转换为对象(注意涉及json转换的都需要相关依赖)

// requestBody: [{'name':'li'},{'age':12}]
@RequestMapping("/save")
@RequestBody
public String save(@RequestBody User user){
    return 'success';
}

RequestEntity类

该类封装了整个请求协议,使用时直接添加在处理器方法的形参上,可以用于获取所有的请求信息

ResponseEntity类

该类封装了整个响应协议,可以实现自定义的响应,使用同RequestEntity类

来!简单了解一下计算机发展史! ​ 1936年,英国数学家阿兰・麦席森・图灵提出了一种抽象的计算模型——图灵机( Turing machine)。图灵机,又称图灵计算机,即将人们使用纸笔进行数学运算的过程进行抽象,由一个虚拟的机器替代人类进行数学运算。​ 图灵机是一个抽象的机器,它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。 阅读详情

相关推荐

模电实验室:手把手教你调试共射放大电路静态工作点(避免波形失真)

本文详细介绍了共射放大电路静态工作点的调试方法,帮助避免波形失真问题。从实验准备、电路搭建到静态工作点测量,提供了实用的电阻选值策略和常见波形失真解决方案,适合电子相关专业学生和硬件工程师参考学习。

weixin_42531128的博客 375

HttpMessageConverter

HttpMessageConverter HttpMessageConverter,报文信息转换器,将请求报文转换为Java对象,或将Java对象转换为响应报文。 HttpMessageConverter提供了两个注解和两个类型:@RequestBody,@ResponseBody,RequestEntity,ResponseEntity。 1、@RequestBody @RequestBody可以获取请求体,需要在控制器方法设置一个形参,使用@RequestBody进行标识,当前请求的请求体就会为当前注解

Hiyiin的博客 503

博途的HMI(触摸屏)的应用

触摸屏(HMI):用于控制PLC,可认为是小型上位机(用于控制PLC的都可认为是上位机)上位机(PC Station):将触摸屏升级为电脑----工控机(工业控制的机器)用博途编写西门子的触摸屏和上位机。

王阿妹小天才的博客 2674

07-SpringMVC HttpMessageConverter报文信息转换器

  HttpMessageConverter(报文信息转换器),将请求报文转换为Java对象,或将Java对象转换为响应报文,HttpMessageConverter提供了两个注解和两个类型:@RequestBody、@ResponseBody、RequestEntity、ResponseEntity。 1.@RequestBody @RequestBody可以获取请求体,需要在控制器方法设置一个形参,使用@RequestBody进行标识,当前请求的请求体就会为当前注解所标识的形参赋值. <!DOCT

鸣鼓ming的博客 573

从HAL库SPI状态机机制剖析:为什么你的DMA发送会卡在BUSY状态?

本文深入剖析了STM32 HAL库中SPI状态机机制导致DMA发送卡在BUSY状态的常见问题。通过分析状态机设计原理,揭示了混合使用阻塞方式和DMA方式时状态切换冲突的根源,并提供了三种实战解决方案:正确配置SPI中断、使用HAL_SPI_Abort()函数以及手动管理状态机,帮助开发者实现稳定流畅的SPI DMA通信。

bush的博客 268

AutoCAD 2024 LISP实用技巧:自定义快捷命令与高效绘图工具集

本文详细介绍了如何在AutoCAD 2024中部署和使用LISP脚本,打造高效绘图工具集。通过自定义快捷命令,如WFF(超级文字查找替换)、GQT(图层隔离)和LLTJ(智能长度统计),可大幅简化图层管理、文字编辑和测量统计等重复性操作,显著提升绘图效率。

gan8painter的博客 317

SpringMVC之HttpMessageConverter

HttpMessageConverter,报文信息转换器,将请求报文转换为Java对象,或将Java对象转换为响应报文HttpMessageConverter提供了两个注解和两个类型:@RequestBody,@ResponseBody,RequestEntity,以上就是SpringMVC之HttpMessageConverter的相关知识点,希望对你有所帮助。积跬步以至千里,积怠惰以至深渊。时代在这跟着你一起努力哦!

哥的时代,为你保驾护航 1539

Linux 系统管理员必备:Chrome 企业版离线部署全攻略(含 RPM/DEB 双版本)

本文详细介绍了Linux系统管理员如何离线部署Chrome企业版,涵盖RPM和DEB双版本。从获取官方离线安装包到静默安装、权限配置及企业级策略管理,提供全流程解决方案,特别适合Ubuntu等DEB系系统管理员参考。

f9g0h的博客 482

springMVC之HttpMessageConverter

HttpMessageConverter,报文信息转换器,将请求报文转换为Java对象,或将Java对象转换为响应报文HttpMessageConverter提供了两个注解和两个类型:@RequestBody,@ResponseBody,RequestEntity,ResponseEntity。以上就是HttpMessageConverter有关讲解。

浩泽学编程的博客 1427

AI爬虫:一文讲通AI爬虫技术和原理,及34个AI爬虫工具推荐

AI 爬虫 是一种结合了传统网络爬虫技术和人工智能(AI)技术的工具,能够更智能、高效地从网页中提取和处理数据。与传统爬虫相比,AI 爬虫能够更好地处理动态内容、复杂网页结构以及非结构化数据,同时具备数据清洗、分类、情感分析等高级功能。

数据知道的博客 1万+

HMC7044调试指南与FPGA开发

最后,我们介绍了在FPGA开发中使用HMC7044的几个常见应用场景,包括时钟分配、时钟同步、高精度时钟生成和时钟域交叉。根据您的应用需求,您可以选择不同的时钟分配方案,例如使用PLL生成特定频率的时钟信号,或者通过分频器生成较低频率的时钟信号。HMC7044可以提供精确的时钟同步功能,确保各个FPGA板之间的时钟信号保持一致,从而实现可靠的数据传输和协同操作。HMC7044可以实现时钟域之间的交叉,通过生成和分配不同频率的时钟信号,使得不同时钟域的模块能够协同工作。FPGA开发中的HMC7044应用。

CqpFsharp的博客 3607

springMVC中框架对HttpMessageConverter的选择原理

@RequestBody, @ResponseBody 注解详解(转)引言:关于简述httpMessageConvert原理解释的帖子:https://blog.youkuaiyun.com/j080624/article/details/70245741,这个帖子中总结的让人疑惑,就是springMVC具体怎么去选择httpMessageConvert的,有句总结的话不好理解:Spring首先根据请求头或响...

zbajie001的博客 1万+

KingSCADA3.8保姆级安装教程

大家好,我是雷工!最近开始学习KingSCADA,今天这篇详细记录安装KingSCADA3.8的过程。首先下载需要的安装版本,此处以从官网下载的最新版本KingSCADA3.8为例,双击:Setup.exe;

做有价值的事,积累有价值的笔记! 1万+

SpringMVC8-HttpMessageConverter

HttpMessageConverter,报文信息转换器,将请求报文转换为Java对象或将Java对象转换为响应报文HttpMessageConverter提供了两个注解和两个类型:@RequestBody,@ResponseBody,RequestEntity,ResponseEntity

m0_73902080的博客 913

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

SpringMVC-RESTful与HttpMessageConverter

RESTful REST:Representational State Transfer,表现层资源状态转移。 资源:是一种看待服务器的方式,即,将服务器看作是由很多离散的资源组成。每个资源是服务器上一个可命名的抽象概念。一个资源可以由一个或多个URI来标识。URI既是资源的名称,也是资源在Web上的地址。 资源的表述:是一段对于资源在某个特定时刻的状态的描述。可以在客户端-服务器端之间转移(交换)。资源的表述可以有多种格式,例如HTML/XML/JSON/纯文本/图片/视频/音频等 状态转移:在客

zl979899的博客 763

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

SpringMVC 入门到实战 HttpMessageConverter 65-74

SpringMVC 入门到实战 HttpMessageConverter 65-74

道友 471

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SpringMVC——第7章:HttpMessageConverter

本文深入剖析SpringMVC中HttpMessageConverter的核心机制,详解@ResponseBody和@RequestBody注解的工作原理与使用场景。通过AJAX交互案例,对比StringHttpMessageConverter与MappingJackson2HttpMessageConverter的差异,并完整演示如何实现JSON数据与Java对象的双向转换,帮助开发者掌握现代Web开发中的数据交互技术。

m0_73941339的博客 1312

SpringMVC笔记之HttpMessageConverter

8 HttpMessageConverter HttpMessageConverter,报文信息转换器,它有两个作用: 将请求报文转换为Java对象 或将Java对象转换为响应报文 HttpMessageConverter提供了两个注解和两个类型:@RequestBody,@ResponseBody,RequestEntity,@ResponseEntity 8.1 环境准备 首先,新建一个Moodle,然后修改pom.xml内容如下 <?xml version="1.0" encoding="U

qq_48238787的博客 891

关于SpringMvc中HttpMessageConverter的理解

版本springboot-2.2.6 HttpMessageConverter在SpringMVC中的作用 最近通过configureMessageConverters重写HttpMessageConverter时候,通过浏览器请求出现了乱码,响应头也从Content-Type :application/json 变成Content-Type: text/html,下面是代码片段 // 字符串 StringHttpMessageConverter stringHttpMess

weixin_43316101的博客 872

SpringMVC-HttpMessageConverter的使用

SpringMVC-HttpMessageConverter的使用

m0_62609939的博客 729

SpringMVC:HttpMessageConverter

RequestEntity封装请求报文的一种类型,需要在控制器方法的形参中设置该类型的形参,当前请求的请求报文就会赋值给该形参,可以通过getHeaders()获取请求头信息,通过getBody()获取请求体信息。@RestController注解是springMVC提供的一个复合注解,标识在控制器的类上,就相当于为类添加了@Controller注解,并且为其中的每个方法添加了@ResponseBody注解。d>将Java对象直接作为控制器方法的返回值返回,就会自动转换为Json格式的字符串。

时间如瑾 代码如诗 1659

Spring MVC__HttpMessageConverter、拦截器、异常处理器、注解配置SpringMVC、SpringMVC执行流程

在 SpringMVC 的核心配置文件中开启 mvc 的注解驱动,此时在 HandlerAdaptor 中会自动装配一个消息转换器:MappingJackson2HttpMessageConverter ,可以将响应到浏览器的 Java 对象转换为 Json 格式的字符串。在 Servlet3.0 环境中,容器会在类路径中查找实现 javax.servlet.ServletContainerInitializer 接口的类,如果找到的话就用它来配置Servlet 容器。

qq_45606619的博客 2000

SpringMVC的HttpMessageConverter

前提: 从浏览器向服务器发送请求时,发送的数据都是字符串; 浏览器接收到服务器的响应时,接收的数据也是字符串; 也就是说:Http请求报文和响应报文其实都是字符串,意味着浏览器和服务器是通过交换原始文本进行通信的。 现象: 请求报文到达SpringMVC后 ,转换成了java对象; 响应在从SpringMVC 出去前也是java对象; 这就说明:存在一个字符串到java对象的转化问题...

ITWANGBOIT的博客 392

SpringMvc之HttpMessageConverter转换器

转载请标明出处:https://blog.youkuaiyun.com/victoylin/article/details/79831544点击打开链接HttpMessageConverter&lt;T&gt;也是面试中常被提起的基础知识点。下面,小林带你了解一下。HttpMessgaeConverter是Spring3.0之后新增的接口:消息转换器HttpMessageConverter是用来处理reque...

冲动的仔bb博客 1616

SpringMVC——HttpMessageConverter

HttpMessageConverter 文章目录HttpMessageConverter1、@RequestBody2、RequestEntity3、@ResponseBody4、SpringMVC 处理 json5、SpringMVC 处理 ajax6、@RestController 注解(重要)7、ResponseEntity7.1、使用 ResponseEntity 实现文件下载7.2、文件的上传 HttpMessageConverter,报文信息转换器,将请求报文转换为 Java 对象,或将 Ja

前尘忆梦的博客 416

SpringMVC HttpMessageConverter

RequestEntity封装请求报文的一种类型,需要在控制器方法的形参中设置该类型的形参,当前请求的请求报文就会赋值给该形参,可以通过getHeaders()获取请求头信息,通过getBody()获取请求体信息。@RestController注解是springMVC提供的一个复合注解,标识在控制器的类上,就相当于为类添加了@Controller注解,并且为其中的每个方法添加了@ResponseBody注解。d>将Java对象直接作为控制器方法的返回值返回,就会自动转换为Json格式的字符串。

莫等闲 白了少年头 空悲切 1444
上一篇: SpringMVC--06RESTFul风格API
下一篇: SpringMVC--08文件上传与下载
sisyphoslee
博客等级 码龄7年 942粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值