zoukankan      html  css  js  c++  java
  • springMVC数据绑定

    1.数据绑定的定义

     2.常用的数据绑定类型

     3.具体使用方法:在搭建好springMVC环境下添加注解@RequestParam(value = "表单对应的name") 即可完成数据绑定

    package com.yzy.controller;
    
    
    import com.yzy.entity.Course;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.servlet.ModelAndView;
    
    @Controller
    public class dataBindHandler {
    
        //基本数据类型
        @RequestMapping(value = "/baseType")
        @ResponseBody
        public String baseType(@RequestParam(value = "id") int id){
            return "id:"+id;
        }
    
        //包装类
        @RequestMapping(value = "/packageType")
        @ResponseBody
        public String packageType(@RequestParam(value = "id") Integer id){
            return "id:"+id;
        }
    
        //字符串数组
        @RequestMapping(value = "/arrayType")
        @ResponseBody
        public String arrayType(String[] name){
            StringBuffer stringBuffer=new StringBuffer();
            for(String str:name){
                stringBuffer.append(str).append(" ");
            }
            return stringBuffer.toString();
        }
    
        //对象(表单的name值与对象的属性名对应即可完成对象的封装)
        @RequestMapping("/pojoType")
        public ModelAndView pojoType(Course course){
            ModelAndView modelAndView=new ModelAndView();
            modelAndView.addObject("course",course);
            modelAndView.setViewName("index");
            return modelAndView;
        }

    关于对象的相应页面的调用数据:

                            <td>${course.id}</td>    <%--取值方式--%>
                            <td>${course.name}</td>
                            <td>${course.price}</td>
                            <td>${course.author.name}</td>   <%--级联对象的取值--%>

    集合与json的数据绑定:

      集合的数据绑定得先定义一个集合<Object>对应的实体类:

    public class CourseList {
        private List<Course> courses;
    
        public List<Course> getCourses() {
            return courses;
        }
    
        public void setCourses(List<Course> courses) {
            this.courses = courses;
        }
    }

      绑定数据类型为list时,表单name值的定义方式(set与list一样):

     <input type="text" class="form-control" name="courses[0].id" placeholder="请输入课程编号">

      绑定数据类型为map时,表单name值的定义方式:

    <input type="text" class="form-control" name="courses['one'].id" placeholder="请输入课程编号">

      方法的编写(list、map与set一致):

    @RequestMapping(value = "/listType")
        public ModelAndView listType(CourseList courseList){
            for(Course course:courseList.getCourses()){
                courseDAO.add(course);
            }
            ModelAndView modelAndView = new ModelAndView();
            modelAndView.setViewName("index");
            modelAndView.addObject("courses",courseDAO.getAll());
            return modelAndView;
        }

    对于json的数据绑定,springMVC没有对应的方法,需导入json解析jar包:jackson-databind,并且在spring的配置文件中配置相应的数据绑定解析器

        <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
          <version>2.8.3</version>
        </dependency>
        <mvc:annotation-driven>
            <mvc:message-converters>
                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
            </mvc:message-converters>
        </mvc:annotation-driven>

      方法的编写:

        @RequestMapping(value = "/jsonType")
        @ResponseBody
        public  Course jsonType(@RequestBody  Course course){  //通过解析request中的json数据,生成对应的实体对象
            course.setPrice(course.getPrice()+100);
            return course;
        }
  • 相关阅读:
    vue-router query和params参数的区别
    vue打包成app后,背景图片不显示
    vue打包成app后,点击手机上的物理返回按钮后直接退出app
    Echarts dataZoom 区域缩放
    CSS3 实现别样图型
    Echarts 不能百分比显示或显示有问题
    循环(数组循环、获取json数据循环)、each()循环详解
    页面数据加载完成时,显示loading页面.数据加载完,loading隐藏.
    获取可视区域高度赋值给div(解决document.body.clientHeight的返回值为0的问题)
    移动端rem布局,用户调整手机字体大小或浏览器字体大小后导致页面布局出错问题
  • 原文地址:https://www.cnblogs.com/shouyaya/p/13034868.html
Copyright © 2011-2022 走看看