首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringMVC组件-常用注解学习笔记

SpringMVC组件-常用注解学习笔记

作者头像
无敌小菜鸟
发布2020-05-09 15:07:23
3840
发布2020-05-09 15:07:23
举报
文章被收录于专栏:搬砖笔记搬砖笔记搬砖笔记
SpringMVC常用的注解:
RequestParam注解: 重要

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

​ value:请求参数中的名称

​ required:请求参数中是否必须提供此参数,默认值:true 表示必须提供,如果不提供将报错

使用教程:

<a href="paramer?name=lisi">RequestParam注解使用</a>
@Controller
public class AnnoController {
    @RequestMapping("/paramer")        //请求路径
    public String Paramer(@RequestParam(value="name")String username,@RequestParam(value = "age",required = false)String sex ){
        System.out.println(username);
        return "success";
    }
}

把name 的值赋给username,把age的值赋给sex。

RequestBody注解:

作用:用于获取请求体的内容,直接使用得到的是key=value&key=value...结构的数据

get请求没有请求体,所以不适用

属性:

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

使用教程:

<h1>RequestBody注解的使用教程</h1>
<form action="rebody" method="post">
    账号:<input type="text" name="username"><br />
    密码:<input type="password" name="password"><br>
    <input type="submit" value="提交">
</form>
<a href="rebody?test=123">RequestBody注解get请求</a>
@RequestMapping("/rebody")        //请求路径
public String body(@RequestBody(required = false) String str){ //这里需要填写String类型
    System.out.println(str);
    return "success";
}
PathVarible注解:

作用:用于绑定URL中的占位符,

属性:

​ value:用于指定URL中占位符的名称

​ required:是否必须提供占位符

使用教程:

<a href="usevariable/100">PathVariable注解使用</a>
@RequestMapping("/usevariable/{id}")     //路径不能写错
public String variableTest(@PathVariable("id") Integer id){
    System.out.println(id);
    return "success";
}
RequestHeader注解:

作用:用于获取请求头 用处不大

属性:

​ value:提供消息头的名称

​ required:是否必须有此消息头

使用教程:

<a href="useHeader">RequestHeader注解的使用</a>
@RequestMapping("/useHeader")
public String useHeader(@RequestHeader(value = "Accept-language",required = false) String reHeader){
    System.out.println(reHeader);
    return "success";
}
CookieValue注解:

作用:把指定cookie的值传入控制器方法参数

属性:

​ value:指定cookie参数

​ required:是否必须有次cookie

使用教程:

<a href="usecookie">CookieValue注解的使用</a>
@RequestMapping("/usecookie")        //value的值必须为JSESSIONID,否则值为null
public String useCookie(@CookieValue(value = "JSESSIONID",required = false) String cookievalue){
    System.out.println(cookievalue);
    return "success";
}
ModealAttribute注解:

作用:SpringMVC4.3后加入的,用于修饰方法和参数

​ 作用在方法上,当前方法会在控制器方法执行之前,先执行。可以修饰没有返回值的方法,也可以修饰有具体返回值的方法

​ 作用在参数上,获取指定的数据给参数赋值

属性:

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

基于POJO使用教程:

<a href="usemodelattribute?username=test">ModelAttribute注解的使用</a>
@RequestMapping("/usemodelattribute")        //后执行
public String useModel(User user){
    System.out.println("执行了useModel方法:"+user.getUsername());
    return "success";
}
@ModelAttribute        //先执行
public void showModel(User user){
    System.out.println("执行了showModel方法的控制器:"+user.getUsername());
}

基于 Map 的使用 示例1:ModelAttribute 修饰方法带返回值

<h3>基于Map的应用场景示例:ModelAttribute修饰修饰方法带返回值</h3>
<form action="updateuser" methond="post">
    用户名:<input type="text" name="username"><br>
    年龄:<input type="text" name="age"><br>
    <input type="submit" value="提交">
</form>
//基于Map的应用场景方式1
@ModelAttribute
public User showModel_1(String username){
    //模拟去数据库查询
    User abc = findUserByName(username);
    System.out.println("执行了showModel_1方法:"+abc);
    return abc;
}
//模拟修改用户方法
@RequestMapping("/updateuser")
public String testModelAttribute(User user){
    System.out.println("控制器处理请求的方法:修改用户"+user);
    return "success";
}
//模拟去数据库查询
private User findUserByName(String username){
    User user = new User();
    user.setUsername(username);
    user.setUserage(19);
    user.setPassword("123456");
    return user;
}

基于 Map 的示例 2 :ModelAttribute** 修饰方法不带返回值

<h3>基于Map的应用场景示例:ModelAttribute修饰修饰方法不带返回值</h3>
<form action="updateUser" methond="post">
    用户名:<input type="text" name="username"><br>
    年龄:<input type="text" name="age"><br>
    <input type="submit" value="提交">
</form>
//基于Map的应用场景方式2
@ModelAttribute    //不带返回值
public void showModel_2(String username, Map<String,User> map){
    //模拟去数据库查询
    User user = findUserByName(username);
    System.out.println("执行了showModel_1方法:"+user);
    map.put("abc",user);

}
//处理请求你,模拟修改用户的方法
@RequestMapping("/updateUser")
public String updateModel(@ModelAttribute("abc") User user){
    System.out.println("控制器中处理请求的方法:修改用户:"+user);
    return "success";
}
//模拟去数据库查询
private User findUserByName(String username){
    User user = new User();
    user.setUsername(username);
    user.setUserage(19);
    user.setPassword("123456");
    return user;
}
SessionAttribute注解:

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

属性:

​ value:用于指定存入的属性名称

​ type:用于指定存入的参数类型

使用教程:

<a href="useput">存入SessionAttribute</a>
<a href="useget">取出SessionAttribute</a>
<a href="useclean">删除SessionAttribute</a>
@Controller
@SessionAttributes(value = {"username","password"},types = {Integer.class})
public class AnnoController {
    
    @RequestMapping("/useput")        //存入SessionAttribute方法
    public String usePut(Model model){
        model.addAttribute("username","lisi");
        model.addAttribute("password","123");
        return "success";
    }
    @RequestMapping("useget")        //取出SessionAttribute方法
    public  String uetGet(ModelMap model){
        System.out.println(model.get("username"));
        System.out.println(model.get("password"));
        return "success";
    }

    @RequestMapping("/useclean")    //删除SessionAttribute方法
    public String useClean(SessionStatus sessionStatus){ 
        sessionStatus.setComplete();
        return "success";
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SpringMVC常用的注解:
    • RequestParam注解: 重要
      • RequestBody注解:
        • PathVarible注解:
          • RequestHeader注解:
            • CookieValue注解:
              • ModealAttribute注解:
                • SessionAttribute注解:
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档