注解-处理request

@RequestBody

boolean required() default true;

@RequestBody 将HTTP请求正文转换为适合的HttpMessageConverter对象。

作用:
i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;
ii) 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。

使用时机:

A) POST PUT方式提时, 根据 Content-Type的值来判断:

  1. application/x-www-form-urlencoded编码类型,可以用它解析数据。
  2. 其他格式,包括application/json, application/xml等,必须使用@RequestBody来处理);
  3. 不能处理 multipart/form-data编码类型;

request的body的数据编码格式由header的Content-Type指定;

    @ResponseBody
    @RequestMapping(value = "message/test.do", method = RequestMethod.POST)
    public Message test2(String event, @RequestBody String content)
    {
        Message message = new Message();
        message.datetime = new Date();
        message.event = event;
        message.content = content;
        messageManager.sendMessage(message);
        return message;
    }

@RequestHeader

将请求头的key-value键值对的value,绑定到controller方法的参数上。
使用方法

@RequestMapping(value = "/test", method = RequestMethod.GET)  
   public void getHello(
        @RequestHeader ("host") String host,  
        @RequestHeader ("Accept") String acceptType,  
        @RequestHeader ("Accept-Language") String acceptLang,  
        @RequestHeader ("Accept-Encoding") String acceptEnc,  
        @RequestHeader ("Cache-Control") String cacheCon,  
        @RequestHeader ("Cookie") String cookie,  
        @RequestHeader ("User-Agent") String userAgent)  
   {  
    System.out.println("Host : " + host);  
    System.out.println("Accept : " + acceptType);  
    System.out.println("Accept Language : " + acceptLang);  
    System.out.println("Accept Encoding : " + acceptEnc);  
    System.out.println("Cache-Control : " + cacheCon);  
    System.out.println("Cookie : " + cookie);  
    System.out.println("User-Agent : " + userAgent);  
   } 

@RequestMapping

用来处理请求地址映射,可以用于类或方法上。
用于类上表示类中的所有响应请求的方法都是以该地址作为父路径。

@RequestMapping有六个属性。

1、 value, method;

    String[] value() default {};
    RequestMethod[] method() default {};

value:代表请求的映射路径;

译文:
这个注解代表主要的映射,
它支持/myPath.do 这样的Servlet环境中的 URIS格式,
它也支持Ant风格的路径形式如:/mypath/*.do,
在方法级别上,也支持相对路径形式如: edit.do,
在类接口注解级别和方法级别上都支持占位符形式如: /${connect}

method: 指定请求的method类型

译文:
映射到HTTP请求的方法,用来缩小主映射。
支持GET, HEAD, POST, PUT, OPTIONS, DELETE, PATCH, TRACE 方法。
支持类级别和方法级别。
支持Servlet环境和Portlet2.0环境

2、 consumes,produces;

String[] consumes() default {};
String[] produces() default {};

consumes: 指定处理请求的提交内容类型(Content-Type)。

译文
映射请求的可生产媒体类型,用来缩小主映射范围。
这个格式可以是单媒体类型,也可以是一系列媒体类型。如:
consumes = “text/plain”
consumes = {“text/plain”, application/*}
表达式里可以用!,如 consumes = “!text/plain”
支持类类型和方法类型,如果类型类有,则会覆盖所有方法上的consumes。

produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;

译文
同上

3、 params,headers;

params: 指定request中必须包含某些参数值是,才让该方法处理。

译文

@RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, params="myParam=myValue")  

headers: 指定request中必须包含某些指定头信息,才能让该方法处理请求。

译文
映射请求的头,用来缩小主映射范围。
在任何环境中都是一样的格式如:My-Header = “myValue”。
他支持!写法和*符号,例子:
@RequestMapping(value =”/something”, headers = “content-type=text/*”)
它将会匹配有Content-Type的请求,并且值为text/html 或 text/plain 等。
支持类类型和方法类型,如果用在类类型上, 所有的方法类型映射将会继承类类型的头限制。
@see org.springframework.http.MediaType

@RequestParam

@RequestPart

@CookieValue

可以把Request header中关于cookie的值绑定到方法的参数上

//需要绑定的cookie的名称
String value() default "";

//默认为true,保证请求头不会丢失
boolean required() default true;

//这个默认值作为后备使用。隐式地提供一个默认值
String defaultValue() default ValueConstants.DEFAULT_NONE;

例如有如下Cookie值:
JSESSIONID=415A4AC178C59DACE0B2C9CA727CDD84

//JSESSIONID的值绑定到参数cookie上
@RequestMapping("/setCookie.do")  
public void setCookie(@CookieValue("JSESSIONID") String cookie)  {  
}  

@PathVariable;

用来演示获取某个商品的信息


@Controller
public class GoodsController {

    /**
     * 获取Goods信息, {goodsId} 这是占位符
     * @param goodsId
     * @return
     */
     @RequestMapping(value="/Goods/{goodsId}", method = RequestMethod.GET)
     public void getGoodsInfo(
         @PathVariable("goodsId") String id){
         System.out.println("goodsId : " + id);
     }

     /**
      * 应用正则表达式,获取截取的url
      * 正则表达式风格的URL路径映射,可以指定模板变量的数据类型,可以将规则写的相当复杂
      * @param regexp1
      * @return
      */
     @RequestMapping(value="/test/{regularExpressions:[a-z-]+}", method = RequestMethod.GET)
     public void getRegExp(@PathVariable("regularExpressions") String regularExpressions){
           System.out.println("URI Part 1 : " + regularExpressions);
     }
}

@PathVariable需要和 @RequestMapping一起连用

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值