SpringMVC常用注解

1.RequestParam

1. 作用:
把请求中的指定名称的参数传递给控制器中的形参赋值
2. 属性
value:请求参数中的名称
name:同上
required:请求参数中是否,必须提供此参数,默认值是true,必须提供
(如果有value或者name属性前端必须提供和value或者name定义的名称一样);
 为false:可以不提供和value或者name定义的名称一样的名称
代码如下
<!--JSP页面-->
<a href="anno/testRequestParam?username=joyTop">RequestParam</a>

<!--后端Controller-->
@Controller
@RequestMapping("/anno")
public class AnnoController {
    @RequestMapping("/testRequestParam")
    public String testRequestParam(@RequestParam(name = "name",required = false) String username){
        System.out.println(username+"---testRequestParam执行了。。。");
        return "success";
    }
}

2.RequestBody注解

1. 作用:

用于获取请求体内容。直接使用得到是 key=value&key=value…结构的数据。
get 请求方式不适用。

2. 属性

required:是否必须有请求体。默认值是:true。当取值为 true 时,get 请求方式会报错。如果取值
为 false,get 请求得到是 null。

代码如下
<!--JSP页面-->
<form action="anno/testRequestBody" method="post">
         用户姓名:<input type="text" name="username" /> <br>
         用户年龄:<input type="text" name="age" /> <br>
         <input type="submit" value="提交" /> <br>
</form>

<!--后端Controller-->
@RequestMapping("/testRequestBody")
    public String testRequestBody(@RequestBody String body){
        System.out.println(body+"---testRequestParam执行了。。。");
        return "success";
    }
控制台输出

username=lujun&age=22—testRequestParam执行了。。。

3.PathVaribale注解

1. 作用:

用于绑定 url 中的占位符。例如:请求 url 中 /delete/{id},这个{id}就是 url 占位符。
url 支持占位符是 spring3.0 之后加入的。是 springmvc 支持 rest 风格 URL 的一个重要标志。

2. 属性

value:用于指定 url 中占位符名称。
required:是否必须提供占位符。

代码如下
<!--JSP页面-->
 <a href="anno/testPathVariable/22">PathVariable</a>

<!--后端Controller-->
@RequestMapping("/testPathVariable/{sid}")
    public String testPathVariable(@PathVariable(name = "sid") String id){
        System.out.println(id+"---testRequestParam执行了。。。");
        return "success";
    }
控制台输出

22- - -testRequestParam执行了。。。

3.RequestHeader注解

1. 作用:

用于获取请求消息头。

2. 属性

value:提供消息头名称
required:是否必须有此消息头

代码如下
<!--JSP页面-->
<a href="anno/RequestHeadr">RequestHeadr</a>

<!--后端Controller-->
 @RequestMapping("/RequestHeadr")
    public String RequestHeadr(@RequestHeader(name = "Accept") String Header){
        System.out.println(Header+"---testRequestParam执行了。。。");
        return "success";
    }
控制台输出

text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8—testRequestParam执行了。。。

4.CookieValue注解

1. 作用:

用于把指定 cookie 名称的值传入控制器方法参数。

2. 属性

value:指定 cookie 的名称。
required:是否必须有此 cookie。

代码如下
<!--JSP页面-->
<a href="anno/Cookie">Cookie</a>

<!--后端Controller-->
@RequestMapping("/Cookie")   //Cookie: JSESSIONID=5B8A20510B8009DD0D886C6DFE0CB521
    public String testCookie(@CookieValue(name = "JSESSIONID") String Cookievalue){
        System.out.println(Cookievalue+"---testRequestParam执行了。。。");
        return "success";
    }
控制台输出

5B8A20510B8009DD0D886C6DFE0CB521—testRequestParam执行了。。。

5.ModelAttribute注解

1. 作用:

该注解是 SpringMVC4.3 版本以后新加入的。它可以用于修饰方法和参数。出现在方法上,表示当前方法会在控制器的方法执行之前,先执行。它可以修饰没有返回值的方法,也可以修饰有具体返回值的方法。出现在参数上,获取指定的数据给参数赋值。

