SpringMVC的常用注解

//@Controller //将当前类的对象放入容器
//@ResponseBody //将方法的返回值(对象和集合)转json返回
@RestController
//@RequestMapping("/user") 如果@RequestMapping标注在类上, 代表提取公共请求路径
public class UserController {


    @RequestMapping("/user/demo1") // 给当前方法绑定一个请求地址
    //@ResponseBody //将方法的返回值(对象和集合)转json返回
    public User demo1(String name, Integer age) {

        User user = new User(name, age);

        return user;
    }

    // value: 等同于path, 用于给当前方法绑定请求路径
    //       支持数组的写法, 代表可以为一个方法绑定多个请求路径
    @RequestMapping(value = {"/user/demo2", "/user/demo3"})
    //@ResponseBody
    public String demo2() {
        return "ok";
    }

    // method: 限制请求类型,支持数组的写法, 代表可以同时允许多种请求方式
    //        如果method属性省略, 代表的是全部方式都可以
    @RequestMapping(value = "/user/demo4", method = {RequestMethod.GET, RequestMethod.POST})
    //@ResponseBody
    public String demo4() {
        return "ok";
    }


    // 使用简单类型接收  需要保证前端传递的参数名称跟方法的形参名称一致
    // 对于一些简单类型的数据, mvc底层是可以自动完成转换的
    @RequestMapping("/user/demo5")
    public String demo5(String name, Integer age) {
        System.out.println("name:" + name + ",age:" + age);

        return "ok";
    }

    // 使用对象类型接收 需要保证前端传递的参数名称跟对象属性名称一致
    @RequestMapping("/user/demo6")
    public String demo6(User user) {
        System.out.println(user);

        return "ok";
    }


    // 使用数组类型接收  需要保证前端传递的参数名称跟方法的形参名称一致
    @RequestMapping("/user/demo7")
    public String demo7(String[] hobby) {
        System.out.println(Arrays.toString(hobby));

        return "ok";
    }


    // 使用集合类型接收  需要保证前端传递的参数名称跟方法的形参名称一致
    // 如果直接使用List来接收请求参数, 需要在参数类型之前加入@RequestParam
    @RequestMapping("/user/demo8")
    public String demo8(@RequestParam("hobby") List<String> hobby) {
        System.out.println(Arrays.toString(hobby.toArray()));

        return "ok";
    }

    // 使用日期类型接收
    // 在参数之前,使用@DateTimeFormat(pattern = "自定义日期格式")
    @RequestMapping("/user/demo9")
    public String demo9(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date updateTime) {
        System.out.println(updateTime);

        return "ok";
    }


    // 接收请求体中的json数据
    // 在方法形参中去声明一个对象, 在对象之前使用@RequestBody注解
    // 此注解就会从请求体中接收json字符串, 并且按照给的类型进行转换
//    @RequestMapping("/user/demo10")
//    public String demo10(@RequestBody User user) {
//        System.out.println(user);
//
//        return "ok";
//    }

    @RequestMapping("/user/demo10")
    public String demo10(@RequestBody Map<String, Object> map) {
        System.out.println(map.get("name"));
        System.out.println(map.get("age"));

        return "ok";
    }


    // 接收请求路径中的参数
    //@PathVariable("name") 从请求路径上获取参数   注意: 路径上使用{}做占位符
    @RequestMapping("/user/demo11/name/{name}/age/{age}")
    public String demo11(
            @PathVariable("name") String name,
            @PathVariable("age") Integer age
    ) {
        System.out.println("name:" + name + ",age:" + age);

        return "ok";
    }

    //@RequestParam 有3个使用场景
    // 1. 当请求中参数名称跟方法形参名称不对应的时候,可以使用此注解的name属性完成映射
    // 2. 当请求中有可能不传递的参数时, 可以使用此注解的defaultValue属性设置默认值
    // 3. 接收List集合

    // 注意:@RequestParam标注的参数默认情况下不能为空, 如果想取消这个限制,使用required = false
    @RequestMapping("/user/demo12")
    public String demo12(
            @RequestParam(name = "name", required = false) String username,
            @RequestParam(defaultValue = "18") Integer age
    ) {
        System.out.println("username:" + username);
        System.out.println("age:" + age);

        return "ok";
    }


    // 模拟异常
    @RequestMapping("/user/demo21")
    public void demo21(Integer type) {
        if (type == 1) {   // ArithmeticException
            int i = 1 / 0;
        } else if (type == 2) { // NullPointerException
            String s = null;
            System.out.println(s.length());
        } else { // ArrayIndexOutOfBoundsException
            Integer[] arr = new Integer[2];
            arr[5] = 1;
        }
    }

    // restful--添加
    //@RequestMapping(value = "/users", method = RequestMethod.POST)
    @PostMapping("/users")  // 仅仅接收post请求
    public void save(@RequestBody User user) {
        System.out.println(user);
    }

    // restful--查询列表
    //@RequestMapping(value = "/users", method = RequestMethod.GET)
    @GetMapping("/users")  // 仅仅接收get请求
    public List<User> findAll() {
        List<User> list = new ArrayList<>();
        list.add(new User("张三", 18));
        list.add(new User("李四", 19));
        return list;
    }

    // 主键删除
    @DeleteMapping("/users/{id}")
    public void deleteById(@PathVariable("id") Integer id) {
        System.out.println("删除id:" + id);
    }


    // 主键查询
    @GetMapping("/users/{id}")
    public void findById(@PathVariable("id") Integer id) {
        System.out.println("查询id:" + id);
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值