这个技术是做到了前后端分离的一个简单入门案例.
需求:前端在表单上输入一些指定的数据然后提交,后端接收提交的数据通过jdbc处理到MySQL数据库中
需求1在浏览器中提交学生的姓名,性别,学号,住址,学校
需求2jdbc解析数据发送到数据库中
环境: HBuilder X,IDEA,MySQL
一,在数据库中
1.创建表 但字段要和前端IDEA的位置要匹配
二,在IDEA中
1.创建一个Spring initializr,在pom.xml中添加mysql的jar包,和你的数据库版本要对应
2.创建以个学生类,用来封装学生的一些属性
package cn.tedu.demo;
public class Student {
//这里的属性位置要和前端上的属性位置相对应,要不然会400的
private String name;
private String sex;
private int id;
private String address;
private String School;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getSchool() {
return School;
}
public void setSchool(String school) {
School = school;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", sex='" + sex + '\'' +
", id=" + id +
", address='" + address + '\'' +
", School='" + School + '\'' +
'}';
}
}
2.创建一个Controller访问类
package cn.tedu.demo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController//访问方式
@RequestMapping("student")//访问类的方式
public class Hello {
@RequestMapping("save")//访问方法的方式
public Object save(Student s){//返回值类型是Object,参数类型是Student
System.out.println("保存成功"+s);//测试IDEA是否可以接收前端提交过的数据
return "保存成功";//成功给前端一个反馈,如果失败就直接报错方便修改错误
}
}
3.使用jdbc解析数据
try {
//传输SQL
c=getConnection();
String sql="insert into student values (?,?,?,?,?)";//SQL骨架 ?代表占位符
ps=c.prepareStatement(sql);
//通过对象获取属性值.到这里的数据要和前端数据库要一致,
//所有的数据属性位置都要保持一致,要不然会报类型不匹配异常.
ps.setObject(1,s.getName());
ps.setObject(2,s.getSex());
ps.setObject(3,s.getId());
ps.setObject(4,s.getAddress());
ps.setObject(5,s.getSchool());
//执行SQL
ps.executeUpdate();
System.out.println("插入成功");
} catch (SQLException throwables) {
System.out.println("插入失败");
throwables.printStackTrace();
}finally{
close(ps,c );
}
}
public Connection getConnection(){
Connection c=null ;
try {
//注册并登录
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/cgb00?characterEncoding=utf8&serverTimezone=Asia/Shanghai";// ? 是防止中文乱码
c= DriverManager.getConnection(url,"root","root");
} catch (Exception e) {
e.printStackTrace();
}
return c;
}
public void close(PreparedStatement ps,Connection c ){//释放资源
if(ps!=null){
try {
ps.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (c!=null){
try {
c.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
4.在HBuilder X中
这里就只展示比较关键的代码就一行
<form method="post" action="http://localhost:8080/student/save"></form>