2. 属性

value:用于获取数据的 key。key 可以是 POJO 的属性名称,也可以是 map 结构的 key。

3.应用场景:

当表单提交数据不是完整的实体类数据时,保证没有提交数据的字段使用数据库对象原来的数据。
例如:
我们在编辑一个用户时,用户有一个创建信息字段,该字段的值是不允许被修改的。在提交表单数据是肯定没有此字段的内容,一旦更新会把该字段内容置为 null,此时就可以使用此注解解决问题。

代码如下
<!--JSP页面-->
<form action="anno/ModelAttribute" method="post">
         用户姓名:<input type="text" name="uname" /> <br>
         用户年龄:<input type="text" name="age" /> <br>
         <input type="submit" value="提交" /> <br>
     </form>

<!--后端Controller  有返回参数-->
@RequestMapping("/ModelAttribute")
    public String testModelAttribute(User user){
        System.out.println(user+"---testModelAttribute执行了。。。");
        return "success";
    }
    //该方法先执行
   // @ModelAttribute
    public User showUser(String uname){
        System.out.println("showUser执行了。。。");
        //通过用户名查数据
        User user = new User();
        user.setUname(uname);
        user.setAge("12");
        user.setDate(new Date());
        return user;
    }
 <!--后端Controller  无返回参数------------------------------------------------------------------------------->  
    @RequestMapping("/ModelAttribute")
    public String testModelAttribute(@ModelAttribute(name = "abc") User user){
        System.out.println(user+"---testModelAttribute执行了。。。");
        return "success";
    } 
    @ModelAttribute
    public void showUser2(String uname, Map<String,User> map){
        System.out.println("showUser执行了。。。");
        //通过用户名查数据
        User user = new User();
        user.setUname(uname);
        user.setAge("12");
        user.setDate(new Date());
        map.put("abc",user);
    }

控制台输出

后端Controller 有返回参数
showUser执行了。。。
User{uname=‘lujun’, age=‘123’, date=Tue Mar 10 15:45:11 CST 2020}—testModelAttribute执行了。。。
后端Controller 无返回参数
showUser执行了。。。
User{uname=‘lujun’, age=‘ee22’, date=Tue Mar 10 15:49:02 CST 2020}—testModelAttribute执行了。。。

4.SessionAttribute注解

1. 作用:(作用于类上面)

用于多次执行控制器方法间的参数共享。

2. 属性

value:用于指定存入的属性名称
type:用于指定存入的数据类型。

代码如下
<!--JSP页面-->
     <!-- 存值 -->
     <a href="anno/SessionAttribute">SessionAttribute</a>
     <!--取值 -->
     <a href="anno/getSessionAttribute">getSessionAttribute</a>
     <!--删除值 -->
     <a href="anno/delSessionAttribute">delSessionAttribute</a>

<!--后端Controller-->
 
@Controller
@RequestMapping("/anno")
@SessionAttributes(value = {"msg"})   //把msg=joyTop,存入到session域对象中
public class AnnoController {
    //存值
    @RequestMapping("/SessionAttribute")
    public String testSessionAttribute(Model model){
        System.out.println("---testSessionAttribute。。。");
        //存储到Request域对象中
        model.addAttribute("msg","joyTop");
        return "success";
    }
    //取值
    @RequestMapping("/getSessionAttribute")
    public String getSessionAttribute(ModelMap modelMap){
        //存储到Request域对象中
        String  msg = (String) modelMap.get("msg");
        System.out.println(msg+"---getSessionAttribute。。。");
        return "success";
    }
    //清除
    @RequestMapping("/delSessionAttribute")
    public String delSessionAttribute(SessionStatus status){
        status.setComplete();
        System.out.println("---delSessionAttribute。。。");
        return "success";
    }
 }
控制台输出showUser执行了。。。

—testSessionAttribute。。。
showUser执行了。。。
joyTop—getSessionAttribute。。。
showUser执行了。。。
—delSessionAttribute。。。
showUser执行了。。。
null—getSessionAttribute。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值