SpringMVC学习笔记之---数据绑定

SpringMVC数据绑定

一.基础配置

(1)pom.xml

<dependencies>
  <dependency>
    <groupId>junitgroupId>
    <artifactId>junitartifactId>
    <version>4.11version>
  dependency>
  <dependency>
    <groupId>org.springframeworkgroupId>
    <artifactId>spring-webmvcartifactId>
    <version>5.1.3.RELEASEversion>
  dependency>
  <dependency>
    <groupId>javax.servletgroupId>
    <artifactId>javax.servlet-apiartifactId>
    <version>3.1.0version>
  dependency>
  
  <dependency>
    <groupId>javax.servletgroupId>
    <artifactId>jstlartifactId>
    <version>1.2version>
  dependency>
  dependencies>

 

(2)web.xml

<servlet>

  <servlet-name>SpringMVCservlet-name>

  <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>

  <init-param>

    <param-name>contextConfigLocationparam-name>

    <param-value>classpath:springmvc.xmlparam-value>

  init-param>

servlet>

<servlet-mapping>

  <servlet-name>SpringMVCservlet-name>

  <url-pattern>/url-pattern>

servlet-mapping>

 

(3)springmvc.xml

xml version="1.0" encoding="UTF-8"?>

<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.xsd">

    

    <context:component-scan base-package="controller,dao">context:component-scan>

    

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

        

        <property name="prefix" value="/">property>

        

        <property name="suffix" value=".jsp">property>

    bean>

    

    <mvc:annotation-driven>

        <mvc:message-converters>

            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">bean>

        mvc:message-converters>

    mvc:annotation-driven>

beans>

 

(4)Course.java(实体类)

package entity;



public class Course {

    private int id;

    private String name;

    private double price;

    private Author author;



    public int getId() {

        return id;

    }



    public void setId(int id) {

        this.id = id;

    }



    public String getName() {

        return name;

    }



    public void setName(String name) {

        this.name = name;

    }



    public double getPrice() {

        return price;

    }



    public void setPrice(double price) {

        this.price = price;

    }



    public Author getAuthor() {

        return author;

    }



    public void setAuthor(Author author) {

        this.author = author;

    }



    @Override

    public String toString() {

        return "Course{" +

                "id=" + id +

                ", name='" + name + '\'' +

                ", price=" + price +

                ", author=" + author +

                '}';

    }

}

 

(5)Author.java(实体类)

package entity;



public class Author {

    private int id;

    private String name;



    public int getId() {

        return id;

    }



    public void setId(int id) {

        this.id = id;

    }



    public String getName() {

        return name;

    }



    public void setName(String name) {

        this.name = name;

    }

}

 

(6)SaveDao.java(用于保存的dao)

package dao;



import entity.Course;

import org.springframework.stereotype.Repository;



import java.util.Collection;

import java.util.HashMap;

import java.util.Map;



@Repository

public class SaveDao {

   private Map map=new HashMap();

   public void save(Course course){

       map.put(course.getId(),course);

   }

   public Collection getall(){

       return map.values();

   }

}

 

(7)index.jsp(用于遍历显示)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@page isELIgnored="false" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<html>

<head>

    <title>Titletitle>

head>

<body>

<table>

    <tr>

        <td>课程IDtd>

        <td>课程名td>

        <td>课程价格td>

        <td>讲师IDtd>

        <td>讲师名td>

    tr>

    <c:forEach items="${courses}" var="course">

        <tr>

            <td>${course.id}td>

            <td>${course.name}td>

            <td>${course.price}td>

            <td>${course.author.id}td>

            <td>${course.author.name}td>

        tr>

    c:forEach>

table>



body>

html>

 

二.数据绑定分类

(一)普通数据类型的数据绑定
(二)包装类的数据绑定
(三)数组类型的数据绑定
(四)对象类型的数据绑定
(五)List集合类型的数据绑定
(六)Map集合类型的数据绑定
(七)Set集合类型的数据绑定

 DataController.java

package controller;



import dao.SaveDao;

