SpringMVC(二十一):@RequestMapping使用详解

star2017 1年前 ⋅ 279 阅读

  @RequestMapping注解用来映射 URL 到控制器类或方法上,指示Spring用那一个类或方法来处理请求动作。
  当用来注解一个控制器类时,所有方法都将映射为相对类级别的请求,再找该类下方法级别的映射,最终的 URI类的映射地址拼接上方法映射地址

@RequestMapping 注解属性

value 属性

通过该属性将URL映射到类或方法上,该属性是 @RequestMapping 注解的默认属性,值是个字符串数组,

  • 如果只有唯一的属性,则可以省略属性名,如下示例,
  • 如果有超过一个属性,则必须写上 value 属性名称。
  • 该属性也可以是一个空字符串,则 URL 映射的是项目根路径,与单个斜杠映射相同。
RequestMapping(value={"/admin","/root"})//指定属性名,多个值
RequestMapping("/admin")//省略属性名
RequestMapping("/")//根路径
RequestMapping("")//空字符串,根路径

method 属性

该属性用于指示该方法对那些 HTTP 请求方式做处理。
如果没有指定,则可以处理任意的 HTTP 请求方式。
该属性也可以设置多个值。

@RequestMapping(value="/user", method=RequestMethod.POST)
@RequestMapping(value="/user", method={RequestMethod.POST, RequestMethod.GET})

consumes 属性

该属性指定处理请求的提交内容类型(Content-Type)

@RequestMapping(value = "/user", method=RequestMethod.POST, consumes="application/json")

produces 属性

定制返回response的媒体类型和字符集。仅处理指定的 request 请求头(Accept)中所包含的类型,同时以相同的内容类型返回。

package com.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.entity.User;
import com.service.impl.DemoServiceImpl;

/**
 * @RestController 声明的控制器,表示返回的是指定格式的数据
 * @author Rocky
 *
 */

@RestController
@RequestMapping("/rest")
public class RestControllerDemo {
    @Autowired
    DemoServiceImpl demoServiceImpl;

    //返回text
    @RequestMapping(value = "/getText", produces = "text/plain;charset=UTF-8")
    public String getText() {
        return demoServiceImpl.saySomething();
    }
    //返回json
    @RequestMapping(value = "/getJson", produces = "application/json;charset=UTF-8")
    public User getJson() {
        return new User("张三", 25);
    }
    //返回xml
    @RequestMapping(value = "/getXML", produces = "application/xml;charset=UTF-8")
    public User getXML(User user) {
        return new User("李四",35);
    }
}

params 属性

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

//处理名为myParam,值为myValue的请求
@RequestMapping(value="/user", method=RequestMethod.POST, params="myParam=myValue")

相关参考

  1. Spring Web MVC 官方文档:1.3.2. Request Mapping
更多内容请访问:IT源点

全部评论: 0

    我有话说: