http header content-type 和Java后台处理

http中的常用的content-type有:

1.GET 请求

GET 请求不存在请求实体部分,键值对参数放置在 URL 尾部,因此请求头不需要设置 Content-Type 字段

非 ASCII 码会自动进行编码转换,例如发送请求:www.bilibili.com?hehe=你的我的

2.post 请求

  1. JSON: application/json
  2. XML: text/xml
  3. 纯文本: text/plain
  4. html: text/html
  5. application/x-www-form-urlencoded,会将表单内的数据转换拼接成 key-value 对(非 ASCII 码进行编码)
  6. multipart/form-data,将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件

那么主要的几种分别对应后端java的处理方式为:

application/x-www-form-urlencoded;charset=UTF-8 如果是单个参数的话,后端可以用@RequestParam (该注解修饰的参数默认为必传) 也可以什么都不写。如果是用对象封装的实体,那么什么都不用写。

application/json;charset=UTF-8 表明传递的是json类数据,那么后端的参数应该用@RequestBody 修饰。

multipart/form-data 表明是上传文件,后端应该用使用@RequestParam注解修饰。

@requestBody注解作用

1、@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。
2、通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上,当然,也可以将其分别绑定到对应的字符串上。

例如:

 $.ajax({
        url:"/login",
        type:"POST",
        data:'{
        		"userName":"admin",
        		 "pwd":"admin123"
        		 }',
        content-type:"application/json charset=utf-8",
        success:function(data){
          alert("request success ! ");
        }
    });
@requestMapping("/login")
public void login(@RequestBody String userName,@RequestBody String pwd){
  System.out.println(userName+" :"+pwd);	
}

或者说,当我有个User类,拥有userName 和pwd 两个字段,则可以修改为:

@requestMapping("/login")
public void login(@requestBody User user){
   System.out.println(userName+" :"+pwd);
}

需要注意的是,JSON字符串中的key必须对应user中的属性名,否则是请求不过去的。

@RequestParam 注解作用

@RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)

语法:

语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)
 
value:参数名
 
required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
 
defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值

如:

 @RequestMapping("test")
    public void test(@RequestParam("name")String name){
       System.out.println("name:"+name);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值