案例:web提交学生信息数据到数据库

1、需求:

web网页,提交学生信息,存入到数据库

2、创建student学生信息表、sex性别表、hobby爱好表、edu学历表

2.1)student学生信息表

2.2)sex性别表


2.3)hobby爱好表


2.4)edu学历表


3、前端代码.html

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>学生信息管理系统</title><style>input[type="text"]{width: 300px;height: 20px;}/* 修饰保存按钮 */input[type="button"]{width: 150px;                       /*宽度*/height: 30px;                     /*高度*/color: #FFFFFF;                   /*字体颜色*/background-color: #FF0000; /*背景颜色*/}/* 修饰取消按钮 */input[type="reset"]{width: 150px;                        /*宽度*/height: 30px;                     /*高度*/color: #FFFFFF;                   /*字体颜色*/background-color: #0000FF; /*背景颜色*/}</style><script src="../jquery-1.8.3.min.js"></script><script>function fun(){$.ajax({ //发起Ajax请求数据type: "get", //POST隐藏请求自带的数据,get显示请求自带的数据url: "http://localhost:8888/stu/add", //要使用的请求路径//contentType: "application/json;charset=utf-8",data:$("#f1").serialize(),success: function(data) { //成功时的方案console.log(data.intime); //查看js对象},error: function(data) {alert("提交失败" + JSON.stringify(data));}})}  </script></head><body>    <form id="f1"><table><tr><td align="center"><h3>学生信息管理系统MIS</h3></td></tr><tr><td>姓名:</td></tr><tr><td><input type="text" name="name" placeholder="请输入姓名..." /></td></tr><tr><td>年龄:</td></tr><tr><td><input type="text" name="age" placeholder="请输入年龄..." /></td></tr><tr><td>性别:(单选框)<input type="radio" name="sex" checked="checked" value="0" />男<input type="radio" name="sex" value="1" />女</td></tr><tr><td>爱好:(多选框)<input type="checkbox" name="hobby" checked="checked" value="0" />乒乓球<input type="checkbox" name="hobby" value="1" />爬山<input type="checkbox" name="hobby" value="2" />唱歌</td></tr><tr><td>学历:(下拉框)<select name="edu"><option value="1">本科</option><option value="2">专科</option><option value="3">研究生</option></select></td></tr><tr><td>入学日期:<input type="date" name="intime" /></td></tr><tr><td><input type="button" value="保存" onclick="fun();" /><input type="reset" value="取消" /></td></tr></table></form></body>
</html>

4、创建后端代码

4.1)项目结构

4.2)创建启动类,RunApp.java

package cn.tedu;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Controller;//启动类
@SpringBootApplication //会进行资源的自动扫描
@Controller
public class RunApp {public static void main(String[] args) {SpringApplication.run(RunApp.class);}
}

4.3)创建启动类,创建Student类,充当了模型层M,Student.java

package cn.tedu.pojo;import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;import java.util.Arrays;
import java.util.Date;
//充当MVC模式里的M层model:封装数据
@Data //lombok自动提供get set toString hashCode equals
@NoArgsConstructor //无参构造
@AllArgsConstructor//全参构造
//@Accessors(chain = true) //链式编程
public class Student {private String name;private Integer age;private Integer sex;private String[] hobby; //保存了页面提供的多个爱好private Integer edu;/*时区问题,插入以下两个注解,注意格式*/@DateTimeFormat(pattern = "yyyy-MM-dd")//接受前端传入的格式@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") //输出的格式,转换GMT+8时区private Date intime;//网页上的日期是string,注解用来转换格式,不然400错误//页面报400 IllegalArgumentException: String->Date
//
//    @Override
//    public String toString() {//        return "Student{" +
//                "name='" + name + '\'' +
//                ", age=" + age +
//                ", sex=" + sex +
//                ", hobby=" + Arrays.toString(hobby) +
//                ", edu=" + edu +
//                ", intime=" + intime +
//                '}';
//    }
//
//    public String getName() {//        return name;
//    }
//
//    public void setName(String name) {//        this.name = name;
//    }
//
//    public Integer getAge() {//        return age;
//    }
//
//    public void setAge(Integer age) {//        this.age = age;
//    }
//
//    public Integer getSex() {//        return sex;
//    }
//
//    public void setSex(Integer sex) {//        this.sex = sex;
//    }
//
//    public String[] getHobby() {//        return hobby;
//    }
//
//    public void setHobby(String[] hobby) {//        this.hobby = hobby;
//    }
//
//    public Integer getEdu() {//        return edu;
//    }
//
//    public void setEdu(Integer edu) {//        this.edu = edu;
//    }
//
//
//
    @DateTimeFormat(pattern="yyyy-MM-dd")
//    public Date getIntime() {//        return intime;
//    }
    @DateTimeFormat(pattern="yyyy-MM-dd")
//    public void setIntime(Date intime) {//        this.intime = intime;
//    }
}

