SpringMVC基础---案例:web提交学生信息数据到数据库
案例: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提交学生信息数据到数据库相关推荐
- 24-在线考试系统数据库-班级学生信息数据操作(三)
24-在线考试系统数据库-班级学生信息数据操作(三) 项目描述 伴随着远程教育的蓬勃发展,作为教学当中不可分割的一部分的"在线考试系统"也得到了当今远程教育研究者的关注,考试是考察 ...
- 25-在线考试系统数据库-班级学生信息数据操作(四)
25-在线考试系统数据库-班级学生信息数据操作(四) 项目描述 伴随着远程教育的蓬勃发展,作为教学当中不可分割的一部分的"在线考试系统"也得到了当今远程教育研究者的关注,考试是考察 ...
- 22-在线考试系统数据库-班级学生信息数据操作(一)
22-在线考试系统数据库-班级学生信息数据操作(一) 文章目录 22-在线考试系统数据库-班级学生信息数据操作(一) 项目描述 在线考试系统数据库操作要求如下: (1)任务描述 项目描述 伴随着远程教 ...
- 23-在线考试系统数据库-班级学生信息数据操作(二)
23-在线考试系统数据库-班级学生信息数据操作(二) 项目描述 伴随着远程教育的蓬勃发展,作为教学当中不可分割的一部分的"在线考试系统"也得到了当今远程教育研究者的关注,考试是考察 ...
- 大数据24小时:孙彬出任乐视云新CEO,趣店数百万学生信息数据疑似泄露
十万元可买到数百万学生信息,趣店疑似发生数据泄露:乐视云新CEO上任,系公司原技术与服务副总裁孙彬:"海洋国家实验室"智能超算与大数据联合实验室正式启动--以下为您奉上更多大数据热 ...
- 学生信息管理系统java的总结,基于Java web的学生信息管理系统
源码编号:B-E00012 点击查看分类规则 项目类型:Java EE项目(java web项目) 项目名称:基于java web的学生信息管理系统(StudentManagerWeb) 当前版本: ...
- 实习之大量学生信息数据生成
实习之大量学生信息数据生成 该方法主要采用随机数生成 涉及到: 电话号码 姓名 身份证号 地区码及邮政编号 年龄 不多说,见代码: #include<iostream> #include& ...
- PHP 学生信息管理系统mysql数据库web结构apache计算机软件工程网页wamp
一.源码特点 PHP 学生信息管理系统 是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发. 代码下载 https://dow ...
- Java_学生信息管理系统-后台数据库设计
功能: 为学生信息管理系统后台数据库进行设计,结果如下图: 图1.数据库数据表 如图2.数据库数据表之间关系
最新文章
- dplyr 数据操作 常用函数(2)
- python的优点-python的功能与优缺点
- php 0行,php – 如果返回0行,MySQL返回结果
- 扎实的基础是成功的法宝
- mysql和oracle区别总结(二)
- Python列表:list
- 《如何建立自己的算法交易事业》读书笔记
- Go编译android,在Android中引用golang编译的aar包
- 【移入移出事件练习】【菜单】【选项卡】 -------this使用
- C# --CSkin的使用教程
- gp338信令_细说GP338GP328对讲机编程
- Flink之DataSet转换操作(二)
- jquery漏洞修复方案
- 华为交换机配置基础命令
- 进程创建的优化设计(上)
- WPS关闭不了后台一直运行的解决办法(wpscloudsvr.exe)
- 基于深度学习的医学图像分割(一)
- GitHub开源了一款程序员摸鱼神器!上班摸鱼还不会被老板发现。。。
- react点击后高亮显示
- 历史的1000+篇文章总结
热门文章
- Android:数据回传
- eclipse编程 创建项目 简易教程
- 第二章 关键技术介绍
- element ui tree增删改查_clientgo连接K8s集群进行pod的增删改查
- oracle查手机号码位数重复,连续相同号码的识别
- missing and no known rule to make it
- 【linux】循序渐进学运维-基础篇-Linux系统目录
- linux 下vi与vim区别以及vim的使用
- cpu风扇调速_乔思伯推出两款新风冷散热器:平价双热管和四热管风冷,带9cmRGB风扇...
- Steinberg Nuendo 12 WiN+MAC 高级音频后期制作软件