springmvc从零开始(二)- 注解

本文介绍springmvc的常用注解以及其属性

@RequestMapping

作用:建立请求url与处理请求方法之间的对应关系

作用范围:类、方法

属性:

value:等同于path,用于指定请求的url

path:等同于value,用于指定请求的url

method:接收请求的方式,如果对应url的请求方式未按照指定方式进行请求,那么不会执行对应的方法

params:指定请求参数条件,即请求中必须包含某参数、或请求中某参数的值必须等于某值,否则不会执行对应方法

header:指定字符串,请求中必须包含该字符串key的消息头(不常用)

@RequestParam

作用:把请求中指定名称的参数给控制器中的形参赋值

作用范围:方法参数声明处

属性:

value:等同于name,请求参数中的名称

name:等同于value,请求参数中的名称

required:是求参数中是否必须提供这个参数,默认为true(如果未提供则报错,不执行方法)

@RequestBody

作用:用于获取请求体的内容,以key1=value1&key2=value2&key3=value3的形式存于字符串中

作用范围:方法参数声明处

属性:

required:是否必须有请求体,默认true,如果为get请求方式,报错,当为false的时候,get请求方式参数为null

@PathVariable

作用:url占位符,把url中的路径解析为参数

作用范围:方法参数声明处

属性:

value:指定url中的占位符的名称

例子:

controller:

    @RequestMapping("/login/{name}")
    public String login(@PathVariable("name") String name){
        return "success";
    }

页面:

<a href="login/123">测试</a>

如此将参数作为url的一部分,在login方法中,通过@PathVariable注解中的value找到@RequestMapping中对应名称占位符的值,赋值给name

@ModelAttribute

作用:

1.用在方法上:再执行当前controller任意方法之前,都要执行此方法

2.用在参数上:获取指定数据给参数赋值

作用范围:

1.方法上、2.参数声明处

例子:

1.作用方法上:目标方法需要完整信息的对象,而前台传来的对象信息不全,通过@modelAttribute修饰的方法,在进入目标方法之前,对对象进行封装,结束后,目标方法接收的参数对象,前台传来的部分不会被覆盖,前台没传的,会被@modelAttribute修饰的方法所覆盖:

    @ModelAttribute
    public Studet test(String name){
        Studet studet = new Studet();
        studet.setUsername("1");
        studet.setPassworld("1");
        studet.setDate(new Date());
        return studet;
    }

    @RequestMapping("/login")
    public String login(Studet studet){
        System.out.println(studet);//userName=前台传来的(!不是1!)passworld=1 date=...
        return "success";
    }

2.作用在参数上:首先需要一个无返回值的@modelAttribute修饰的方法,其有一个Map类型参数,将封装对象放入map中,在请求目标方法中,对参数前添加@modelAttribute修饰,那么该对象就会补充为经过@modelAttribute修饰的方法修饰的对象:

    @ModelAttribute
    public void test(String name,Map<String,Studet> map){
        Studet studet = new Studet();
        studet.setUsername("1");
        studet.setPassworld("1");
        studet.setDate(new Date());
        map.put("student",studet);
    }

    @RequestMapping("/login")
    public String login(@ModelAttribute("student") Studet student){
        return "success";
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值