4.4)创建StudentController类,充当了控制层C,StudentController.java

package cn.tedu.controller;
import ch.qos.logback.core.db.dialect.HSQLDBDialect;
import cn.tedu.pojo.Student;
import com.sun.org.apache.xpath.internal.objects.XObject;
import org.springframework.scripting.bsh.BshScriptUtils;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Arrays;@RestController
@RequestMapping("/stu/")
@CrossOrigin//解决跨域问题
public class Controller {Connection conn;@RequestMapping("add")public Student add(Student s) throws Exception {Class.forName("com.mysql.cj.jdbc.Driver");//2、利用jdbc入库,入库的数据从c获取String url = "jdbc:mysql:///cgb2105?characterEncoding=utf8" ;conn = DriverManager.getConnection(url, "root", "root");//3、获取传输器String sql = "insert into student values(?,?,?,?,?,?,?)";//?占位符,个数和表里的字段个数匹配,顺序和字序一致PreparedStatement ps = conn.prepareStatement(sql);//4、执行sqlps.setString(1,null);//把请求携带来的参数,拿到,给第1个?设置值ps.setString(2,s.getName());//把请求携带来的参数,拿到,给第2个?设置值ps.setInt(3, s.getAge());//把请求携带来的参数,拿到,给第3个?设置值ps.setString(4, selectss(s.getSex(), "sex"));//把请求携带来的参数,拿到,给第4个?设置值ps.setString(5, selectss(s.getHobby(),"hobby"));//把请求携带来的参数,拿到,给第5个?设置值ps.setString(6,selectss(s.getEdu(),"edu"));//把请求携带来的参数,拿到,给第5个?设置值SimpleDateFormat data = new SimpleDateFormat("yyyy-MM-dd");String s1 = data.format(s.getIntime());ps.setString(7, s1);//把请求携带来的参数,拿到,给第5个?设置值ps.executeUpdate();return s;}
/*//5、查询sql---重复代码private String  select(Integer int1,String name) throws Exception {String str1 ="";//获取查询传输器String sql1 = "select "+name +"name from "+ name + " where " +name + "id="+int1;System.out.println(sql1);PreparedStatement ps = conn.prepareStatement(sql1);ResultSet rs = ps.executeQuery();rs.next();String s = rs.getString(1);str1 = s;ps.close();rs.close();System.out.println(str1);return str1;}private String  selects(String[] str,String name) throws Exception {PreparedStatement ps1 =null;ResultSet rs1 = null;String str2="";//获取查询传输器for (int i=0;i<str.length;i++){String a = str[i];String sql2 = "select "+name +"name from "+ name + " where " +name + "id="+a;ps1 = conn.prepareStatement(sql2);rs1 = ps1.executeQuery();rs1.next();str2 += rs1.getString(1);}ps1.close();rs1.close();return str2;}*///5、查询sql存值private String  selectss(Object o,String name) throws Exception {String sql = null;String s = "";PreparedStatement ps =null;ResultSet rs  = null;if (o instanceof String[]){ //判断object对象是string[]类型String[] str = (String[])o; //是,向下造型,object向下转string[]类型for (int i=0;i<str.length;i++){String a = str[i];sql = "select "+name +"name from "+ name + " where " +name + "id="+a;ps = conn.prepareStatement(sql);rs = ps.executeQuery();rs.next();s += rs.getString(1)+",";}}else{Integer in1 = (Integer) o; //不是,向下造型,object向下转Integer类型sql = "select "+name +"name from "+ name + " where " +name + "id="+in1;ps = conn.prepareStatement(sql);rs = ps.executeQuery();rs.next();s= rs.getString(1);}//释放资源ps.close(); rs.close();//返回值return s;}
}

4.5)测试


数据库中,有数据,就成功了

