1.概述
框架: 是一个结构,框架提供了很多的类,由框架控制每个类调用的过程流程 SSM框架里,第一个S就是指SpringMVC,是一个框架. 是Spring框架的一个后续产品,遵循了MVC的设计模式,保证了程序间的松耦合. SpringMVC主要作用:1,接受请求(解析请求参数) 2,做出响应 MVC的设计模式: M是Model模型,用来封装数据 V是View视图,用来展示数据 C是Controller控制器,用来控制浏览器如何请求,做出数据响应 好处: 提高代码的复用性 , 松耦合
2.入门案例---插入表格中
2.1.一个启动类RunApp,用来启动服务器
//标记着这是springboot的启动类
@SpringBootApplication
public class RunApp {
public static void main(String[] args) {
SpringApplication.run(RunApp.class);//运行当前类
}
}
2.2.一个pojo类
public class Car{
private String name ;
private Integer Id ;
private String Type ;
private Double Price ;
}
2.3.一个控制类
//完成springmvc的角色,接受请求和给出响应
//是MVC设计模式里的C控制器,接受请求和给出响应
@RestController
//标记着这个类是Controller是一个控制器+接受请求
@RequestMapping("car")//规定了url怎么访问这个类
public class HelloController {
//测试: http://localhost:8080/car/get
@RequestMapping("get")//规定了url怎么访问这个方法
public String show(){
return "123";
}
// SpringMVC框架除了能返回字符串,整数以外,还能返回对象信息
//测试: http://localhost:8080/car/get2
@RequestMapping("get2")
public Car get(){
Car c = new Car();
//给客户端准备数据
c.setId(718);
c.setName("保时捷");
c.setType("Cayman T");
c.setColor("红色");
c.setPrice(641000);
return c; //把对象信息 变成JSON字符串在浏览器展示
}
@RequestMapping("get")//规定了浏览器的访问方式
public class GetController{
//测试 http://localhost:8080/get/param4?id=100&name=BMW&type=X6&color=red&price=9.9
@RequestMapping("param4")
//public String param4(int id,String name,String type,String color,double price){
public Car param4(Car c){//直接用对象接受参数,框架会自动封装属性的值
return c;
}
3..SpringMVC解析请求的参数
restful风格的数据:http://localhost:8080/car/insert/1/张三/18
3.1 分割获取属性
@Test //单元测试方法
public void get1(){
String url ="http://localhost:8080/car/insert?id=1&name=张三&age=18";
String[] a = url.split("\\?")[1].split("&");
for(String s : a){
String data = s.split("=")[1];
System.out.println(data);
}
}
3.2 spring获取属性(也可以对象)
//测试:localhost:8080/get/param3?id=100&name=张三&price=9.9
@RequestMapping("param3")
public String param3(int id,String name,double price){
return id+name+price;
}
//解析restful传递的参数:简化了get方式参数的写法
//http://localhost:8080/car/get2/100/张三
@RequestMapping("get2/{id}/{name}")
//{x}--通过{}获取访问路径中携带的参数,并且交给变量x保存
//@PathVariable -- 获取{}中间变量的值
• public String get2(@PathVariable Integer id,
• @PathVariable String name){
• return id+name;
• }
4 利用jdbc把接受到的参数入库
4.1 操作cgb2106的库, 创建tb_student表(参考Student类)
CREATE TABLE tb_student(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(50),
age INT,
sex INT,
hobby VARCHAR(100),
edu INT,
intime DATE
)
4.2 修改pom.xml文件,添加jdbc的jar包的坐标
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cgb2106boot03</artifactId>
<groupId>cn.tedu</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>day14</artifactId>
<dependencies>
<!--添加jdbc的jar包依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
</dependencies>
</project>
4.3 实现入库 JDBC
//是C层,控制层,用来接受请求和给出响应
@RestController
@RequestMapping("stu")
public class StudentController {
@RequestMapping("add")
public Object add(Student s) throws Exception {
//TODO 利用jdbc,实现入库
//注册驱动
Class.forName("com.mysql.jdbc.Driver");
//获取连接 (cgb2106库名)
String url="jdbc:mysql:///cgb2106?characterEncoding=utf8";
Connection conn = DriverManager.getConnection(url,"root","root");
//获取传输器
String sql = "insert into tb_student values(null,?,?,?,?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
//给SQL设置参数
ps.setObject(1,s.getName());
ps.setObject(2,s.getAge());
ps.setObject(3,s.getSex());
//s.getHobby()得到一个数组,不能直接存入数据库,需要变成串入库
ps.setObject(4, Arrays.toString( s.getHobby() ) ) ;
ps.setObject(5,s.getEdu());
ps.setObject(6,s.getIntime());
//执行SQL
ps.executeUpdate();//执行增删改的SQL
System.out.println("数据插入成功!");
return s;
}
}