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";
    }
}

版权声明:本文为原创文章,版权归 Little soldier - 代码笔记 所有,转载请联系博主获得授权!
本文地址:https://www.xbtop.cn/index.php/archives/59/

发表评论

×