springmvc 注解和存储到域

11 篇文章 0 订阅

注解和存储到域

@Controller
@RequestMapping("/anno")
@SessionAttributes(value = {"cc"})
//数据存入session域
public class annotationController {

    @RequestMapping("/testRequestParam")
    public String testRequestParam(@RequestParam(name = "name") String username){
        //@RequestParam(name = "name") 可以把页面传来key为name的值赋给username
        //value:请求参数中的名称和name一样。
        //required:请求参数中是否必须提供此参数。默认值:true。表示必须提供
        System.out.println(username);
        return "success";
    }

    /**
     * @RequestBody
     * 得到请求体
     * 用于获取请求体内容。直接使用得到是 key=value&key=value...结构的数据。
     * get 请求方式不适用。
     * 属性:
     * required:是否必须有请求体。默认值是:true。当取值为 true 时,get 请求方式会报错。如果取值
     * 为 false,get 请求得到是 null。
     * @param body
     * @return
     */
    @RequestMapping("/testRequestBody")
    public String testRequestBody(@RequestBody String body){
        System.out.println(body);
        return "success";
    }

    @RequestMapping("/testPathVariable/{uid}")
    public String testPathVariable(@PathVariable(name = "uid") String id){
        /**
         * PathVariable
         * 获取请求连接占位符的内容
         * value:用于指定 url 中占位符名称。
         * required:是否必须提供占位符
         * anno/testPathVariable/100
         */
        System.out.println(id);
        return "success";
    }


    @RequestMapping("/testRequestHeader")
    public String testRequestHeader(@RequestHeader("") String header){
        /**
         * 作用:
         * 用于获取请求消息头。
         * 属性:
         * value:提供消息头名称
         * required:是否必须有此消息头
         */
        System.out.println(header);
        return "success";
    }


    @RequestMapping("/testCookieValue")
    public String testCookieValue(@CookieValue("") String value){
        /**
         作用:
         用于把指定 cookie 名称的值传入控制器方法参数。
         属性:
         value:指定 cookie 的名称。
         required:是否必须有此 cookie。
         */
        System.out.println(value);
        return "success";
    }
    @RequestMapping("/testModelAttribute")
    public String testModelAttribute(@ModelAttribute("aa") User user){
        /**
         * 作用:
         * 该注解是 SpringMVC4.3 版本以后新加入的。它可以用于修饰方法和参数。
         * 出现在方法上,表示当前方法会在控制器的方法执行之前,先执行。它可以修饰没有返回值的方法,也可
         * 以修饰有具体返回值的方法。  和@before类似
         * 出现在参数上,获取指定的数据给参数赋值。
         * 属性:
         * value:用于获取数据的 key。key 可以是 POJO 的属性名称,也可以是 map 结构的 key。
         * 应用场景:
         * 当表单提交数据不是完整的实体类数据时,保证没有提交数据的字段使用数据库对象原来的数据。
         * 例如:
         * 我们在编辑一个用户时,用户有一个创建信息字段,该字段的值是不允许被修改的。在提交表单数
         * 据是肯定没有此字段的内容,一旦更新会把该字段内容置为 null,此时就可以使用此注解解决问题。
         */
        System.out.println(user);
        return "success";
    }

    @ModelAttribute
    public User test(String username){
        System.out.println("11");
        //模拟查询数据
        //当页面传来用户名时,把年龄封装到user对象中
        //testModelAttribute方法可直接获取数据
        User user = new User();
        user.setName(username);
        user.setAge(12);
        return user;
    }

    @ModelAttribute
    public void test1(String username, Map<String,User> map){
        System.out.println("11");
        //无返回值
        //通过@ModelAttribute("aa")获取数据
        User user = new User();
        user.setName(username);
        user.setAge(12);
        map.put("aa",user);
    }

    @RequestMapping("testSessionAttribute")
    public void testSessionAttribute(Model model){
        //SessionAttribute只能写在类上
        //作用:
        //用于多次执行控制器方法间的参数共享。
        //属性:
        //value:用于指定存入的属性名称
        //type:用于指定存入的数据类型。
        model.addAttribute("cc","123");
        //数据存入request域
    }

    @RequestMapping("testSessionAttribute")
    public void testSessionAttribute1(ModelMap model){
        model.get("cc");
        //从session获取值
//        Model 是 spring 提供的一个接口,该接口有一个实现类 ExtendedModelMap
//* 该类继承了 ModelMap,而 ModelMap 就是 LinkedHashMap 子类

    }

    @RequestMapping("testSessionAttribute")
    public void testSessionAttribute2(SessionStatus status){
        status.setComplete();
        //从session删除
    }
}

/account/1 HTTP GET : 得到 id = 1 的 account
/account/1 HTTP DELETE: 删除 id = 1 的 account
/account/1 HTTP PUT: 更新 id = 1 的 account
/account HTTP POST: 新增 account

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值