Spring mvc中有哪些处理请求和响应相关的注解呢?

java-教程王 SpringMVC 发布时间:2022-04-05 17:18:31 阅读数:15176 1
下文笔者将讲述Spring mvc中请求和响应常用注解的简介说明,如下所示:

@Controller

默认返回 templates 目录下的 string.html 页面内容。
在方法中加上 @ResponseBody 注解,可以返回JSON、XML或自定义mediaType的内容

@RestController

直接返回内容,会自动将对象实体转换为JSON格式,视图解析器 InternalResourceViewResolver 不起作用。
@RestController = @Controller + @ResponseBody

@RequestBody

接收请求体中的 JSON 数据,通过实体类的setter方法赋值给属性。
json 的 "" => 实体 String 为 ""
json 的 "" => 实体 Integer、Double 为 null
json 的 null => 实体为 null
@RequestBody 可以与 @RequestParam() 同时使用,@RequestBody 最多只能有一个,@RequestParam() 可以有多个。

以 String 接收数据
@RequestMapping("/index")
public String indexMapping(@RequestBody String jsonStr) {
    return jsonStr;
}
以对象实体接收数据
// {"name":"java","age":5}
@RequestMapping("/index")
public String indexMapping(@RequestBody User user) {
    return user.toString();
}
以复杂的对象实体接收数据
public class Team {
    private Integer id;
    private String name;
    private list<String> honors;
    private List<User> members;
}

// {
//     "id": 1,
//     "name": "other",
//     "honors": ["other123", "other889"],
//     "members": [{"name":"java265.com","age":5},
//                 {"name":"maomao365.com","age":9}],
// }
@RequestMapping("/index")
public String indexMapping(@RequestBody Team team) {
    return team.toString();
}

@ResponseBody
将对象实体转换为JSON、XML或自定义mediaType的内容,并在 HTTP response body 中返回

@RequestMapping

将请求映射到控制器上,可以在控制器类和/或方法上使用。

处理单个请求
@RequestMapping("/home")
public class IndexController {
    @RequestMapping("/index")
    String indexMapping() {
        return "Hello from index mapping.";
    }
}
处理多个请求
@RequestMapping("/home")
public class IndexController {
    @RequestMapping(value = {
        "/",
        "/index",
        "/index/*.html",
        "/index/**/*.html"
    })
    String indexMultipleMapping() {
        return "Hello from index multiple mapping.";
    }
}

处理请求类型
默认是 HTTP GET 类型的。

@RequestMapping(value = "/home", method = RequestMethod.GET)
String get() {}

@RequestMapping(value = "/home", method = RequestMethod.DELETE)
String delete() {}

@RequestMapping(value = "/home", method = RequestMethod.POST)
String post() {}

@RequestMapping(value = "/home", method = RequestMethod.PUT)
String put() {}

@RequestMapping(value = "/home", method = RequestMethod.PATCH)
String patch() {}
处理请求类型快捷方式
@GetMapping(value = "/home")
String get() {}

@DeleteMapping(value = "/home")
String delete() {}

@PostMapping(value = "/home")
String post() {}

@PutMapping(value = "/home")
String put() {}

@PatchMapping(value = "/home")
String patch() {}
处理生产和消费对象
public class IndexController {
    // 生产 application/JSON 响应
    @RequestMapping(value = "/prod", produces = {
        "application/JSON"
    })
    @ResponseBody
    String getProduces() {
        return "Produces attribute";
    }

    // 消费 application/JSON & application/XML 请求
    @RequestMapping(value = "/cons", consumes = {
        "application/JSON",
        "application/XML"
    })
    @ResponseBody
    String getConsumes() {
        return "Consumes attribute";
    }
}
处理消息头
public class IndexController {
    // 处理 Content-Type=application/json 的请求
    @RequestMapping(value = "/head", headers = {
        "Content-Type=application/json"
    })
    String head() {
        return "Mapping applied along with headers";
    }
}
public class IndexController {
    @RequestMapping(value = "/head", headers = {
        "Content-Type=text/plain",
        "Content-Type=application/json"
    })
    String head() {
        return "Mapping applied along with headers";
    }
}
处理请求参数
public class IndexController {
    @RequestMapping(value = "/fetch", params = {
        "personId=10"
    })
    String getParams10(@RequestParam("personId") String id) {
        return "Fetched parameter using params attribute = " + id;
    }

    @RequestMapping(value = "/fetch", params = {
        "personId=20"
    })
    String getParams20(@RequestParam("personId") String id) {
        return "Fetched parameter using params attribute = " + id;
    }
}
处理动态 URI
public class IndexController {
    @RequestMapping(value = "/fetch/{id}")
    String getDynamicUriValue(@PathVariable String id) {
        return "Dynamic URI parameter fetched";
    }

    @RequestMapping(value = "/fetch/{id:\d+}/{name}")
    String getDynamicUriValueRegex(
        @PathVariable("id") int id, @PathVariable("name") String name
    ) {
        return "Dynamic URI parameter fetched using regex";
    }
}
默认的处理方法
public class IndexController {
    @RequestMapping()
    String default () {
        return "This is a default method for the class";
    }
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/SpringMVC/202204/2725.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者