请求与响应

news2024/11/26 13:35:03

设置映射路径 

在不同的bean中可能会出现相同名字的路径,这样的情况会产生冲突,为了解决这个冲突我们可以设置模块名作为请求路径前缀

@Controller
@RequestMapping("/book")
public class BookController {
    //设置当前操作的访问路径
    @RequestMapping("/save")
    //设置当前注解的返回值类型,将返回的内容整体作为响应给到外面
    @ResponseBody
    public String save(){
        System.out.println("springMvc is running");
        return "{'moudle':'springmvc'}";
    }
}
@Controller
@RequestMapping("/user")
public class UserController {
    //设置当前操作的访问路径
    @RequestMapping("/save")
    //设置当前注解的返回值类型,将返回的内容整体作为响应给到外面
    @ResponseBody
    public String save(){
        System.out.println("springMvc is running");
        return "{'moudle':'springmvc'}";
    }
}

get请求与post请求接受发送数据

首先,我们需要下载一个工具来帮助我们发送数据进行测试

叫做postman

下载好了以后先去注册,登陆进去以后用就完了很简单

Get请求的接受与发送

get请求发送的内容包含在他的请求行中,(get请求没有请求体)

 get请求参数接受,只需要在方法设置形参即可接收

//声明控制层的bean的注解
@Controller
@RequestMapping("/user")
public class UserController {
    //设置当前操作的访问路径
    @RequestMapping("/save")
    //设置当前注解的返回值类型,将返回的内容整体作为响应给到外面
    @ResponseBody
    public String save(String str,int age){
        System.out.println("str is"+str);
        System.out.println("age is "+age);
        //中文会出错!!稍后来解决
        return "测试成功了吗"+str+age;
    }
}

Post请求的发送和接收

Post请求需要放在请求体里进行发送,我们选择Boddy下的第三个选项

(第二个选项主要用来传送文件) 

Post请求的接受,同样给方法设置形参就可以 

@Controller
@RequestMapping("/book")
public class BookController {
    //设置当前操作的访问路径
    @RequestMapping("/save")
    //设置当前注解的返回值类型,将返回的内容整体作为响应给到外面
    @ResponseBody
    public String save(String name){
        System.out.println("Post is running"+name);
        return "wo shi post";
    }
}
    //设置过滤器解决中文乱码问题
    @Override
    protected Filter[] getServletFilters(){
        CharacterEncodingFilter filter=new CharacterEncodingFilter();
        filter.setEncoding("utf-8");
        return new Filter[]{filter};
    }

 如何解决GET和Post传递来的中文乱码问题

首先我们看看不使用Spring框架如何解决该问题

Post协议

使用字符缓冲流来输入数据,因此我们可以给缓冲流定义写入格式(utf-8)

Get协议

采用的是ISO-8859-1编码成二进制,而我们的Idea默认使用(utf-8),会造成冲突。

解决方法:我们将得到的异常文字通过ISO-8859-1重新编码成为二进制,再通过二进制转化做utf-8。(这是因为我们无法修改Tomcat的编码方式)

Spring框架下的解决方法

在SpringMvcConfig配置类中重写过滤器方法

(对web容器添加字符过滤器使其可以处理中文)

    //设置过滤器解决中文乱码问题
    @Override
    protected Filter[] getServletFilters(){
        CharacterEncodingFilter filter=new CharacterEncodingFilter();
        filter.setEncoding("utf-8");
        return new Filter[]{filter};
    }

参数种类

如果我们传递的参数是name,但是我们想要以不同的名称接受我们该如何传递呢?

