• springmvc请求参数绑定


    一、自动参数匹配

    <form action="/login">
        <input type="text" name="username">
        <input type="password" name="password">
        <input type="submit" value="提交">
    </form>
    @RequestMapping("/login")
    public Object login(String username,String password){
        return "成功";
    }

      表单中控件的name的值,和controller层方法的参数名一致,则匹配;

    <form action="hello" method="post">
        <input type="text" name="username">
        <input type="text" name="password"><br/>
        <input type="text" name="address.province">
        <input type="text" name="address.city"><br/>
        <input type="text" name="list[0].province">
        <input type="text" name="list[0].city"><br/>
        <input type="text" name="map['first'].province">
        <input type="text" name="map['first'].city"><br/>
        <input type="submit" value="提交">
    </form>
    @RequestMapping("/hello")
    public String hello(Person person) {
        System.out.println(person);
        /*
        Person(username=孟美岐, password=123456,
                address=Address(province=江苏省, city=无锡市),
                list=[Address(province=河北省, city=沧州市)],
                map={first=Address(province=新疆, city=乌鲁木齐市)})
        */
        return "success";
    }

      参数绑定对象和集合类型,参数名匹配属性名;

    二、url地址中get形式的参数匹配

    url:.../list?pageNum=1&pageSize=10

    @RequestMapping("/list")
    public Object login(Integer pageNum,Integer pageSize){
        return "成功";
    }

    三、必须使用包装类类型的参数

      因为当参数不存在时,springmvc会将参数的值转换成null,而使用基本类型会出现转换异常。

    四、注解形式的参数匹配

    @RequestMapping("/login")
    public Object login(@RequestParam("usernmae") String name,String password){
        return "成功";
    }

    五、可以用defaultValue属性设置上参数的默认值

    @RequestMapping("/list")
    public Object login(@RequestParam(value = "pageNum",defaultValue = "1") Integer currentPage,
                        @RequestParam(value="pageSize",defaultValue = "10") Integer pageSize){
        return "成功";
    }

    六、设置参数是否可选

      可以使用required属性设置参数是否为可选参数

    @RequestMapping("/list")
    public Object login(@RequestParam(value = "pageNum",defaultValue = "1",required = true) Integer currentPage,
                        @RequestParam(value="pageSize",defaultValue = "10",required = true) Integer pageSize){
        return "成功";
    }

    七、路径参数

    @RequestMapping("/list/{id}")
    public Object login(@PathVariable("id") Integer id){
        return "成功";
    }

    八、json数据类型的提交

    $.ajax({
        url:'/savePerson',
        type:'post',
        contentType:'application/json;charset=utf-8',
        data:JSON.stringify({})
    })
    @RequestMapping("/savePerson")
    public Object login(@RequestBody Person person){
        return "成功";
    }
    @RequestMapping("/savePerson")
    public Object login(@RequestBody Map<String, Object> map){
        return "成功";
    }

    九、返回json类型的数据

    @RequestMapping("/savePerson")
    @ResponseBody
    public Object login(@RequestBody Person person){
        return "成功";
    }

    十、获取请求头

    @RequestMapping("/hello")
    public String hello(@RequestHeader("Accept") String headerAccept) {
        System.out.println(headerAccept);
        return "success";
    }

    十一、获取cookie

    @RequestMapping("/hello")
    public String hello(@CookieValue("JSESSIONID") String cookieJsessionid) {
        System.out.println(cookieJsessionid);
        return "success";
    }

    十二、ModelAttribute注解

      1、@ModelAttribute注解的方法会在@RequestMapping注解的方法之前执行;作用:可以为请求参数赋默认值

      2、两种方式

        1、有返回值

    @RequestMapping("/model")
    public String model(Address address) {
        System.out.println(address);
        return "success";
    }
    
    @ModelAttribute
    public Address modelAttribute1(Address address) {
        address.setProvince("河北省");
        address.setCity("沧州市");
        return address;
    }

        2、无返回值

    @RequestMapping("/model")
    public String model(@ModelAttribute("address") Address address) {
        System.out.println(address);
        return "success";
    }
    
    @ModelAttribute
    public void modelAttribute1(Address address, Map<String, Object> map) {
        address.setProvince("河北省");
        address.setCity("沧州市");
        map.put("address", address);
    }

    十三、SessionAttributes注解

    @Controller
    @SessionAttributes({"msg"})// model.addAttribute既在request域存一份,session域也会存一份
    public class HelloController {
        @RequestMapping("/hello")
        public String hello(Model model) {
            // 底层会存储到request域对象中
            model.addAttribute("msg", "孟美岐");
            return "success";
        }
    
        @RequestMapping("/getSessionVal")
        public String getSessionVal(ModelMap modelMap) {
            // 从session域获取数据
            String msg = (String) modelMap.get("msg");
            System.out.println(msg);
            return "success";
        }
    
        @RequestMapping("/delSessionVal")
        public String delSessionVal(SessionStatus sessionStatus) {
            // 清空session域的数据
            sessionStatus.setComplete();
            return "success";
        }
    }
  • 相关阅读:
    LUA之面向对象
    LUA笔记之表
    LUA笔记之字符串
    STM32模拟I2C
    php(1)-php5.6启动命令
    ip地址变更对tomcat和nginx的影响
    解决 nginx: [alert] kill(189, 1) failed (3: No such process)
    linux(16)-yum安装提示“没有可用软件包”
    性能测试监控分析(17) 负载和CPU使用率低高负载的原因
    Codeforces Round #588 (Div. 2)C(思维,暴力)
  • 原文地址:https://www.cnblogs.com/linding/p/12637574.html
Copyright © 2020-2023  润新知