请求与响应

news/2024/12/12 5:19:34/

设置映射路径 

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

@Controller
@RequestMapping("/book")
public class BookController {//设置当前操作的访问路径@RequestMapping("/save")//设置当前注解的返回值类型,将返回的内容整体作为响应给到外面@ResponseBodypublic String save(){System.out.println("springMvc is running");return "{'moudle':'springmvc'}";}
}
@Controller
@RequestMapping("/user")
public class UserController {//设置当前操作的访问路径@RequestMapping("/save")//设置当前注解的返回值类型,将返回的内容整体作为响应给到外面@ResponseBodypublic 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")//设置当前注解的返回值类型,将返回的内容整体作为响应给到外面@ResponseBodypublic 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")//设置当前注解的返回值类型,将返回的内容整体作为响应给到外面@ResponseBodypublic String save(String name){System.out.println("Post is running"+name);return "wo shi post";}
}
    //设置过滤器解决中文乱码问题@Overrideprotected 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容器添加字符过滤器使其可以处理中文)

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

参数种类

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

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

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

1、传递pojo

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

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

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

接受不产生变化

传递需要产生变化

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

 3、传递数组信息

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

以数组的方式进行接受

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

4、传递一个集合

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

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

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

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

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

传递Json数据


http://www.ppmy.cn/news/467760.html

相关文章

Spring------AOP

Spring AOP AdviceAspectj Advice 通知 MethodBeforeAdvice 前置通知 AfterReturingAdvice 后置通知 MethodInterceptor 环绕通知 ThrowAdvice 异常抛出通知 AfterAdvice 最终通知 MethodBeforeAdvice 前置通知 public interface MethodBeforeAdvice extends BeforeAd…

选择全光谱护眼灯好吗?五款护眼灯推荐

孩子才上一年级&#xff0c;所以呢&#xff0c;喜欢跟我们一起看书写字。当然啦&#xff0c;不管是在餐厅三个人一起看书写字&#xff0c;还是她单独在自己的书桌上都需要一盏台灯。为了孩子的眼睛健康&#xff0c;最好选择全光谱护眼台灯最好。 下面推荐五款全光谱护眼台灯可…

护眼用什么样的台灯灯光是好的,精心推荐五款护眼灯

护眼台灯除了要挑选无频闪、无蓝光伤害、无辐射伤害外还应注意什么?相信很多家长对这个问题不甚了解。在回答这个问题之前&#xff0c;我先科普一个小常识&#xff0c;据科学研究表明&#xff0c;自然光照相比较人照光源对孩子的学习有更积极的作用&#xff0c;其背后的原因就…

护眼灯真的可以保护眼睛吗?2022双十二选哪款护眼灯对孩子眼睛好

传统的台灯只是单一色光&#xff0c;无法调节台灯的照度和色温&#xff0c;长时间使用不但不可以护眼&#xff0c;而且还会导致近视、散光等各种问题的发生。现在的护眼台灯大多都是使用led灯珠作为发光源&#xff0c;不但本身比较高效节能&#xff0c;而且光线可调控&#xff…

护眼灯真能保护眼睛吗?2022双十二买什么样的护眼灯对眼睛好

护眼灯对于保护眼睛的效果&#xff0c;比起传统的普通台灯更科学、更直观。我们都知道&#xff0c;传统的普通台灯大多都是白炽灯&#xff0c;采用加热钨丝发热发光的原理来提供照明&#xff0c;这种发光方式不但效率低下、浪费能源、污染环境&#xff0c;而且光线也是特别单一…

StencilJs学习之组件装饰器

stenciljs 可以方便的构建交互式组件 支持以下装饰器 componentstatepropwatchmethodelementeventlisten Component 装饰器 Component 是一个装饰器&#xff0c;它将 TypeScript 类指定为 Stencil 组件。 每个模板组件在构建时都会转换为 Web component。 import { Compone…

世界名牌简介

品牌名称&#xff1a;夏奈尔&#xff08;chanel&#xff09; http://www.chanel.com 品牌档案&#xff1a;   &#xff08;1&#xff09;创始人&#xff1a;gabriellechanel夏奈尔&#xff08;2&#xff09;注册地&#xff1a;法国巴黎&#xff08;1913年&#xff09;   &a…

手机业务的趋势:移动互联

http://tech.sina.com.cn/mobile/n/2009-05-14/13583092444.shtml 诺基亚开发伙伴峰会见闻&#xff1a;移动互联山雨欲来 http://www.sina.com.cn 2009年05月14日 13:58 通讯世界 作者&#xff1a;本刊记者 姜艳青 摩纳哥报道 4月28日&#xff5e;29日&#xff0c;诺基亚20…