我们可以使用@Requestparam("传递来参数的名字")注解进行声明

    @RequestMapping("/save")
    //设置当前注解的返回值类型,将返回的内容整体作为响应给到外面
    @ResponseBody
    public String save(@RequestParam("name") String UserName){
        System.out.println("Post is running“+UserName);
        return "wo shi post";
    }

1、传递pojo

传递时,变量名和pojo属性相同,传递进来会自动封装成对象

    @RequestMapping("/pojoParm")
    @ResponseBody
     public String pojoParm(User user){
        System.out.println(user);
        return "pojo is running";
     }

2、传递pojo类(这个pojo类中的属性含引用数据类型)

接受不产生变化

传递需要产生变化

以引用类型.属性名的方式进行添加

 3、传递数组信息

传递时需要以统一的变量名进行传递

以数组的方式进行接受

    @RequestMapping("/likes")
    @ResponseBody
    public String like(String[] like){
        System.out.println(Arrays.toString(like));
        return "like is running";
    }

4、传递一个集合

集合作为一个引用数据类型,Spring会自动将其作为一个对象进行处理,对于对象的处理方法是先创建一个对象再把对象其属性set进去。

我们希望外部的内容作为集合的数据出现,而不是给“集合”这种对象的属性进行赋值。

我们可以使用注解@RequestParam进行声明

注意:这里传入的集合必须是List,博主尝试了ArrayList报错了,还没尝试其他集合。

    @RequestMapping("/listParam")
    @ResponseBody
    public String like(@RequestParam List<String> list){
        System.out.println(list);
        return "list is running";
    }

传递Json数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/662661.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Rust语言从入门到入坑——(4)Rust语法(下)

文章目录 0 引入1、结构体1. 1 结构体1. 2 结构体方法1. 3 元组结构体 2、枚举类2.1 match2.2 Option 枚举类 3、集合3.1 向量&#xff08;Vector&#xff09;3.2 字符串&#xff08;String&#xff09;3.1 映射表&#xff08;Map&#xff09; 4、总结 0 引入 在这里我们需要介…

DOM4J解析web.xml文件,实例化Servlet

1、DOM4J解析web.xml文件实例化Servlet 原理分析&#xff1a;我们解析用户在地址栏中输入的地址信息如add.do,用这个地址去web.xml文件中通过DOM4J技术&#xff0c;解析判断add.do对应的是哪个url-pattern&#xff0c;找到后获取对应的servlet-name。在用这个servlet-name去找…

servlet规范过滤器

我们可以把servlet程序看作是一个最终要执行的目标。我们可以使用过滤器filter来添加过滤代码&#xff0c;这个过滤代码可以添加到servlet执行之前&#xff0c;也可以添加到servlet执行之后。Filter可以做到在servlet这个目标程序执行之前过滤&#xff0c;也可以在目标程序执行…

【深度学习】BERT变种—百度ERNIE 3.0

预训练的模型在各种自然语言处理&#xff08;NLP&#xff09;任务中取得了最先进的成果。扩大预训练语言模型的规模可以提高其泛化能力。然而&#xff0c;现有的大规模预训练模型&#xff0c;主要依赖纯文本学习&#xff0c;缺乏大规模知识指导学习&#xff0c;模型能力存在局限…

尚硅谷大数据Flink1.17实战教程-笔记02【部署】

尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】视频地址&#xff1a;尚硅谷大数据Flink1.17实战教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据Flink1.17实战教程-笔记01【Flink概述、Flink快速上手】尚硅谷大数据Flink1.17实战教程-笔记02【Flink部署】尚硅谷…

pycharm-设置python文件模板及常用的模板内容使用

pycharm设置文件和代码&#xff08;File and Code Templates&#xff09;模板步骤如下&#xff1a; 1.pycharm工具栏"file"->"Settings"->"Editor"->"Code Style"->"File and Code Templates",点击右侧python …

Badboy内置浏览器,提示脚本错误解决方法

Badboy内置浏览器&#xff0c;提示脚本错误解决方法 使用Badboy录制脚本的时候&#xff0c;浏览器弹框提示 “&#xff01;当前页面的脚本发生错误。” 使用Badboy录制脚本的时候&#xff0c;弹框提示“当前页面的脚本发生错误” 解决方案1&#xff1a;在弹窗中选中不再弹出…

Java IO 学习总结(三)BufferedInputStream 缓冲流

Java IO 学习总结&#xff08;一&#xff09;输入流/输出流 Java IO 学习总结&#xff08;二&#xff09;File 类 Java IO 学习总结&#xff08;三&#xff09;BufferedInputStream 前言&#xff1a; 学习IO流&#xff0c;记录并分享。文章如有错误&#xff0c;恳请指正。 B…

云上使用 Stable Diffusion ,模型数据如何共享和存储

随着人工智能技术的爆发&#xff0c;内容生成式人工智能&#xff08;AIGC&#xff09;成为了当下热门领域。除了 ChatGPT 之外&#xff0c;文本生成图像技术更令人惊艳。 Stable Diffusion&#xff0c;是一款开源的深度学习模型。与 Midjourney 提供的直接将文本转化为图像的服…

基于JAVA的心理咨询预约系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 心理健康在现代社会中…

vue js vue3 uniapp日期操作工具类组件,格式化、加减日月年

官网文档 官网&#xff1a;https://momentjs.com/ 文档&#xff1a;https://momentjs.com/docs/ 安装 npm install moment -s全局引用 import moment from moment;//uniapp vue3 全局引用 app.config.globalProperties.$moment moment;日期格式 示例&#xff1a;YYYY-MM-…

Unity3d_shader_Outline()

1、[Unity] 引入“全局轮廓”&#xff0c;只需附加组件即可使用轮廓着色器 【Unity】コンポーネントをアタッチするだけでアウトラインシェーダが使用できる「Global Outline」紹介 - コガネブログ 下载&#xff1a;https://github.com/rickomax/globaloutline 2、[Unity] 綺…

latent-diffusion model环境配置,这可能是你能够找到的最细的博客了

文章目录 前言一、环境配置1.创建requirement.txt文件2.提前从Github上下载好taming-transformers和clip3.创建conda环境&#xff0c;并安装requirement.txt文件4.安装torch 1.85.本地下载Bert模型权重&#xff0c;修改加载Bert的代码6.测试环境 2.训练自己的LDM模型 前言 最近…

几个基于springboot在线服务过段时间突然停掉的原因

有几个基于springboot的服务今天发现突然停掉了&#xff0c;也不知道什么原因&#xff0c;所以只能看一下日志了 主要日志如下&#xff1a; 2023-06-17 14:26:21.775 DEBUG o.s.b.f.s.DefaultListableBeanFactory- Retrieved dependent beans for bean dataSource: [mybatisCo…

使用了并发工具类库,线程安全就高枕无忧了吗?

1、说明 在代码审核讨论的时候&#xff0c;我们有时会听到有关线程安全和并发工具的一些片面的观点和结论&#xff0c;比如“把 HashMap 改为 ConcurrentHashMap&#xff0c;就可以解决并发问题了呀”&#xff0c;“要不我们试试无锁的 CopyOnWriteArrayList 吧&#xff0c;性能…

并发线程 (2) - C++线程间共享数据【详解:如何使用锁操作】

系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 期待你的关注哦&#xff01;&#xff01;&#xff01; 快乐在于态度&#xff0c;成功在于细节&#xff0c;命运在于习惯。 Happiness lies in the attitude, s…

【机器学习】——神经网络与深度学习

目录 引入 一、神经网络及其主要算法 1、前馈神经网络 2、感知器 3、三层前馈网络&#xff08;多层感知器MLP&#xff09; 4、反向传播算法 二、深度学习 1、自编码算法AutorEncoder 2、自组织编码深度网络 ①栈式AutorEncoder自动编码器 ②Sparse Coding稀疏编码 …

(一)OC对象本质---内存布局

Apple OSS Distributions GitHubApple Open Source 开源源码链接 面试题1 一个NSObject对象占用多少内存&#xff1f; 系统分配了16个字节给NSObject对象&#xff08;通过malloc_size函数获得&#xff09; ​​​​​​​但NSObject对象内部只使用了8个字节的空间&#xf…

【状态估计】粒子滤波器、Σ点滤波器和扩展/线性卡尔曼滤波器研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…