import entity.*;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestBody;

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 DataController {

    @Autowired

    private SaveDao saveDao;

    /**

     * 基本数据类型的数据绑定

     * @param id

     * @return

     */

    @RequestMapping("/one")

    @ResponseBody  //将返回值显示到页面

    public String one(@RequestParam(value="id") int id){

        return "id:"+id;

    }



    /**

     * 包装类的数据绑定

     * @param id

     * @return

     */

    @RequestMapping("/two")

    @ResponseBody

    public String two(@RequestParam(value="id")Integer id){

        return "id"+id;

    }



    /**

     * 数组类型的数据绑定

     * @param three

     * @return

     */

    @RequestMapping("/three")

    @ResponseBody

    public String three(String[] three){

       StringBuffer st=new StringBuffer();

       for(String s:three){

           st.append(s).append(" ");

       }

       return st.toString();

    }



    /**

     * 对象类型的数据绑定

     * 对象保存,在dao层进行

     * @param course

     * @return

     */

    @RequestMapping("/four")

    public ModelAndView four(Course course){

        saveDao.save(course);

        ModelAndView modelAndView=new ModelAndView();

        modelAndView.setViewName("index");

        modelAndView.addObject("courses",saveDao.getall());

        return modelAndView;

    }



    /**

     * List集合类型的数据绑定

     * 不能直接绑定集合,应该创建一个包装类

     * @param courceList

     * @return

     */

    @RequestMapping("/five")

    public ModelAndView five(CourceList courceList){

        for(Course course:courceList.getCourses()){

            saveDao.save(course);



        }

        ModelAndView modelAndView=new ModelAndView();

        modelAndView.setViewName("index");

        modelAndView.addObject("courses",saveDao.getall());

        return modelAndView;

    }



    /**

     * Map集合类型的数据绑定

     * @param courseMap

     * @return

     */

    @RequestMapping("/six")

    public ModelAndView six(CourseMap courseMap){

        for(Course course:courseMap.getMap().values()){

            System.out.println(course);

            saveDao.save(course);

        }

        ModelAndView modelAndView=new ModelAndView();

        modelAndView.setViewName("index");

        modelAndView.addObject("courses",saveDao.getall());

        return modelAndView;

    }



    /**

     * Set集合类型的数据绑定

     * @param courseSet

     * @return

     */

    @RequestMapping("/seven")

    public ModelAndView seven(CourseSet courseSet){

        for(Course course:courseSet.getSet()){

            saveDao.save(course);

        }

        ModelAndView modelAndView=new ModelAndView();

        modelAndView.setViewName("index");

        modelAndView.addObject("courses",saveDao.getall());

        return modelAndView;

    }

    @RequestMapping(value="/eight")

    @ResponseBody

    public String eight(@RequestBody User user){

        user.setName("成功");

        System.out.println("==========");

        return "aa";

    }



}

 

三.数据绑定所需的类和页面

(一)普通数据类型
(二)包装类
(三)数组类型
(四)对象类型

1.save.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

<head>

    <title>Titletitle>

head>

<body>

<form action="/four" method="post">

    课程ID:<input type="text" name="id">

    课程名:<input type="text" name="name">

    课程价格:<input type="text" name="12.5">

    讲师ID:<input type="text" name="author.id">

    讲师名:<input type="text" name="author.name">

    <input type="submit">

form>

body>

html>

 

(五)List集合

1.CourseList.java

package entity;



import java.util.List;



public class CourceList {

    private List courses;



    public List getCourses() {

        return courses;

    }



    public void setCourses(List courses) {

        this.courses = courses;

    }

}

 

2.saveList.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

<head>

    <title>Titletitle>

head>

<body>

<form action="/five" method="post">

    课程1ID:<input type="text" name="courses[0].id">

    课程1名:<input type="text" name="courses[0].name">

    课程1价格:<input type="text" name="courses[0].price">

    讲师1ID:<input type="text" name="courses[0].author.id">

    讲师1名:<input type="text" name="courses[0].author.name">

    课程2ID:<input type="text" name="courses[1].id">

    课程2名:<input type="text" name="courses[1].name">

    课程2价格:<input type="text" name="courses[1].price">

    讲师2ID:<input type="text" name="courses[1].author.id">

    讲师2名:<input type="text" name="courses[1].author.name">

    <input type="submit">

form>

body>

html>

 

(六)Map集合

1.CourseMap.java

package entity;



import java.util.Map;



public class CourseMap {

    private Map map;



    public Map getMap() {

        return map;

    }



    public void setMap(Map map) {

        this.map = map;

    }



    @Override

    public String toString() {

        return "CourseMap{" +

                "map=" + map +

                '}';

    }

}

 

2.saveMap.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

<head>

    <title>Titletitle>

head>

<body>

<form action="/six" method="post">

    课程1ID:<input type="text" name="map['one'].id">

    课程1名:<input type="text" name="map['one'].name">

    课程1价格:<input type="text" name="map['one'].price">

    讲师1ID:<input type="text" name="map['one'].author.id">

    讲师1名:<input type="text" name="map['one'].author.name">

    课程2ID:<input type="text" name="map['two'].id">

    课程2名:<input type="text" name="map['two'].name">

    课程2价格:<input type="text" name="map['two'].price">

    讲师2ID:<input type="text" name="map['two'].author.id">

    讲师2名:<input type="text" name="map['two'].author.name">

    <input type="submit">

form>

body>

html>

 

(七)Set集合

1.CourseSet.java

package entity;



import java.util.HashSet;

import java.util.Set;



public class CourseSet {

    private Set set=new HashSet();



    public Set getSet() {

        return set;

    }



    public void setSet(Set set) {

        this.set = set;

    }

    public CourseSet(){

        set.add(new Course());

        set.add(new Course());

    }

}

 

2.saveSet.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

<head>

    <title>Titletitle>

head>

<body>

<form action="/seven" method="post">

    课程1ID:<input type="text" name="set[0].id">

    课程1名:<input type="text" name="set[0].name">

    课程1价格:<input type="text" name="set[0].price">

    讲师1ID:<input type="text" name="set[0].author.id">

    讲师1名:<input type="text" name="set[0].author.name">

    课程2ID:<input type="text" name="set[1].id">

    课程2名:<input type="text" name="set[1].name">

    课程2价格:<input type="text" name="set[1].price">

    讲师2ID:<input type="text" name="set[1].author.id">

    讲师2名:<input type="text" name="set[1].author.name">

    <input type="submit">

form>

body>

html>

 

-----------------------------------demo12------------------------------------

你可能感兴趣的:(SpringMVC学习笔记之---数据绑定)