[SpringMVC] HTTP 请求与响应过程底层源码解析

本篇文章主要根据两种常见的错误场景,深入 SpringMVC HTTP 请求与响应过程流程。而整个 SpringMVC HTTP 请求与响应过程涉及的内容远不止于此,如果读者对本文未涉及的内容有兴趣,欢迎与我交流。

提取主要内容如下:

  1. 常见的两种错误场景介绍;
  2. HTTP 请求与处理源码解析;
  3. 两种错误场景解决方案;
  4. 涉及的设计模式介绍。

相关版本:

  • Maven : apache-maven-3.3.9
  • SpringMVC :4.1.1.RELEASE
  • Tomcat-Maven-Plugin: 2.2

介绍方式: 代码 + 文字说明 + 源码截图(为减小篇幅,因此源码部分采用截图的方式)。读者阅读时,结合前面列出的流程图/主要操作步骤,再浏览。

本文中涉及的代码下载

一、常见的两种错误场景

1.场景1

jQuery 以 ajax 方式访问 SpringMVC 接口时,如未显示指定 Content-Type,则会显示 ‘415 (Unsupported Media Type)’ 错误。如:

415 错误

前端代码片段:

function fSave(url) {
   
    var obj = {
   };
    obj['cateId'] = $("input[name=cateId]").val();
    obj['cateName'] = $("input[name=cateName]").val();

    $.ajax({
   
        url: url,
        method: 'post',
        data: JSON.stringify(obj), // 以json字符串方式传递
        success: function(data) {
   
            console.log(data);
        },
        error: function(data) {
   
            console.log("error...");
            console.log(data);
        }
    });
}

后端接口代码片段为:

@RequestMapping(value = "/save-by-model-2", method = RequestMethod.POST)
@ResponseBody
public Category saveByModel2(@RequestBody Category category){
   
    categoryService.save(category);
    return category;
}

2.场景2

SpringMVC 接口定义返回 Json 格式数据时,一般有 字符串和对象 两种方式。而相同条件下,返回 Json 格式字符串时,中文会出现乱码。如:

中文乱码

前端代码片段:

function fSave(url) {
   
    var obj = {
   };
    obj['cateId'] = $("input[name=cateId]").val();
    obj['cateName'] = $("input[name=cateName]").val();

    $.ajax({
   
        url: url,
        method: 'post',
        contentType: 'application/json', 
        data: JSON.stringify(obj), // 以json字符串方式传递
        success: function(data) {
   
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值