zoukankan      html  css  js  c++  java
  • SpringMVC框架03——数据绑定

    1、绑定基本数据类型

    在Controller类中添加业务方法:

    /**
     * 绑定基本数据类型
     */
    @RequestMapping("/baseType")
    @ResponseBody
    public String baseType(@RequestParam("id") int id){
        return "id="+id;
    }

     访问:

    2、绑定包装类

    Controller类中的业务方法:

    /**
     * 绑定包装类
     */
    @RequestMapping("/packageType")
    @ResponseBody
    public String packageType(@RequestParam("id") Integer id){
        return "id:"+id;
    }

     访问:

    3、绑定数组类型

    Controller类中的业务方法:

    /**
     * 绑定数组
     */
    @RequestMapping("/arrayType")
    @ResponseBody
    public String arrayType(String[] name){
        StringBuffer stringBuffer = new StringBuffer();
        for (String item:name){
            stringBuffer.append(item+" ");
        }
        return stringBuffer.toString();
    }

     访问:

    4、绑定POJO对象

    创建Course类和Author类

    public class Course {
        private int id;
        private String name;
        private double price;
        private Author author;
    
        //getter()、setter()
    }
    public class Author {
        private int id;
        private String name;
    
        //getter、setter()
    }

     创建CourseDao类,模拟数据库存储:

    @Repository
    public class CourseDao {
        //模拟数据库存储数据
        private Map<Integer, Course> map = new HashMap<>();
    
        /**
         * 添加方法
         */
        public void add(Course course){
            map.put(course.getId(),course);
        }
    
        /**
         * 获取所有课程
         */
        public Collection<Course> getAll(){
            return map.values();
        }
    }

    Controller类中添加业务方法:

    @Controller
    public class DataBindController {
    
        @Autowired
        private CourseDao courseDao;
    
        /**
         * 绑定POJO对象
         */
        @RequestMapping("/pojoType")
        public String pojoType(Course course, Model model){
            //将课程添加到数据库
            courseDao.add(course);
            //封装数据
            model.addAttribute("courses",courseDao.getAll());
            return "showData";
        }
    
    }

    创建addCourse.jsp页面

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>添加课程</title>
    </head>
    <body>
    <form action="/pojoType" method="post">
        <p>
            课程编号:<input type="text" name="id">
        </p>
        <p>
            课程名称:<input type="text" name="name">
        </p>
        <p>
            课程价格:<input type="text" name="price">
        </p>
        <p>
            讲师姓名:<input type="text" name="author.name">
        </p>
        <p>
            <input type="submit" value="提交">
        </p>
    </form>
    </body>
    </html>

     创建showData.jsp页面,显示数据:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ page isELIgnored="false" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <html>
    <head>
        <title>展示数据</title>
    </head>
    <body>
    
        <table border="1" width="50%">
            <tr>
                <th>课程编号</th>
                <th>课程名称</th>
                <th>课程价格</th>
                <th>讲师姓名</th>
            </tr>
            <c:forEach var="course" items="${courses}">
                <tr>
                    <td>${course.id}</td>
                    <td>${course.name}</td>
                    <td>${course.price}</td>
                    <td>${course.author.name}</td>
                </tr>
            </c:forEach>
        </table>
    
    </body>
    </html>

    访问URL:

    提交后结果:

    5、绑定List集合

    创建CourseList类,用于存储集合对象

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

    Controller类中的业务方法:

    /**
     * 绑定List集合
     */
    @RequestMapping("/listType")
    public String listType(CourseList courseList,Model model){
        for (Course course : courseList.getCourses()){
            courseDao.add(course);
        }
        model.addAttribute("courses",courseDao.getAll());
        return "showData";
    }

    创建addCourseList.jsp页面,添加数据:

    <form action="/listType" method="post">
        <p>
            课程1编号:<input type="text" name="courses[0].id">
        </p>
        <p>
            课程1名称:<input type="text" name="courses[0].name">
        </p>
        <p>
            课程1价格:<input type="text" name="courses[0].price">
        </p>
        <p>
            讲师姓名:<input type="text" name="courses[0].author.name">
        </p>
        <hr>
        <p>
            课程2编号:<input type="text" name="courses[1].id">
        </p>
        <p>
            课程2名称:<input type="text" name="courses[1].name">
        </p>
        <p>
            课程2价格:<input type="text" name="courses[1].price">
        </p>
        <p>
            讲师姓名:<input type="text" name="courses[1].author.name">
        </p>
        <p>
            <input type="submit" value="提交">
        </p>
    </form>

    访问URL:

    提交后结果:

    6、绑定Map集合

    创建CourseMap类,用于存储Map数据:

    public class CourseMap {
        private Map<String,Course> courses = new HashMap<>();
    
        public Map<String, Course> getCourses() {
            return courses;
        }
    
        public void setCourses(Map<String, Course> courses) {
            this.courses = courses;
        }
    }

    Controller类中的业务方法:

    /**
     * 绑定Map集合
     */
    @RequestMapping("/mapType")
    public String mapType(CourseMap courseMap,Model model){
        for (String key : courseMap.getCourses().keySet()){
            Course course = courseMap.getCourses().get(key);
            courseDao.add(course);
        }
        model.addAttribute("courses",courseDao.getAll());
        return "showData";
    }

    创建addCourseMap.jsp页面:

    <form action="/mapType" method="post">
        <p>
            课程1编号:<input type="text" name="courses['one'].id">
        </p>
        <p>
            课程1名称:<input type="text" name="courses['one'].name">
        </p>
        <p>
            课程1价格:<input type="text" name="courses['one'].price">
        </p>
        <p>
            讲师姓名:<input type="text" name="courses['one'].author.name">
        </p>
        <hr>
        <p>
            课程2编号:<input type="text" name="courses['two'].id">
        </p>
        <p>
            课程2名称:<input type="text" name="courses['two'].name">
        </p>
        <p>
            课程2价格:<input type="text" name="courses['two'].price">
        </p>
        <p>
            讲师姓名:<input type="text" name="courses['two'].author.name">
        </p>
        <p>
            <input type="submit" value="提交">
        </p>
    </form>

    访问URL:

    提交后结果:

    7、绑定Set集合

    创建CourseSet类,必须要在无参构造中,向set集合添加两个对象!

    public class CourseSet {
        private Set<Course> courses = new HashSet<>();
    
        public Set<Course> getCourses() {
            return courses;
        }
    
        public void setCourses(Set<Course> courses) {
            this.courses = courses;
        }
    
        public CourseSet() {
            courses.add(new Course());
            courses.add(new Course());
        }
    }

     Controller类中的业务方法:

    /**
     * 绑定Set集合
     */
    @RequestMapping("/setType")
    public String setType(CourseSet courseSet,Model model){
        for (Course course : courseSet.getCourses()){
            courseDao.add(course);
        }
        model.addAttribute("courses",courseDao.getAll());
        return "showData";
    }

    创建addCourseSet.jsp页面

    <form action="/setType" method="post">
        <p>
            课程1编号:<input type="text" name="courses[0].id">
        </p>
        <p>
            课程1名称:<input type="text" name="courses[0].name">
        </p>
        <p>
            课程1价格:<input type="text" name="courses[0].price">
        </p>
        <p>
            讲师姓名:<input type="text" name="courses[0].author.name">
        </p>
        <hr>
        <p>
            课程2编号:<input type="text" name="courses[1].id">
        </p>
        <p>
            课程2名称:<input type="text" name="courses[1].name">
        </p>
        <p>
            课程2价格:<input type="text" name="courses[1].price">
        </p>
        <p>
            讲师姓名:<input type="text" name="courses[1].author.name">
        </p>
        <p>
            <input type="submit" value="提交">
        </p>
    </form>

    访问URL:

    提交后结果:

    8、绑定JSON数据

    在pom.xml配置文件中添加jackson依赖:

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.8.3</version>
    </dependency>

    在springmvc.xml文件中配置消息转换器:

    <mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

    如果在配置消息转换器时,出现报红线,可能是约束的原因,只需要在springmvc.xml的约束中添加以下配置:

    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd
           http://www.springframework.org/schema/mvc
           http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">

    Controller类中的业务方法:

    /**
     * 绑定JSON数据
     */
    @RequestMapping("/jsonType")
    @ResponseBody
    public Course jsonType(@RequestBody Course course){
        course.setPrice(course.getPrice()+100);
        return course;
    }

    创建sendJson.jsp页面

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>绑定JSON数据</title>
        <script src="js/jquery-1.8.3.min.js"></script>
        <script type="text/javascript">
            $(function () {
                var course = {
                    "id":"8",
                    "name":"SSM框架整合",
                    "price":"200"
                };
                $.ajax({
                    url:"/jsonType",
                    data:JSON.stringify(course),
                    type:"post",
                    contentType:"application/json;charse=UTF-8",
                    dataType:"json",
                    success:function(data){
                        alert(data.name+"---"+data.price);
                    }
                })
            });
        </script>
    </head>
    <body>
    
    </body>
    </html>

    发送URL:

  • 相关阅读:
    SQLServer和Access数据传输简单总结
    Session 详解
    SQL日志文件过大问题的解决方法
    如何删除表中的重复记录?
    HDOJ 3711 Binary Number
    HDOJ 2022
    活动选择问题
    浮点数的比较
    HDOJ 2037
    找最长递增子数列
  • 原文地址:https://www.cnblogs.com/jpwz/p/10540025.html
Copyright © 2011-2022 走看看