SpringMVC基础---案例:web提交学生信息数据到数据库相关推荐

  1. 24-在线考试系统数据库-班级学生信息数据操作(三)

    24-在线考试系统数据库-班级学生信息数据操作(三) 项目描述 伴随着远程教育的蓬勃发展,作为教学当中不可分割的一部分的"在线考试系统"也得到了当今远程教育研究者的关注,考试是考察 ...

  2. 25-在线考试系统数据库-班级学生信息数据操作(四)

    25-在线考试系统数据库-班级学生信息数据操作(四) 项目描述 伴随着远程教育的蓬勃发展,作为教学当中不可分割的一部分的"在线考试系统"也得到了当今远程教育研究者的关注,考试是考察 ...

  3. 22-在线考试系统数据库-班级学生信息数据操作(一)

    22-在线考试系统数据库-班级学生信息数据操作(一) 文章目录 22-在线考试系统数据库-班级学生信息数据操作(一) 项目描述 在线考试系统数据库操作要求如下: (1)任务描述 项目描述 伴随着远程教 ...

  4. 23-在线考试系统数据库-班级学生信息数据操作(二)

    23-在线考试系统数据库-班级学生信息数据操作(二) 项目描述 伴随着远程教育的蓬勃发展,作为教学当中不可分割的一部分的"在线考试系统"也得到了当今远程教育研究者的关注,考试是考察 ...

  5. 大数据24小时:孙彬出任乐视云新CEO,趣店数百万学生信息数据疑似泄露

    十万元可买到数百万学生信息,趣店疑似发生数据泄露:乐视云新CEO上任,系公司原技术与服务副总裁孙彬:"海洋国家实验室"智能超算与大数据联合实验室正式启动--以下为您奉上更多大数据热 ...

  6. 学生信息管理系统java的总结,基于Java web的学生信息管理系统

    源码编号:B-E00012  点击查看分类规则 项目类型:Java EE项目(java web项目) 项目名称:基于java web的学生信息管理系统(StudentManagerWeb) 当前版本: ...

  7. 实习之大量学生信息数据生成

    实习之大量学生信息数据生成 该方法主要采用随机数生成 涉及到: 电话号码 姓名 身份证号 地区码及邮政编号 年龄 不多说,见代码: #include<iostream> #include& ...

  8. PHP 学生信息管理系统mysql数据库web结构apache计算机软件工程网页wamp

    一.源码特点     PHP 学生信息管理系统 是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发. 代码下载 https://dow ...

  9. Java_学生信息管理系统-后台数据库设计

    功能: 为学生信息管理系统后台数据库进行设计,结果如下图: 图1.数据库数据表 如图2.数据库数据表之间关系

最新文章

  1. dplyr 数据操作 常用函数(2)
  2. python的优点-python的功能与优缺点
  3. php 0行,php – 如果返回0行,MySQL返回结果
  4. 扎实的基础是成功的法宝
  5. mysql和oracle区别总结(二)
  6. Python列表:list
  7. 《如何建立自己的算法交易事业》读书笔记
  8. Go编译android,在Android中引用golang编译的aar包
  9. 【移入移出事件练习】【菜单】【选项卡】 -------this使用
  10. C# --CSkin的使用教程
  11. gp338信令_细说GP338GP328对讲机编程
  12. Flink之DataSet转换操作(二)
  13. jquery漏洞修复方案
  14. 华为交换机配置基础命令
  15. 进程创建的优化设计(上)
  16. WPS关闭不了后台一直运行的解决办法(wpscloudsvr.exe)
  17. 基于深度学习的医学图像分割(一)
  18. GitHub开源了一款程序员摸鱼神器!上班摸鱼还不会被老板发现。。。
  19. react点击后高亮显示
  20. 历史的1000+篇文章总结

热门文章

  1. Android:数据回传
  2. eclipse编程 创建项目 简易教程
  3. 第二章 关键技术介绍
  4. element ui tree增删改查_clientgo连接K8s集群进行pod的增删改查
  5. oracle查手机号码位数重复,连续相同号码的识别
  6. missing and no known rule to make it
  7. 【linux】循序渐进学运维-基础篇-Linux系统目录
  8. linux 下vi与vim区别以及vim的使用
  9. cpu风扇调速_乔思伯推出两款新风冷散热器:平价双热管和四热管风冷,带9cmRGB风扇...
  10. Steinberg Nuendo 12 WiN+MAC 高级音频后期制作软件